@next-box/appsettings 0.0.0-stage → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -2
  3. package/bin/appsettings.mjs +7 -0
  4. package/dist/cjs/cli/command.cjs +2 -0
  5. package/dist/cjs/cli/command.cjs.map +1 -0
  6. package/dist/cjs/cli/handler.cjs +2 -0
  7. package/dist/cjs/cli/handler.cjs.map +1 -0
  8. package/dist/cjs/cli.cjs +2 -0
  9. package/dist/cjs/cli.cjs.map +1 -0
  10. package/dist/cjs/components/AppSettingsProvider.cjs +3 -0
  11. package/dist/cjs/components/AppSettingsProvider.cjs.map +1 -0
  12. package/dist/cjs/components/Setting.cjs +3 -0
  13. package/dist/cjs/components/Setting.cjs.map +1 -0
  14. package/dist/cjs/config/AppSettingsImplementation.cjs +2 -0
  15. package/dist/cjs/config/AppSettingsImplementation.cjs.map +1 -0
  16. package/dist/cjs/config/ConfigMerger.cjs +2 -0
  17. package/dist/cjs/config/ConfigMerger.cjs.map +1 -0
  18. package/dist/cjs/config/ConfigReader.cjs +2 -0
  19. package/dist/cjs/config/ConfigReader.cjs.map +1 -0
  20. package/dist/cjs/config/ConfigStore.cjs +2 -0
  21. package/dist/cjs/config/ConfigStore.cjs.map +1 -0
  22. package/dist/cjs/config/ConfigValidator.cjs +2 -0
  23. package/dist/cjs/config/ConfigValidator.cjs.map +1 -0
  24. package/dist/cjs/config/ScopedSettingsImplementation.cjs +2 -0
  25. package/dist/cjs/config/ScopedSettingsImplementation.cjs.map +1 -0
  26. package/dist/cjs/config/createAppSettings.cjs +2 -0
  27. package/dist/cjs/config/createAppSettings.cjs.map +1 -0
  28. package/dist/cjs/config/helpers/freezeDeep.cjs +2 -0
  29. package/dist/cjs/config/helpers/freezeDeep.cjs.map +1 -0
  30. package/dist/cjs/hooks/useAppSetting.cjs +2 -0
  31. package/dist/cjs/hooks/useAppSetting.cjs.map +1 -0
  32. package/dist/cjs/hooks/useAppSettings.cjs +2 -0
  33. package/dist/cjs/hooks/useAppSettings.cjs.map +1 -0
  34. package/dist/cjs/hooks/useAppSettingsContext.cjs +2 -0
  35. package/dist/cjs/hooks/useAppSettingsContext.cjs.map +1 -0
  36. package/dist/cjs/index.cjs +2 -0
  37. package/dist/cjs/index.cjs.map +1 -0
  38. package/dist/cjs/server.cjs +2 -0
  39. package/dist/cjs/server.cjs.map +1 -0
  40. package/dist/cjs/sources/AppSettingsSource.cjs +2 -0
  41. package/dist/cjs/sources/AppSettingsSource.cjs.map +1 -0
  42. package/dist/cjs/sources/EnvironmentSource.cjs +2 -0
  43. package/dist/cjs/sources/EnvironmentSource.cjs.map +1 -0
  44. package/dist/cjs/sources/MemorySource.cjs +2 -0
  45. package/dist/cjs/sources/MemorySource.cjs.map +1 -0
  46. package/dist/cjs/sources/RemoteSource.cjs +2 -0
  47. package/dist/cjs/sources/RemoteSource.cjs.map +1 -0
  48. package/dist/cjs/sources/helpers/loadJson.cjs +2 -0
  49. package/dist/cjs/sources/helpers/loadJson.cjs.map +1 -0
  50. package/dist/esm/cli/command.mjs +2 -0
  51. package/dist/esm/cli/command.mjs.map +1 -0
  52. package/dist/esm/cli/handler.mjs +2 -0
  53. package/dist/esm/cli/handler.mjs.map +1 -0
  54. package/dist/esm/cli.mjs +2 -0
  55. package/dist/esm/cli.mjs.map +1 -0
  56. package/dist/esm/components/AppSettingsProvider.mjs +3 -0
  57. package/dist/esm/components/AppSettingsProvider.mjs.map +1 -0
  58. package/dist/esm/components/Setting.mjs +3 -0
  59. package/dist/esm/components/Setting.mjs.map +1 -0
  60. package/dist/esm/config/AppSettingsImplementation.mjs +2 -0
  61. package/dist/esm/config/AppSettingsImplementation.mjs.map +1 -0
  62. package/dist/esm/config/ConfigMerger.mjs +2 -0
  63. package/dist/esm/config/ConfigMerger.mjs.map +1 -0
  64. package/dist/esm/config/ConfigReader.mjs +2 -0
  65. package/dist/esm/config/ConfigReader.mjs.map +1 -0
  66. package/dist/esm/config/ConfigStore.mjs +2 -0
  67. package/dist/esm/config/ConfigStore.mjs.map +1 -0
  68. package/dist/esm/config/ConfigValidator.mjs +2 -0
  69. package/dist/esm/config/ConfigValidator.mjs.map +1 -0
  70. package/dist/esm/config/ScopedSettingsImplementation.mjs +2 -0
  71. package/dist/esm/config/ScopedSettingsImplementation.mjs.map +1 -0
  72. package/dist/esm/config/createAppSettings.mjs +2 -0
  73. package/dist/esm/config/createAppSettings.mjs.map +1 -0
  74. package/dist/esm/config/helpers/freezeDeep.mjs +2 -0
  75. package/dist/esm/config/helpers/freezeDeep.mjs.map +1 -0
  76. package/dist/esm/hooks/useAppSetting.mjs +2 -0
  77. package/dist/esm/hooks/useAppSetting.mjs.map +1 -0
  78. package/dist/esm/hooks/useAppSettings.mjs +2 -0
  79. package/dist/esm/hooks/useAppSettings.mjs.map +1 -0
  80. package/dist/esm/hooks/useAppSettingsContext.mjs +2 -0
  81. package/dist/esm/hooks/useAppSettingsContext.mjs.map +1 -0
  82. package/dist/esm/index.mjs +2 -0
  83. package/dist/esm/index.mjs.map +1 -0
  84. package/dist/esm/server.mjs +2 -0
  85. package/dist/esm/server.mjs.map +1 -0
  86. package/dist/esm/sources/AppSettingsSource.mjs +2 -0
  87. package/dist/esm/sources/AppSettingsSource.mjs.map +1 -0
  88. package/dist/esm/sources/EnvironmentSource.mjs +2 -0
  89. package/dist/esm/sources/EnvironmentSource.mjs.map +1 -0
  90. package/dist/esm/sources/MemorySource.mjs +2 -0
  91. package/dist/esm/sources/MemorySource.mjs.map +1 -0
  92. package/dist/esm/sources/RemoteSource.mjs +2 -0
  93. package/dist/esm/sources/RemoteSource.mjs.map +1 -0
  94. package/dist/esm/sources/helpers/loadJson.mjs +2 -0
  95. package/dist/esm/sources/helpers/loadJson.mjs.map +1 -0
  96. package/dist/production.analysis.txt +89 -0
  97. package/dist/types/cjs/__testUtils__/components/ErrorBoundary.d.cts +14 -0
  98. package/dist/types/cjs/__testUtils__/components/ErrorBoundary.d.cts.map +1 -0
  99. package/dist/types/cjs/cli/command.d.cts +7 -0
  100. package/dist/types/cjs/cli/command.d.cts.map +1 -0
  101. package/dist/types/cjs/cli/handler.d.cts +7 -0
  102. package/dist/types/cjs/cli/handler.d.cts.map +1 -0
  103. package/dist/types/cjs/cli.d.cts +2 -0
  104. package/dist/types/cjs/cli.d.cts.map +1 -0
  105. package/dist/types/cjs/components/AppSettingsProvider.d.cts +7 -0
  106. package/dist/types/cjs/components/AppSettingsProvider.d.cts.map +1 -0
  107. package/dist/types/cjs/components/Setting.d.cts +20 -0
  108. package/dist/types/cjs/components/Setting.d.cts.map +1 -0
  109. package/dist/types/cjs/config/AppSettingsImplementation.d.cts +15 -0
  110. package/dist/types/cjs/config/AppSettingsImplementation.d.cts.map +1 -0
  111. package/dist/types/cjs/config/ConfigMerger.d.cts +4 -0
  112. package/dist/types/cjs/config/ConfigMerger.d.cts.map +1 -0
  113. package/dist/types/cjs/config/ConfigReader.d.cts +14 -0
  114. package/dist/types/cjs/config/ConfigReader.d.cts.map +1 -0
  115. package/dist/types/cjs/config/ConfigStore.d.cts +6 -0
  116. package/dist/types/cjs/config/ConfigStore.d.cts.map +1 -0
  117. package/dist/types/cjs/config/ConfigValidator.d.cts +7 -0
  118. package/dist/types/cjs/config/ConfigValidator.d.cts.map +1 -0
  119. package/dist/types/cjs/config/ScopedSettingsImplementation.d.cts +13 -0
  120. package/dist/types/cjs/config/ScopedSettingsImplementation.d.cts.map +1 -0
  121. package/dist/types/cjs/config/createAppSettings.d.cts +3 -0
  122. package/dist/types/cjs/config/createAppSettings.d.cts.map +1 -0
  123. package/dist/types/cjs/config/helpers/freezeDeep.d.cts +2 -0
  124. package/dist/types/cjs/config/helpers/freezeDeep.d.cts.map +1 -0
  125. package/dist/types/cjs/hooks/useAppSetting.d.cts +6 -0
  126. package/dist/types/cjs/hooks/useAppSetting.d.cts.map +1 -0
  127. package/dist/types/cjs/hooks/useAppSettings.d.cts +6 -0
  128. package/dist/types/cjs/hooks/useAppSettings.d.cts.map +1 -0
  129. package/dist/types/cjs/hooks/useAppSettingsContext.d.cts +5 -0
  130. package/dist/types/cjs/hooks/useAppSettingsContext.d.cts.map +1 -0
  131. package/dist/types/cjs/index.d.cts +10 -0
  132. package/dist/types/cjs/index.d.cts.map +1 -0
  133. package/dist/types/cjs/server.d.cts +8 -0
  134. package/dist/types/cjs/server.d.cts.map +1 -0
  135. package/dist/types/cjs/sources/AppSettingsSource.d.cts +14 -0
  136. package/dist/types/cjs/sources/AppSettingsSource.d.cts.map +1 -0
  137. package/dist/types/cjs/sources/EnvironmentSource.d.cts +16 -0
  138. package/dist/types/cjs/sources/EnvironmentSource.d.cts.map +1 -0
  139. package/dist/types/cjs/sources/MemorySource.d.cts +12 -0
  140. package/dist/types/cjs/sources/MemorySource.d.cts.map +1 -0
  141. package/dist/types/cjs/sources/RemoteSource.d.cts +16 -0
  142. package/dist/types/cjs/sources/RemoteSource.d.cts.map +1 -0
  143. package/dist/types/cjs/sources/helpers/loadJson.d.cts +3 -0
  144. package/dist/types/cjs/sources/helpers/loadJson.d.cts.map +1 -0
  145. package/dist/types/cjs/types/AppSettings.types.d.cts +26 -0
  146. package/dist/types/cjs/types/AppSettings.types.d.cts.map +1 -0
  147. package/dist/types/cjs/types/Config.types.d.cts +12 -0
  148. package/dist/types/cjs/types/Config.types.d.cts.map +1 -0
  149. package/dist/types/cjs/types/Source.types.d.cts +5 -0
  150. package/dist/types/cjs/types/Source.types.d.cts.map +1 -0
  151. package/dist/types/esm/__testUtils__/components/ErrorBoundary.d.ts +14 -0
  152. package/dist/types/esm/__testUtils__/components/ErrorBoundary.d.ts.map +1 -0
  153. package/dist/types/esm/cli/command.d.ts +7 -0
  154. package/dist/types/esm/cli/command.d.ts.map +1 -0
  155. package/dist/types/esm/cli/handler.d.ts +7 -0
  156. package/dist/types/esm/cli/handler.d.ts.map +1 -0
  157. package/dist/types/esm/cli.d.ts +2 -0
  158. package/dist/types/esm/cli.d.ts.map +1 -0
  159. package/dist/types/esm/components/AppSettingsProvider.d.ts +7 -0
  160. package/dist/types/esm/components/AppSettingsProvider.d.ts.map +1 -0
  161. package/dist/types/esm/components/Setting.d.ts +20 -0
  162. package/dist/types/esm/components/Setting.d.ts.map +1 -0
  163. package/dist/types/esm/config/AppSettingsImplementation.d.ts +15 -0
  164. package/dist/types/esm/config/AppSettingsImplementation.d.ts.map +1 -0
  165. package/dist/types/esm/config/ConfigMerger.d.ts +4 -0
  166. package/dist/types/esm/config/ConfigMerger.d.ts.map +1 -0
  167. package/dist/types/esm/config/ConfigReader.d.ts +14 -0
  168. package/dist/types/esm/config/ConfigReader.d.ts.map +1 -0
  169. package/dist/types/esm/config/ConfigStore.d.ts +6 -0
  170. package/dist/types/esm/config/ConfigStore.d.ts.map +1 -0
  171. package/dist/types/esm/config/ConfigValidator.d.ts +7 -0
  172. package/dist/types/esm/config/ConfigValidator.d.ts.map +1 -0
  173. package/dist/types/esm/config/ScopedSettingsImplementation.d.ts +13 -0
  174. package/dist/types/esm/config/ScopedSettingsImplementation.d.ts.map +1 -0
  175. package/dist/types/esm/config/createAppSettings.d.ts +3 -0
  176. package/dist/types/esm/config/createAppSettings.d.ts.map +1 -0
  177. package/dist/types/esm/config/helpers/freezeDeep.d.ts +2 -0
  178. package/dist/types/esm/config/helpers/freezeDeep.d.ts.map +1 -0
  179. package/dist/types/esm/hooks/useAppSetting.d.ts +6 -0
  180. package/dist/types/esm/hooks/useAppSetting.d.ts.map +1 -0
  181. package/dist/types/esm/hooks/useAppSettings.d.ts +6 -0
  182. package/dist/types/esm/hooks/useAppSettings.d.ts.map +1 -0
  183. package/dist/types/esm/hooks/useAppSettingsContext.d.ts +5 -0
  184. package/dist/types/esm/hooks/useAppSettingsContext.d.ts.map +1 -0
  185. package/dist/types/esm/index.d.ts +10 -0
  186. package/dist/types/esm/index.d.ts.map +1 -0
  187. package/dist/types/esm/server.d.ts +8 -0
  188. package/dist/types/esm/server.d.ts.map +1 -0
  189. package/dist/types/esm/sources/AppSettingsSource.d.ts +14 -0
  190. package/dist/types/esm/sources/AppSettingsSource.d.ts.map +1 -0
  191. package/dist/types/esm/sources/EnvironmentSource.d.ts +16 -0
  192. package/dist/types/esm/sources/EnvironmentSource.d.ts.map +1 -0
  193. package/dist/types/esm/sources/MemorySource.d.ts +12 -0
  194. package/dist/types/esm/sources/MemorySource.d.ts.map +1 -0
  195. package/dist/types/esm/sources/RemoteSource.d.ts +16 -0
  196. package/dist/types/esm/sources/RemoteSource.d.ts.map +1 -0
  197. package/dist/types/esm/sources/helpers/loadJson.d.ts +3 -0
  198. package/dist/types/esm/sources/helpers/loadJson.d.ts.map +1 -0
  199. package/dist/types/esm/types/AppSettings.types.d.ts +26 -0
  200. package/dist/types/esm/types/AppSettings.types.d.ts.map +1 -0
  201. package/dist/types/esm/types/Config.types.d.ts +12 -0
  202. package/dist/types/esm/types/Config.types.d.ts.map +1 -0
  203. package/dist/types/esm/types/Source.types.d.ts +5 -0
  204. package/dist/types/esm/types/Source.types.d.ts.map +1 -0
  205. package/dist/types/tsconfig.build.tsbuildinfo +1 -0
  206. package/package.json +85 -3
  207. package/rollup.config.mjs +17 -0
  208. package/src/__testUtils__/AppSettingsSchema.d.ts +9 -0
  209. package/src/__testUtils__/components/ErrorBoundary.tsx +25 -0
  210. package/src/cli/command.test.ts +36 -0
  211. package/src/cli/command.ts +33 -0
  212. package/src/cli/handler.test.ts +61 -0
  213. package/src/cli/handler.ts +58 -0
  214. package/src/cli.test.ts +45 -0
  215. package/src/cli.ts +13 -0
  216. package/src/components/AppSettingsProvider.test.tsx +25 -0
  217. package/src/components/AppSettingsProvider.tsx +18 -0
  218. package/src/components/Setting.test.tsx +59 -0
  219. package/src/components/Setting.tsx +43 -0
  220. package/src/config/AppSettingsImplementation.test.ts +65 -0
  221. package/src/config/AppSettingsImplementation.ts +61 -0
  222. package/src/config/ConfigMerger.test.ts +44 -0
  223. package/src/config/ConfigMerger.ts +9 -0
  224. package/src/config/ConfigReader.test.ts +56 -0
  225. package/src/config/ConfigReader.ts +45 -0
  226. package/src/config/ConfigStore.test.ts +32 -0
  227. package/src/config/ConfigStore.ts +12 -0
  228. package/src/config/ConfigValidator.test.ts +30 -0
  229. package/src/config/ConfigValidator.ts +13 -0
  230. package/src/config/ScopedSettingsImplementation.test.ts +31 -0
  231. package/src/config/ScopedSettingsImplementation.ts +36 -0
  232. package/src/config/createAppSettings.test.ts +84 -0
  233. package/src/config/createAppSettings.ts +18 -0
  234. package/src/config/helpers/freezeDeep.test.ts +41 -0
  235. package/src/config/helpers/freezeDeep.ts +15 -0
  236. package/src/hooks/useAppSetting.test.tsx +37 -0
  237. package/src/hooks/useAppSetting.ts +14 -0
  238. package/src/hooks/useAppSettings.test.tsx +37 -0
  239. package/src/hooks/useAppSettings.ts +17 -0
  240. package/src/hooks/useAppSettingsContext.test.tsx +45 -0
  241. package/src/hooks/useAppSettingsContext.ts +17 -0
  242. package/src/index.ts +11 -0
  243. package/src/server.ts +7 -0
  244. package/src/sources/AppSettingsSource.test.ts +61 -0
  245. package/src/sources/AppSettingsSource.ts +30 -0
  246. package/src/sources/EnvironmentSource.test.ts +45 -0
  247. package/src/sources/EnvironmentSource.ts +87 -0
  248. package/src/sources/MemorySource.test.ts +31 -0
  249. package/src/sources/MemorySource.ts +21 -0
  250. package/src/sources/RemoteSource.test.ts +80 -0
  251. package/src/sources/RemoteSource.ts +50 -0
  252. package/src/sources/helpers/loadJson.test.ts +74 -0
  253. package/src/sources/helpers/loadJson.ts +29 -0
  254. package/src/types/AppSettings.types.test.ts +61 -0
  255. package/src/types/AppSettings.types.ts +30 -0
  256. package/src/types/Config.types.test.ts +36 -0
  257. package/src/types/Config.types.ts +27 -0
  258. package/src/types/Source.types.ts +4 -0
  259. package/tsconfig.build.json +10 -0
  260. package/tsconfig.json +10 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteSource.d.cts","sourceRoot":"","sources":["../../../../src/sources/RemoteSource.cts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAS;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,OAAO,EAAE,mBAAmB;IAOzC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA0B/C"}
@@ -0,0 +1,3 @@
1
+ export declare function loadJson(path: string, isOptional: false): Promise<Record<string, unknown>>;
2
+ export declare function loadJson(path: string, isOptional: true): Promise<Record<string, unknown> | undefined>;
3
+ //# sourceMappingURL=loadJson.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadJson.d.cts","sourceRoot":"","sources":["../../../../../src/sources/helpers/loadJson.cts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type ZodType } from 'zod';
3
+ import { type SettingPath, type SettingSectionPath } from './Config.types.cts';
4
+ import { type SettingsSource } from './Source.types.cts';
5
+ export interface AppSettings<T extends object> {
6
+ get<P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
7
+ getAll(): Readonly<T>;
8
+ getOrThrow<P extends SettingPath<T>>(path: P): Get<T, P>;
9
+ getSection<P extends SettingSectionPath<T>>(path: P): Get<T, P> | undefined;
10
+ has(path: SettingPath<T> | SettingSectionPath<T>): boolean;
11
+ scope<P extends SettingSectionPath<T>>(path: P): ScopedSettings<Extract<Get<T, P>, object>>;
12
+ }
13
+ export interface InternalAppSettings<T extends object> extends AppSettings<T> {
14
+ read(path: string): unknown;
15
+ }
16
+ export interface ScopedSettings<T extends object = Record<string, unknown>> {
17
+ get<P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
18
+ getAll(): Readonly<T>;
19
+ getOrThrow<P extends SettingPath<T>>(path: P): Get<T, P>;
20
+ }
21
+ export interface CreateAppSettingsOptions<T extends object> {
22
+ defaults: Partial<T>;
23
+ schema: ZodType<T>;
24
+ sources?: readonly SettingsSource[];
25
+ }
26
+ //# sourceMappingURL=AppSettings.types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettings.types.d.cts","sourceRoot":"","sources":["../../../../src/types/AppSettings.types.cts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC3C,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9D,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,UAAU,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5E,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC3D,KAAK,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7F;AAGD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxE,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9D,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM;IACxD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC"}
@@ -0,0 +1,12 @@
1
+ import { type Get } from 'type-fest';
2
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined;
3
+ type PreviousDepth = [never, 0, 1, 2, 3, 4, 5];
4
+ export type SettingPath<T extends object, Depth extends number = 5> = Depth extends 0 ? never : {
5
+ [K in Extract<keyof T, string>]: T[K] extends Primitive | readonly Primitive[] ? K : T[K] extends object ? `${K}.${SettingPath<T[K], PreviousDepth[Depth]>}` : K;
6
+ }[Extract<keyof T, string>];
7
+ export type SettingSectionPath<T extends object, Depth extends number = 5> = Depth extends 0 ? never : {
8
+ [K in Extract<keyof T, string>]: T[K] extends Primitive | readonly Primitive[] ? never : T[K] extends object ? K | `${K}.${SettingSectionPath<T[K], PreviousDepth[Depth]>}` : never;
9
+ }[Extract<keyof T, string>];
10
+ export type SettingValue<T extends object, P extends SettingPath<T>> = Get<T, P>;
11
+ export {};
12
+ //# sourceMappingURL=Config.types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.types.d.cts","sourceRoot":"","sources":["../../../../src/types/Config.types.cts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhF,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GACjF,KAAK,GACL;KACG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,SAAS,EAAE,GAC1E,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GACjD,CAAC;CACR,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GACxF,KAAK,GACL;KACG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,SAAS,EAAE,GAC1E,KAAK,GACL,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,CAAC,GAAG,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAC5D,KAAK;CACZ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface SettingsSource {
2
+ load(): Promise<Record<string, unknown>>;
3
+ readonly name: string;
4
+ }
5
+ //# sourceMappingURL=Source.types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Source.types.d.cts","sourceRoot":"","sources":["../../../../src/types/Source.types.cts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,14 @@
1
+ import { Component, type ReactNode } from 'react';
2
+ export type ErrorBoundaryProps = {
3
+ children: ReactNode;
4
+ };
5
+ type ErrorBoundaryState = {
6
+ error: Error | undefined;
7
+ };
8
+ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
9
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
10
+ state: ErrorBoundaryState;
11
+ render(): ReactNode;
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../../../src/__testUtils__/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,qBAAa,aAAc,SAAQ,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;WACpE,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAIxD,KAAK,EAAE,kBAAkB,CAAwB;IAEjD,MAAM,IAAI,SAAS;CAOpC"}
@@ -0,0 +1,7 @@
1
+ import { type CommandBuilder } from 'yargs';
2
+ import { type GenerateTypesArguments } from '#cli/handler.ts';
3
+ export declare const builder: CommandBuilder<object, GenerateTypesArguments>;
4
+ export declare const command = "generate-types <schema> <output>";
5
+ export declare const describe = "Generate a declaration that types appsettings hooks from your schema.";
6
+ export { handler } from './handler.ts';
7
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAuB7D,CAAC;AAEP,eAAO,MAAM,OAAO,qCAAqC,CAAC;AAE1D,eAAO,MAAM,QAAQ,0EAA0E,CAAC;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface GenerateTypesArguments {
2
+ output: string;
3
+ schema: string;
4
+ type: string;
5
+ }
6
+ export declare const handler: ({ output, schema, type }: GenerateTypesArguments) => Promise<void>;
7
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/handler.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,OAAO,GAAU,0BAA0B,sBAAsB,KAAG,OAAO,CAAC,IAAI,CAgC5F,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const runAppsettingsCli: () => Promise<void>;
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAQtD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ReactElement, type ReactNode } from 'react';
2
+ export interface AppSettingsProviderProps<T extends object = object> {
3
+ children: ReactNode;
4
+ settings: Readonly<T>;
5
+ }
6
+ export declare const AppSettingsProvider: <T extends object>({ children, settings, }: AppSettingsProviderProps<T>) => ReactElement;
7
+ //# sourceMappingURL=AppSettingsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettingsProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AppSettingsProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAInE,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACjE,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,MAAM,EAAE,yBAGnD,wBAAwB,CAAC,CAAC,CAAC,KAAG,YAGhC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type Get } from 'type-fest';
3
+ import { type AppSettingsSchema } from '../index.ts';
4
+ import { type SettingPath } from '../types/Config.types.ts';
5
+ export interface SettingProps<T extends object, P extends SettingPath<T>> {
6
+ children: ReactNode;
7
+ fallback?: ReactNode;
8
+ negate?: boolean;
9
+ path: P;
10
+ value: Get<T, P> | undefined | readonly (Get<T, P> | undefined)[];
11
+ }
12
+ export declare function Setting<P extends SettingPath<AppSettingsSchema>>(props: {
13
+ children: ReactNode;
14
+ fallback?: ReactNode;
15
+ negate?: boolean;
16
+ path: P;
17
+ value: Get<AppSettingsSchema, P> | undefined | readonly (Get<AppSettingsSchema, P> | undefined)[];
18
+ }): ReactNode;
19
+ export declare function Setting<T extends object, P extends SettingPath<T>>(props: SettingProps<T, P>): ReactNode;
20
+ //# sourceMappingURL=Setting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Setting.d.ts","sourceRoot":"","sources":["../../../../src/components/Setting.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC;IACtE,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;CACnE;AAUD,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE;IACvE,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;CACnG,GAAG,SAAS,CAAC;AAEd,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type InternalAppSettings, type ScopedSettings } from '#types/AppSettings.types.ts';
3
+ import { type SettingPath, type SettingSectionPath } from '#types/Config.types.ts';
4
+ export declare class AppSettingsImplementation<T extends object> implements InternalAppSettings<T> {
5
+ private readonly store;
6
+ constructor(settings: T);
7
+ get<P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
8
+ read(path: string): unknown;
9
+ getAll(): Readonly<T>;
10
+ getOrThrow<P extends SettingPath<T>>(path: P): Get<T, P>;
11
+ getSection<P extends SettingSectionPath<T>>(path: P): Get<T, P> | undefined;
12
+ has(path: SettingPath<T> | SettingSectionPath<T>): boolean;
13
+ scope<P extends SettingSectionPath<T>>(path: P): ScopedSettings<Extract<Get<T, P>, object>>;
14
+ }
15
+ //# sourceMappingURL=AppSettingsImplementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettingsImplementation.d.ts","sourceRoot":"","sources":["../../../../src/config/AppSettingsImplementation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAInF,qBAAa,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;gBAE3B,QAAQ,EAAE,CAAC;IAIvB,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAK7D,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIrB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAWxD,UAAU,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAK3E,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO;IAK1D,KAAK,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;CAW5F"}
@@ -0,0 +1,4 @@
1
+ export declare class ConfigMerger {
2
+ merge<T extends object>(first: T, ...configs: readonly T[]): T;
3
+ }
4
+ //# sourceMappingURL=ConfigMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigMerger.d.ts","sourceRoot":"","sources":["../../../../src/config/ConfigMerger.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IACvB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC;CAK/D"}
@@ -0,0 +1,14 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type Path, type Scope, type ConfigReader as ZcbConfigReader } from 'zcb';
3
+ export declare class ConfigReader<T extends object> {
4
+ private reader;
5
+ private readonly config;
6
+ constructor(config: T);
7
+ private getAt;
8
+ get<P extends Path<T>>(path: P): Get<T, P>;
9
+ getSection<P extends Scope<T>>(path: P): Get<T, P>;
10
+ has(path: string): boolean;
11
+ read(path: string): unknown;
12
+ scope<P extends Scope<T>>(path: P): ZcbConfigReader<Get<T, P>>;
13
+ }
14
+ //# sourceMappingURL=ConfigReader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigReader.d.ts","sourceRoot":"","sources":["../../../../src/config/ConfigReader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,YAAY,IAAI,eAAe,EAAsB,MAAM,KAAK,CAAC;AAEtG,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM;IACxC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAI;gBAEf,MAAM,EAAE,CAAC;IAKrB,OAAO,CAAC,KAAK;IAUN,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAI1C,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAMlD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3B,KAAK,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAGtE"}
@@ -0,0 +1,6 @@
1
+ export declare class ConfigStore<T extends object> {
2
+ private snapshot;
3
+ getSnapshot: () => Readonly<T>;
4
+ constructor(initial: T);
5
+ }
6
+ //# sourceMappingURL=ConfigStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigStore.d.ts","sourceRoot":"","sources":["../../../../src/config/ConfigStore.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM;IACvC,OAAO,CAAC,QAAQ,CAAc;IAEvB,WAAW,QAAO,QAAQ,CAAC,CAAC,CAAC,CAAkB;gBAE1C,OAAO,EAAE,CAAC;CAGvB"}
@@ -0,0 +1,7 @@
1
+ import { type ZodType, type output } from 'zod';
2
+ export declare class ConfigValidator<T extends ZodType> {
3
+ private readonly schema;
4
+ constructor(schema: T);
5
+ validate(value: unknown): output<T>;
6
+ }
7
+ //# sourceMappingURL=ConfigValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigValidator.d.ts","sourceRoot":"","sources":["../../../../src/config/ConfigValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,KAAK,CAAC;AAEhD,qBAAa,eAAe,CAAC,CAAC,SAAS,OAAO;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAI;gBAEf,MAAM,EAAE,CAAC;IAIrB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;CAGpC"}
@@ -0,0 +1,13 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type ScopedSettings } from '#types/AppSettings.types.ts';
3
+ import { type SettingPath } from '#types/Config.types.ts';
4
+ export declare class ScopedSettingsImplementation<T extends object> implements ScopedSettings<T> {
5
+ private readonly reader;
6
+ private readonly section;
7
+ private readonly parentPath;
8
+ constructor(section: T, parentPath: string);
9
+ get<P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
10
+ getAll(): Readonly<T>;
11
+ getOrThrow<P extends SettingPath<T>>(path: P): Get<T, P>;
12
+ }
13
+ //# sourceMappingURL=ScopedSettingsImplementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScopedSettingsImplementation.d.ts","sourceRoot":"","sources":["../../../../src/config/ScopedSettingsImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBAAa,4BAA4B,CAAC,CAAC,SAAS,MAAM,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAI;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM;IAM1C,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS;IAK7D,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIrB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;CAUzD"}
@@ -0,0 +1,3 @@
1
+ import { type CreateAppSettingsOptions } from '#types/AppSettings.types.ts';
2
+ export declare const createAppSettings: <T extends object>({ defaults, schema, sources, }: CreateAppSettingsOptions<T>) => Promise<Readonly<T>>;
3
+ //# sourceMappingURL=createAppSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAppSettings.d.ts","sourceRoot":"","sources":["../../../../src/config/createAppSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAI5E,eAAO,MAAM,iBAAiB,GAAU,CAAC,SAAS,MAAM,EAAE,gCAIvD,wBAAwB,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CASnD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const freezeDeep: <T>(value: T) => T;
2
+ //# sourceMappingURL=freezeDeep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freezeDeep.d.ts","sourceRoot":"","sources":["../../../../../src/config/helpers/freezeDeep.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAYxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type AppSettingsSchema } from '../index.ts';
3
+ import { type SettingPath } from '../types/Config.types.ts';
4
+ export declare function useAppSetting<P extends SettingPath<AppSettingsSchema>>(path: P): Get<AppSettingsSchema, P> | undefined;
5
+ export declare function useAppSetting<T extends object, P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
6
+ //# sourceMappingURL=useAppSetting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppSetting.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAppSetting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;AACxH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type SettingSectionPath } from '#types/Config.types.ts';
3
+ import { type AppSettingsSchema } from '../index.ts';
4
+ export declare function useAppSettings<P extends SettingSectionPath<AppSettingsSchema>>(path: P): Get<AppSettingsSchema, P> | undefined;
5
+ export declare function useAppSettings<T extends object, P extends SettingSectionPath<T>>(path: P): Get<T, P> | undefined;
6
+ //# sourceMappingURL=useAppSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppSettings.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAppSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,wBAAgB,cAAc,CAAC,CAAC,SAAS,kBAAkB,CAAC,iBAAiB,CAAC,EAC5E,IAAI,EAAE,CAAC,GACN,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;AAEzC,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type InternalAppSettings } from '#types/AppSettings.types.ts';
2
+ import { type AppSettingsSchema } from '../index.ts';
3
+ export declare const AppSettingsContext: import("react").Context<unknown>;
4
+ export declare const useAppSettingsContext: <T extends object = AppSettingsSchema>() => InternalAppSettings<T>;
5
+ //# sourceMappingURL=useAppSettingsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppSettingsContext.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAppSettingsContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,eAAO,MAAM,kBAAkB,kCAAoC,CAAC;AAEpE,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,MAAM,GAAG,iBAAiB,OAAK,mBAAmB,CAAC,CAAC,CAUnG,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { AppSettingsProvider } from '#components/AppSettingsProvider.tsx';
2
+ export { Setting } from '#components/Setting.tsx';
3
+ export { useAppSetting } from '#hooks/useAppSetting.ts';
4
+ export { useAppSettings } from '#hooks/useAppSettings.ts';
5
+ export type { AppSettings, ScopedSettings } from '#types/AppSettings.types.ts';
6
+ export type { SettingPath, SettingSectionPath, SettingValue } from '#types/Config.types.ts';
7
+ export interface AppSettingsSchema {
8
+ readonly __appSettingsSchema?: never;
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG5F,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;CACtC"}
@@ -0,0 +1,8 @@
1
+ export { createAppSettings } from '#config/createAppSettings.ts';
2
+ export { AppSettingsSource, type AppSettingsSourceOptions } from '#sources/AppSettingsSource.ts';
3
+ export { EnvironmentSource, type EnvironmentSourceOptions } from '#sources/EnvironmentSource.ts';
4
+ export { RemoteSource, type RemoteSourceOptions } from '#sources/RemoteSource.ts';
5
+ export { MemorySource, type MemorySourceOptions } from '#sources/MemorySource.ts';
6
+ export { type CreateAppSettingsOptions } from '#types/AppSettings.types.ts';
7
+ export type { SettingsSource } from '#types/Source.types.ts';
8
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type SettingsSource } from '../types/Source.types.ts';
2
+ export interface AppSettingsSourceOptions {
3
+ directory?: string;
4
+ environment?: string;
5
+ name?: string;
6
+ }
7
+ export declare class AppSettingsSource implements SettingsSource {
8
+ private directory;
9
+ private environment;
10
+ name: string;
11
+ constructor(options: AppSettingsSourceOptions);
12
+ load(): Promise<Record<string, unknown>>;
13
+ }
14
+ //# sourceMappingURL=AppSettingsSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettingsSource.d.ts","sourceRoot":"","sources":["../../../../src/sources/AppSettingsSource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IACrB,IAAI,EAAE,MAAM,CAAC;gBAED,OAAO,EAAE,wBAAwB;IAM9C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAO/C"}
@@ -0,0 +1,16 @@
1
+ import { type SettingsSource } from '../types/Source.types.ts';
2
+ export interface EnvironmentSourceOptions {
3
+ envs: Record<string, string | undefined>;
4
+ name?: string;
5
+ prefix?: string;
6
+ }
7
+ export declare class EnvironmentSource implements SettingsSource {
8
+ private readonly envs;
9
+ private readonly prefix;
10
+ private normalizeSegment;
11
+ readonly name: string;
12
+ constructor(options: EnvironmentSourceOptions);
13
+ private parseEnvironmentValue;
14
+ load(): Promise<Record<string, unknown>>;
15
+ }
16
+ //# sourceMappingURL=EnvironmentSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentSource.d.ts","sourceRoot":"","sources":["../../../../src/sources/EnvironmentSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,gBAAgB,CAMV;IAEd,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,wBAAwB;IAMpD,OAAO,CAAC,qBAAqB;IAgB7B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAyCzC"}
@@ -0,0 +1,12 @@
1
+ import { type SettingsSource } from '../types/Source.types.ts';
2
+ export interface MemorySourceOptions {
3
+ name?: string;
4
+ values: Record<string, unknown>;
5
+ }
6
+ export declare class MemorySource implements SettingsSource {
7
+ private readonly values;
8
+ readonly name: string;
9
+ constructor(options: MemorySourceOptions);
10
+ load(): Promise<Record<string, unknown>>;
11
+ }
12
+ //# sourceMappingURL=MemorySource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySource.d.ts","sourceRoot":"","sources":["../../../../src/sources/MemorySource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,mBAAmB;IAK/C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAGzC"}
@@ -0,0 +1,16 @@
1
+ import { type SettingsSource } from '#types/Source.types.ts';
2
+ export interface RemoteSourceOptions {
3
+ fetch: typeof globalThis.fetch;
4
+ name?: string;
5
+ responsePath?: string;
6
+ url: string;
7
+ }
8
+ export declare class RemoteSource implements SettingsSource {
9
+ private fetch;
10
+ private responsePath?;
11
+ private url;
12
+ name: string;
13
+ constructor(options: RemoteSourceOptions);
14
+ load(): Promise<Record<string, unknown>>;
15
+ }
16
+ //# sourceMappingURL=RemoteSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteSource.d.ts","sourceRoot":"","sources":["../../../../src/sources/RemoteSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,YAAa,YAAW,cAAc;IACjD,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,GAAG,CAAS;IACb,IAAI,EAAE,MAAM,CAAC;gBAED,OAAO,EAAE,mBAAmB;IAOzC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CA0B/C"}
@@ -0,0 +1,3 @@
1
+ export declare function loadJson(path: string, isOptional: false): Promise<Record<string, unknown>>;
2
+ export declare function loadJson(path: string, isOptional: true): Promise<Record<string, unknown> | undefined>;
3
+ //# sourceMappingURL=loadJson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadJson.d.ts","sourceRoot":"","sources":["../../../../../src/sources/helpers/loadJson.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type Get } from 'type-fest';
2
+ import { type ZodType } from 'zod';
3
+ import { type SettingPath, type SettingSectionPath } from './Config.types.ts';
4
+ import { type SettingsSource } from './Source.types.ts';
5
+ export interface AppSettings<T extends object> {
6
+ get<P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
7
+ getAll(): Readonly<T>;
8
+ getOrThrow<P extends SettingPath<T>>(path: P): Get<T, P>;
9
+ getSection<P extends SettingSectionPath<T>>(path: P): Get<T, P> | undefined;
10
+ has(path: SettingPath<T> | SettingSectionPath<T>): boolean;
11
+ scope<P extends SettingSectionPath<T>>(path: P): ScopedSettings<Extract<Get<T, P>, object>>;
12
+ }
13
+ export interface InternalAppSettings<T extends object> extends AppSettings<T> {
14
+ read(path: string): unknown;
15
+ }
16
+ export interface ScopedSettings<T extends object = Record<string, unknown>> {
17
+ get<P extends SettingPath<T>>(path: P): Get<T, P> | undefined;
18
+ getAll(): Readonly<T>;
19
+ getOrThrow<P extends SettingPath<T>>(path: P): Get<T, P>;
20
+ }
21
+ export interface CreateAppSettingsOptions<T extends object> {
22
+ defaults: Partial<T>;
23
+ schema: ZodType<T>;
24
+ sources?: readonly SettingsSource[];
25
+ }
26
+ //# sourceMappingURL=AppSettings.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettings.types.d.ts","sourceRoot":"","sources":["../../../../src/types/AppSettings.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM;IAC3C,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9D,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,UAAU,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5E,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC3D,KAAK,CAAC,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7F;AAGD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxE,GAAG,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9D,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtB,UAAU,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM;IACxD,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC"}
@@ -0,0 +1,12 @@
1
+ import { type Get } from 'type-fest';
2
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined;
3
+ type PreviousDepth = [never, 0, 1, 2, 3, 4, 5];
4
+ export type SettingPath<T extends object, Depth extends number = 5> = Depth extends 0 ? never : {
5
+ [K in Extract<keyof T, string>]: T[K] extends Primitive | readonly Primitive[] ? K : T[K] extends object ? `${K}.${SettingPath<T[K], PreviousDepth[Depth]>}` : K;
6
+ }[Extract<keyof T, string>];
7
+ export type SettingSectionPath<T extends object, Depth extends number = 5> = Depth extends 0 ? never : {
8
+ [K in Extract<keyof T, string>]: T[K] extends Primitive | readonly Primitive[] ? never : T[K] extends object ? K | `${K}.${SettingSectionPath<T[K], PreviousDepth[Depth]>}` : never;
9
+ }[Extract<keyof T, string>];
10
+ export type SettingValue<T extends object, P extends SettingPath<T>> = Get<T, P>;
11
+ export {};
12
+ //# sourceMappingURL=Config.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.types.d.ts","sourceRoot":"","sources":["../../../../src/types/Config.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAErC,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEhF,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GACjF,KAAK,GACL;KACG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,SAAS,EAAE,GAC1E,CAAC,GACD,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GACjD,CAAC;CACR,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,SAAS,MAAM,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,GACxF,KAAK,GACL;KACG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,SAAS,EAAE,GAC1E,KAAK,GACL,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACjB,CAAC,GAAG,GAAG,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAC5D,KAAK;CACZ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export interface SettingsSource {
2
+ load(): Promise<Record<string, unknown>>;
3
+ readonly name: string;
4
+ }
5
+ //# sourceMappingURL=Source.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Source.types.d.ts","sourceRoot":"","sources":["../../../../src/types/Source.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}