@vibesdotdev/config 0.0.1

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 (620) hide show
  1. package/README.md +85 -0
  2. package/SPEC.md +71 -0
  3. package/dist/adapters/cli/flags.d.ts +75 -0
  4. package/dist/adapters/cli/flags.d.ts.map +1 -0
  5. package/dist/adapters/cli/flags.js +221 -0
  6. package/dist/adapters/cli/flags.js.map +1 -0
  7. package/dist/adapters/cli/index.d.ts +12 -0
  8. package/dist/adapters/cli/index.d.ts.map +1 -0
  9. package/dist/adapters/cli/index.js +9 -0
  10. package/dist/adapters/cli/index.js.map +1 -0
  11. package/dist/adapters/cli/mappings.d.ts +17 -0
  12. package/dist/adapters/cli/mappings.d.ts.map +1 -0
  13. package/dist/adapters/cli/mappings.js +32 -0
  14. package/dist/adapters/cli/mappings.js.map +1 -0
  15. package/dist/adapters/cli/prompts.d.ts +28 -0
  16. package/dist/adapters/cli/prompts.d.ts.map +1 -0
  17. package/dist/adapters/cli/prompts.js +55 -0
  18. package/dist/adapters/cli/prompts.js.map +1 -0
  19. package/dist/adapters/cli/schemas/flags.schema.d.ts +8 -0
  20. package/dist/adapters/cli/schemas/flags.schema.d.ts.map +1 -0
  21. package/dist/adapters/cli/schemas/flags.schema.js +2 -0
  22. package/dist/adapters/cli/schemas/flags.schema.js.map +1 -0
  23. package/dist/adapters/cli/schemas/mappings.schema.d.ts +2 -0
  24. package/dist/adapters/cli/schemas/mappings.schema.d.ts.map +1 -0
  25. package/dist/adapters/cli/schemas/mappings.schema.js +2 -0
  26. package/dist/adapters/cli/schemas/mappings.schema.js.map +1 -0
  27. package/dist/adapters/cli/schemas/prompts.schema.d.ts +5 -0
  28. package/dist/adapters/cli/schemas/prompts.schema.d.ts.map +1 -0
  29. package/dist/adapters/cli/schemas/prompts.schema.js +2 -0
  30. package/dist/adapters/cli/schemas/prompts.schema.js.map +1 -0
  31. package/dist/adapters/cli/schemas/wizard.schema.d.ts +19 -0
  32. package/dist/adapters/cli/schemas/wizard.schema.d.ts.map +1 -0
  33. package/dist/adapters/cli/schemas/wizard.schema.js +2 -0
  34. package/dist/adapters/cli/schemas/wizard.schema.js.map +1 -0
  35. package/dist/adapters/cli/wizard.d.ts +33 -0
  36. package/dist/adapters/cli/wizard.d.ts.map +1 -0
  37. package/dist/adapters/cli/wizard.js +77 -0
  38. package/dist/adapters/cli/wizard.js.map +1 -0
  39. package/dist/browser/index.d.ts +7 -0
  40. package/dist/browser/index.d.ts.map +1 -0
  41. package/dist/browser/index.js +4 -0
  42. package/dist/browser/index.js.map +1 -0
  43. package/dist/cli/settings.descriptor.d.ts +9 -0
  44. package/dist/cli/settings.descriptor.d.ts.map +1 -0
  45. package/dist/cli/settings.descriptor.js +18 -0
  46. package/dist/cli/settings.descriptor.js.map +1 -0
  47. package/dist/cli/types.d.ts +57 -0
  48. package/dist/cli/types.d.ts.map +1 -0
  49. package/dist/cli/types.js +9 -0
  50. package/dist/cli/types.js.map +1 -0
  51. package/dist/client/index.d.ts +19 -0
  52. package/dist/client/index.d.ts.map +1 -0
  53. package/dist/client/index.js +145 -0
  54. package/dist/client/index.js.map +1 -0
  55. package/dist/client/storage.d.ts +48 -0
  56. package/dist/client/storage.d.ts.map +1 -0
  57. package/dist/client/storage.js +46 -0
  58. package/dist/client/storage.js.map +1 -0
  59. package/dist/collection/collection.d.ts +46 -0
  60. package/dist/collection/collection.d.ts.map +1 -0
  61. package/dist/collection/collection.js +93 -0
  62. package/dist/collection/collection.js.map +1 -0
  63. package/dist/collection/index.d.ts +6 -0
  64. package/dist/collection/index.d.ts.map +1 -0
  65. package/dist/collection/index.js +5 -0
  66. package/dist/collection/index.js.map +1 -0
  67. package/dist/common/index.d.ts +7 -0
  68. package/dist/common/index.d.ts.map +1 -0
  69. package/dist/common/index.js +4 -0
  70. package/dist/common/index.js.map +1 -0
  71. package/dist/config.context.descriptor.d.ts +21 -0
  72. package/dist/config.context.descriptor.d.ts.map +1 -0
  73. package/dist/config.context.descriptor.js +11 -0
  74. package/dist/config.context.descriptor.js.map +1 -0
  75. package/dist/config.plugin.d.ts +15 -0
  76. package/dist/config.plugin.d.ts.map +1 -0
  77. package/dist/config.plugin.js +166 -0
  78. package/dist/config.plugin.js.map +1 -0
  79. package/dist/crud/base-types.d.ts +10 -0
  80. package/dist/crud/base-types.d.ts.map +1 -0
  81. package/dist/crud/base-types.js +10 -0
  82. package/dist/crud/base-types.js.map +1 -0
  83. package/dist/crud/index.d.ts +4 -0
  84. package/dist/crud/index.d.ts.map +1 -0
  85. package/dist/crud/index.js +2 -0
  86. package/dist/crud/index.js.map +1 -0
  87. package/dist/crud/schemas/base-types.schema.d.ts +19 -0
  88. package/dist/crud/schemas/base-types.schema.d.ts.map +1 -0
  89. package/dist/crud/schemas/base-types.schema.js +2 -0
  90. package/dist/crud/schemas/base-types.schema.js.map +1 -0
  91. package/dist/crud/schemas/shared.schema.d.ts +13 -0
  92. package/dist/crud/schemas/shared.schema.d.ts.map +1 -0
  93. package/dist/crud/schemas/shared.schema.js +2 -0
  94. package/dist/crud/schemas/shared.schema.js.map +1 -0
  95. package/dist/crud/shared.d.ts +8 -0
  96. package/dist/crud/shared.d.ts.map +1 -0
  97. package/dist/crud/shared.js +8 -0
  98. package/dist/crud/shared.js.map +1 -0
  99. package/dist/crud/types.d.ts +250 -0
  100. package/dist/crud/types.d.ts.map +1 -0
  101. package/dist/crud/types.js +22 -0
  102. package/dist/crud/types.js.map +1 -0
  103. package/dist/docs/environment.docs.descriptor.d.ts +4 -0
  104. package/dist/docs/environment.docs.descriptor.d.ts.map +1 -0
  105. package/dist/docs/environment.docs.descriptor.js +383 -0
  106. package/dist/docs/environment.docs.descriptor.js.map +1 -0
  107. package/dist/docs/manifests.docs.descriptor.d.ts +4 -0
  108. package/dist/docs/manifests.docs.descriptor.d.ts.map +1 -0
  109. package/dist/docs/manifests.docs.descriptor.js +503 -0
  110. package/dist/docs/manifests.docs.descriptor.js.map +1 -0
  111. package/dist/docs/validation.docs.descriptor.d.ts +4 -0
  112. package/dist/docs/validation.docs.descriptor.d.ts.map +1 -0
  113. package/dist/docs/validation.docs.descriptor.js +441 -0
  114. package/dist/docs/validation.docs.descriptor.js.map +1 -0
  115. package/dist/doctor.d.ts +42 -0
  116. package/dist/doctor.d.ts.map +1 -0
  117. package/dist/doctor.js +119 -0
  118. package/dist/doctor.js.map +1 -0
  119. package/dist/env.d.ts +28 -0
  120. package/dist/env.d.ts.map +1 -0
  121. package/dist/env.js +75 -0
  122. package/dist/env.js.map +1 -0
  123. package/dist/env.runtime.d.ts +19 -0
  124. package/dist/env.runtime.d.ts.map +1 -0
  125. package/dist/env.runtime.js +37 -0
  126. package/dist/env.runtime.js.map +1 -0
  127. package/dist/environment/current.d.ts +32 -0
  128. package/dist/environment/current.d.ts.map +1 -0
  129. package/dist/environment/current.js +91 -0
  130. package/dist/environment/current.js.map +1 -0
  131. package/dist/environment/environment.config.descriptor.d.ts +11 -0
  132. package/dist/environment/environment.config.descriptor.d.ts.map +1 -0
  133. package/dist/environment/environment.config.descriptor.js +51 -0
  134. package/dist/environment/environment.config.descriptor.js.map +1 -0
  135. package/dist/environment/environment.config.schema.d.ts +47 -0
  136. package/dist/environment/environment.config.schema.d.ts.map +1 -0
  137. package/dist/environment/environment.config.schema.js +19 -0
  138. package/dist/environment/environment.config.schema.js.map +1 -0
  139. package/dist/environment/environment.local.descriptor.d.ts +11 -0
  140. package/dist/environment/environment.local.descriptor.d.ts.map +1 -0
  141. package/dist/environment/environment.local.descriptor.js +42 -0
  142. package/dist/environment/environment.local.descriptor.js.map +1 -0
  143. package/dist/environment/environment.plugin.d.ts +9 -0
  144. package/dist/environment/environment.plugin.d.ts.map +1 -0
  145. package/dist/environment/environment.plugin.js +27 -0
  146. package/dist/environment/environment.plugin.js.map +1 -0
  147. package/dist/environment/environment.production.descriptor.d.ts +10 -0
  148. package/dist/environment/environment.production.descriptor.d.ts.map +1 -0
  149. package/dist/environment/environment.production.descriptor.js +37 -0
  150. package/dist/environment/environment.production.descriptor.js.map +1 -0
  151. package/dist/environment/environment.staging.descriptor.d.ts +11 -0
  152. package/dist/environment/environment.staging.descriptor.d.ts.map +1 -0
  153. package/dist/environment/environment.staging.descriptor.js +22 -0
  154. package/dist/environment/environment.staging.descriptor.js.map +1 -0
  155. package/dist/environment/index.d.ts +8 -0
  156. package/dist/environment/index.d.ts.map +1 -0
  157. package/dist/environment/index.js +9 -0
  158. package/dist/environment/index.js.map +1 -0
  159. package/dist/environment/kinds/environment.default.d.ts +23 -0
  160. package/dist/environment/kinds/environment.default.d.ts.map +1 -0
  161. package/dist/environment/kinds/environment.default.js +49 -0
  162. package/dist/environment/kinds/environment.default.js.map +1 -0
  163. package/dist/environment/kinds/environment.interface.d.ts +7 -0
  164. package/dist/environment/kinds/environment.interface.d.ts.map +1 -0
  165. package/dist/environment/kinds/environment.interface.js +7 -0
  166. package/dist/environment/kinds/environment.interface.js.map +1 -0
  167. package/dist/environment/kinds/environment.kind.d.ts +10 -0
  168. package/dist/environment/kinds/environment.kind.d.ts.map +1 -0
  169. package/dist/environment/kinds/environment.kind.js +57 -0
  170. package/dist/environment/kinds/environment.kind.js.map +1 -0
  171. package/dist/environment/kinds/environment.schema.d.ts +34 -0
  172. package/dist/environment/kinds/environment.schema.d.ts.map +1 -0
  173. package/dist/environment/kinds/environment.schema.js +46 -0
  174. package/dist/environment/kinds/environment.schema.js.map +1 -0
  175. package/dist/environment/kinds/index.d.ts +8 -0
  176. package/dist/environment/kinds/index.d.ts.map +1 -0
  177. package/dist/environment/kinds/index.js +7 -0
  178. package/dist/environment/kinds/index.js.map +1 -0
  179. package/dist/environment/kinds/schemas/environment.interface.schema.d.ts +11 -0
  180. package/dist/environment/kinds/schemas/environment.interface.schema.d.ts.map +1 -0
  181. package/dist/environment/kinds/schemas/environment.interface.schema.js +2 -0
  182. package/dist/environment/kinds/schemas/environment.interface.schema.js.map +1 -0
  183. package/dist/environment/kinds/schemas/environment.schema.d.ts +30 -0
  184. package/dist/environment/kinds/schemas/environment.schema.d.ts.map +1 -0
  185. package/dist/environment/kinds/schemas/environment.schema.js +2 -0
  186. package/dist/environment/kinds/schemas/environment.schema.js.map +1 -0
  187. package/dist/environment/schemas/current.schema.d.ts +20 -0
  188. package/dist/environment/schemas/current.schema.d.ts.map +1 -0
  189. package/dist/environment/schemas/current.schema.js +2 -0
  190. package/dist/environment/schemas/current.schema.js.map +1 -0
  191. package/dist/environment/schemas/environment.config.schema.d.ts +4 -0
  192. package/dist/environment/schemas/environment.config.schema.d.ts.map +1 -0
  193. package/dist/environment/schemas/environment.config.schema.js +2 -0
  194. package/dist/environment/schemas/environment.config.schema.js.map +1 -0
  195. package/dist/extensions/index.d.ts +8 -0
  196. package/dist/extensions/index.d.ts.map +1 -0
  197. package/dist/extensions/index.js +8 -0
  198. package/dist/extensions/index.js.map +1 -0
  199. package/dist/extensions/registry.d.ts +41 -0
  200. package/dist/extensions/registry.d.ts.map +1 -0
  201. package/dist/extensions/registry.js +142 -0
  202. package/dist/extensions/registry.js.map +1 -0
  203. package/dist/extensions/types.d.ts +101 -0
  204. package/dist/extensions/types.d.ts.map +1 -0
  205. package/dist/extensions/types.js +8 -0
  206. package/dist/extensions/types.js.map +1 -0
  207. package/dist/form/core/field-resolver.d.ts +42 -0
  208. package/dist/form/core/field-resolver.d.ts.map +1 -0
  209. package/dist/form/core/field-resolver.js +293 -0
  210. package/dist/form/core/field-resolver.js.map +1 -0
  211. package/dist/form/core/groups.d.ts +20 -0
  212. package/dist/form/core/groups.d.ts.map +1 -0
  213. package/dist/form/core/groups.js +69 -0
  214. package/dist/form/core/groups.js.map +1 -0
  215. package/dist/form/core/index.d.ts +8 -0
  216. package/dist/form/core/index.d.ts.map +1 -0
  217. package/dist/form/core/index.js +6 -0
  218. package/dist/form/core/index.js.map +1 -0
  219. package/dist/form/core/nested-utils.d.ts +40 -0
  220. package/dist/form/core/nested-utils.d.ts.map +1 -0
  221. package/dist/form/core/nested-utils.js +98 -0
  222. package/dist/form/core/nested-utils.js.map +1 -0
  223. package/dist/form/core/schemas/validation.schema.d.ts +9 -0
  224. package/dist/form/core/schemas/validation.schema.d.ts.map +1 -0
  225. package/dist/form/core/schemas/validation.schema.js +2 -0
  226. package/dist/form/core/schemas/validation.schema.js.map +1 -0
  227. package/dist/form/core/types.d.ts +103 -0
  228. package/dist/form/core/types.d.ts.map +1 -0
  229. package/dist/form/core/types.js +2 -0
  230. package/dist/form/core/types.js.map +1 -0
  231. package/dist/form/core/validation.d.ts +23 -0
  232. package/dist/form/core/validation.d.ts.map +1 -0
  233. package/dist/form/core/validation.js +103 -0
  234. package/dist/form/core/validation.js.map +1 -0
  235. package/dist/form/core/visibility.d.ts +37 -0
  236. package/dist/form/core/visibility.d.ts.map +1 -0
  237. package/dist/form/core/visibility.js +128 -0
  238. package/dist/form/core/visibility.js.map +1 -0
  239. package/dist/form/index.d.ts +8 -0
  240. package/dist/form/index.d.ts.map +1 -0
  241. package/dist/form/index.js +2 -0
  242. package/dist/form/index.js.map +1 -0
  243. package/dist/index.d.ts +18 -0
  244. package/dist/index.d.ts.map +1 -0
  245. package/dist/index.js +18 -0
  246. package/dist/index.js.map +1 -0
  247. package/dist/loader/cli/index.d.ts +61 -0
  248. package/dist/loader/cli/index.d.ts.map +1 -0
  249. package/dist/loader/cli/index.js +263 -0
  250. package/dist/loader/cli/index.js.map +1 -0
  251. package/dist/loader/cli/loaders.d.ts +13 -0
  252. package/dist/loader/cli/loaders.d.ts.map +1 -0
  253. package/dist/loader/cli/loaders.js +132 -0
  254. package/dist/loader/cli/loaders.js.map +1 -0
  255. package/dist/loader/cli/types.d.ts +152 -0
  256. package/dist/loader/cli/types.d.ts.map +1 -0
  257. package/dist/loader/cli/types.js +5 -0
  258. package/dist/loader/cli/types.js.map +1 -0
  259. package/dist/loader/cli/utils.d.ts +53 -0
  260. package/dist/loader/cli/utils.d.ts.map +1 -0
  261. package/dist/loader/cli/utils.js +198 -0
  262. package/dist/loader/cli/utils.js.map +1 -0
  263. package/dist/loader/client.d.ts +18 -0
  264. package/dist/loader/client.d.ts.map +1 -0
  265. package/dist/loader/client.js +109 -0
  266. package/dist/loader/client.js.map +1 -0
  267. package/dist/loader/discovery.d.ts +48 -0
  268. package/dist/loader/discovery.d.ts.map +1 -0
  269. package/dist/loader/discovery.js +253 -0
  270. package/dist/loader/discovery.js.map +1 -0
  271. package/dist/loader/file-loader.d.ts +17 -0
  272. package/dist/loader/file-loader.d.ts.map +1 -0
  273. package/dist/loader/file-loader.js +237 -0
  274. package/dist/loader/file-loader.js.map +1 -0
  275. package/dist/loader/index.d.ts +9 -0
  276. package/dist/loader/index.d.ts.map +1 -0
  277. package/dist/loader/index.js +8 -0
  278. package/dist/loader/index.js.map +1 -0
  279. package/dist/loader/index.server.d.ts +66 -0
  280. package/dist/loader/index.server.d.ts.map +1 -0
  281. package/dist/loader/index.server.js +256 -0
  282. package/dist/loader/index.server.js.map +1 -0
  283. package/dist/loader/merge.d.ts +88 -0
  284. package/dist/loader/merge.d.ts.map +1 -0
  285. package/dist/loader/merge.js +301 -0
  286. package/dist/loader/merge.js.map +1 -0
  287. package/dist/loader/schemas/merge.schema.d.ts +8 -0
  288. package/dist/loader/schemas/merge.schema.d.ts.map +1 -0
  289. package/dist/loader/schemas/merge.schema.js +2 -0
  290. package/dist/loader/schemas/merge.schema.js.map +1 -0
  291. package/dist/loader/schemas/validation.schema.d.ts +17 -0
  292. package/dist/loader/schemas/validation.schema.d.ts.map +1 -0
  293. package/dist/loader/schemas/validation.schema.js +2 -0
  294. package/dist/loader/schemas/validation.schema.js.map +1 -0
  295. package/dist/loader/server.d.ts +3 -0
  296. package/dist/loader/server.d.ts.map +1 -0
  297. package/dist/loader/server.js +2 -0
  298. package/dist/loader/server.js.map +1 -0
  299. package/dist/loader/types.d.ts +136 -0
  300. package/dist/loader/types.d.ts.map +1 -0
  301. package/dist/loader/types.js +24 -0
  302. package/dist/loader/types.js.map +1 -0
  303. package/dist/loader/validation.d.ts +59 -0
  304. package/dist/loader/validation.d.ts.map +1 -0
  305. package/dist/loader/validation.js +218 -0
  306. package/dist/loader/validation.js.map +1 -0
  307. package/dist/manifest/builder.d.ts +172 -0
  308. package/dist/manifest/builder.d.ts.map +1 -0
  309. package/dist/manifest/builder.js +336 -0
  310. package/dist/manifest/builder.js.map +1 -0
  311. package/dist/manifest/config-manifest.d.ts +199 -0
  312. package/dist/manifest/config-manifest.d.ts.map +1 -0
  313. package/dist/manifest/config-manifest.js +388 -0
  314. package/dist/manifest/config-manifest.js.map +1 -0
  315. package/dist/manifest/index.d.ts +10 -0
  316. package/dist/manifest/index.d.ts.map +1 -0
  317. package/dist/manifest/index.js +20 -0
  318. package/dist/manifest/index.js.map +1 -0
  319. package/dist/manifest/schema.d.ts +460 -0
  320. package/dist/manifest/schema.d.ts.map +1 -0
  321. package/dist/manifest/schema.js +187 -0
  322. package/dist/manifest/schema.js.map +1 -0
  323. package/dist/manifest/schemas/builder.schema.d.ts +20 -0
  324. package/dist/manifest/schemas/builder.schema.d.ts.map +1 -0
  325. package/dist/manifest/schemas/builder.schema.js +2 -0
  326. package/dist/manifest/schemas/builder.schema.js.map +1 -0
  327. package/dist/manifest/schemas/config-manifest.schema.d.ts +2 -0
  328. package/dist/manifest/schemas/config-manifest.schema.d.ts.map +1 -0
  329. package/dist/manifest/schemas/config-manifest.schema.js +2 -0
  330. package/dist/manifest/schemas/config-manifest.schema.js.map +1 -0
  331. package/dist/manifest/schemas/schema.schema.d.ts +83 -0
  332. package/dist/manifest/schemas/schema.schema.d.ts.map +1 -0
  333. package/dist/manifest/schemas/schema.schema.js +2 -0
  334. package/dist/manifest/schemas/schema.schema.js.map +1 -0
  335. package/dist/manifest/types.d.ts +563 -0
  336. package/dist/manifest/types.d.ts.map +1 -0
  337. package/dist/manifest/types.js +9 -0
  338. package/dist/manifest/types.js.map +1 -0
  339. package/dist/routing/index.d.ts +29 -0
  340. package/dist/routing/index.d.ts.map +1 -0
  341. package/dist/routing/index.js +35 -0
  342. package/dist/routing/index.js.map +1 -0
  343. package/dist/routing/merge.d.ts +164 -0
  344. package/dist/routing/merge.d.ts.map +1 -0
  345. package/dist/routing/merge.js +460 -0
  346. package/dist/routing/merge.js.map +1 -0
  347. package/dist/routing/registry.d.ts +145 -0
  348. package/dist/routing/registry.d.ts.map +1 -0
  349. package/dist/routing/registry.js +459 -0
  350. package/dist/routing/registry.js.map +1 -0
  351. package/dist/routing/schemas/merge.schema.d.ts +5 -0
  352. package/dist/routing/schemas/merge.schema.d.ts.map +1 -0
  353. package/dist/routing/schemas/merge.schema.js +2 -0
  354. package/dist/routing/schemas/merge.schema.js.map +1 -0
  355. package/dist/routing/types.d.ts +358 -0
  356. package/dist/routing/types.d.ts.map +1 -0
  357. package/dist/routing/types.js +89 -0
  358. package/dist/routing/types.js.map +1 -0
  359. package/dist/schema/extend-zod.d.ts +137 -0
  360. package/dist/schema/extend-zod.d.ts.map +1 -0
  361. package/dist/schema/extend-zod.js +243 -0
  362. package/dist/schema/extend-zod.js.map +1 -0
  363. package/dist/schema/index.d.ts +9 -0
  364. package/dist/schema/index.d.ts.map +1 -0
  365. package/dist/schema/index.js +10 -0
  366. package/dist/schema/index.js.map +1 -0
  367. package/dist/schema/references.d.ts +9 -0
  368. package/dist/schema/references.d.ts.map +1 -0
  369. package/dist/schema/references.js +9 -0
  370. package/dist/schema/references.js.map +1 -0
  371. package/dist/schema/resolver.d.ts +45 -0
  372. package/dist/schema/resolver.d.ts.map +1 -0
  373. package/dist/schema/resolver.js +267 -0
  374. package/dist/schema/resolver.js.map +1 -0
  375. package/dist/schema/schemas/extend-zod.schema.d.ts +16 -0
  376. package/dist/schema/schemas/extend-zod.schema.d.ts.map +1 -0
  377. package/dist/schema/schemas/extend-zod.schema.js +2 -0
  378. package/dist/schema/schemas/extend-zod.schema.js.map +1 -0
  379. package/dist/schema/schemas/references.schema.d.ts +70 -0
  380. package/dist/schema/schemas/references.schema.d.ts.map +1 -0
  381. package/dist/schema/schemas/references.schema.js +2 -0
  382. package/dist/schema/schemas/references.schema.js.map +1 -0
  383. package/dist/schemas/collection.d.ts +31 -0
  384. package/dist/schemas/collection.d.ts.map +1 -0
  385. package/dist/schemas/collection.js +22 -0
  386. package/dist/schemas/collection.js.map +1 -0
  387. package/dist/schemas/config-manifest-descriptor.d.ts +495 -0
  388. package/dist/schemas/config-manifest-descriptor.d.ts.map +1 -0
  389. package/dist/schemas/config-manifest-descriptor.js +210 -0
  390. package/dist/schemas/config-manifest-descriptor.js.map +1 -0
  391. package/dist/schemas/config-registry-state.d.ts +8 -0
  392. package/dist/schemas/config-registry-state.d.ts.map +1 -0
  393. package/dist/schemas/config-registry-state.js +6 -0
  394. package/dist/schemas/config-registry-state.js.map +1 -0
  395. package/dist/schemas/doctor.schema.d.ts +25 -0
  396. package/dist/schemas/doctor.schema.d.ts.map +1 -0
  397. package/dist/schemas/doctor.schema.js +2 -0
  398. package/dist/schemas/doctor.schema.js.map +1 -0
  399. package/dist/schemas/index.d.ts +8 -0
  400. package/dist/schemas/index.d.ts.map +1 -0
  401. package/dist/schemas/index.js +21 -0
  402. package/dist/schemas/index.js.map +1 -0
  403. package/dist/server/index.d.ts +5 -0
  404. package/dist/server/index.d.ts.map +1 -0
  405. package/dist/server/index.js +4 -0
  406. package/dist/server/index.js.map +1 -0
  407. package/dist/services/config-accessor.d.ts +40 -0
  408. package/dist/services/config-accessor.d.ts.map +1 -0
  409. package/dist/services/config-accessor.js +180 -0
  410. package/dist/services/config-accessor.js.map +1 -0
  411. package/dist/services/config-storage/index.d.ts +8 -0
  412. package/dist/services/config-storage/index.d.ts.map +1 -0
  413. package/dist/services/config-storage/index.js +7 -0
  414. package/dist/services/config-storage/index.js.map +1 -0
  415. package/dist/services/config-storage/service.d.ts +63 -0
  416. package/dist/services/config-storage/service.d.ts.map +1 -0
  417. package/dist/services/config-storage/service.js +234 -0
  418. package/dist/services/config-storage/service.js.map +1 -0
  419. package/dist/services/config.d.ts +3 -0
  420. package/dist/services/config.d.ts.map +1 -0
  421. package/dist/services/config.js +30 -0
  422. package/dist/services/config.js.map +1 -0
  423. package/dist/services/encryption.d.ts +114 -0
  424. package/dist/services/encryption.d.ts.map +1 -0
  425. package/dist/services/encryption.js +232 -0
  426. package/dist/services/encryption.js.map +1 -0
  427. package/dist/services/index.d.ts +12 -0
  428. package/dist/services/index.d.ts.map +1 -0
  429. package/dist/services/index.js +16 -0
  430. package/dist/services/index.js.map +1 -0
  431. package/dist/services/loader/loader.descriptor.d.ts +103 -0
  432. package/dist/services/loader/loader.descriptor.d.ts.map +1 -0
  433. package/dist/services/loader/loader.descriptor.js +60 -0
  434. package/dist/services/loader/loader.descriptor.js.map +1 -0
  435. package/dist/services/loader/loader.impl.cloud.d.ts +55 -0
  436. package/dist/services/loader/loader.impl.cloud.d.ts.map +1 -0
  437. package/dist/services/loader/loader.impl.cloud.js +182 -0
  438. package/dist/services/loader/loader.impl.cloud.js.map +1 -0
  439. package/dist/services/loader/loader.impl.consumer.d.ts +48 -0
  440. package/dist/services/loader/loader.impl.consumer.d.ts.map +1 -0
  441. package/dist/services/loader/loader.impl.consumer.js +175 -0
  442. package/dist/services/loader/loader.impl.consumer.js.map +1 -0
  443. package/dist/services/loader/loader.impl.consumer.local-first.d.ts +59 -0
  444. package/dist/services/loader/loader.impl.consumer.local-first.d.ts.map +1 -0
  445. package/dist/services/loader/loader.impl.consumer.local-first.js +347 -0
  446. package/dist/services/loader/loader.impl.consumer.local-first.js.map +1 -0
  447. package/dist/services/manifest-utils.d.ts +47 -0
  448. package/dist/services/manifest-utils.d.ts.map +1 -0
  449. package/dist/services/manifest-utils.js +105 -0
  450. package/dist/services/manifest-utils.js.map +1 -0
  451. package/dist/services/schemas/config-accessor.schema.d.ts +10 -0
  452. package/dist/services/schemas/config-accessor.schema.d.ts.map +1 -0
  453. package/dist/services/schemas/config-accessor.schema.js +2 -0
  454. package/dist/services/schemas/config-accessor.schema.js.map +1 -0
  455. package/dist/services/schemas/encryption.schema.d.ts +22 -0
  456. package/dist/services/schemas/encryption.schema.d.ts.map +1 -0
  457. package/dist/services/schemas/encryption.schema.js +2 -0
  458. package/dist/services/schemas/encryption.schema.js.map +1 -0
  459. package/dist/services/schemas/manifest-utils.schema.d.ts +4 -0
  460. package/dist/services/schemas/manifest-utils.schema.d.ts.map +1 -0
  461. package/dist/services/schemas/manifest-utils.schema.js +2 -0
  462. package/dist/services/schemas/manifest-utils.schema.js.map +1 -0
  463. package/dist/settings/assemble.d.ts +28 -0
  464. package/dist/settings/assemble.d.ts.map +1 -0
  465. package/dist/settings/assemble.js +30 -0
  466. package/dist/settings/assemble.js.map +1 -0
  467. package/dist/settings/index.d.ts +10 -0
  468. package/dist/settings/index.d.ts.map +1 -0
  469. package/dist/settings/index.js +10 -0
  470. package/dist/settings/index.js.map +1 -0
  471. package/dist/settings/settings-section.schema.d.ts +49 -0
  472. package/dist/settings/settings-section.schema.d.ts.map +1 -0
  473. package/dist/settings/settings-section.schema.js +70 -0
  474. package/dist/settings/settings-section.schema.js.map +1 -0
  475. package/dist/storage/adapter.d.ts +11 -0
  476. package/dist/storage/adapter.d.ts.map +1 -0
  477. package/dist/storage/adapter.js +8 -0
  478. package/dist/storage/adapter.js.map +1 -0
  479. package/dist/storage/index.d.ts +8 -0
  480. package/dist/storage/index.d.ts.map +1 -0
  481. package/dist/storage/index.js +8 -0
  482. package/dist/storage/index.js.map +1 -0
  483. package/dist/storage/schemas.d.ts +257 -0
  484. package/dist/storage/schemas.d.ts.map +1 -0
  485. package/dist/storage/schemas.js +179 -0
  486. package/dist/storage/schemas.js.map +1 -0
  487. package/dist/storage/types.d.ts +74 -0
  488. package/dist/storage/types.d.ts.map +1 -0
  489. package/dist/storage/types.js +7 -0
  490. package/dist/storage/types.js.map +1 -0
  491. package/dist/system-constants.d.ts +95 -0
  492. package/dist/system-constants.d.ts.map +1 -0
  493. package/dist/system-constants.js +110 -0
  494. package/dist/system-constants.js.map +1 -0
  495. package/package.json +417 -0
  496. package/src/adapters/cli/flags.ts +260 -0
  497. package/src/adapters/cli/index.ts +24 -0
  498. package/src/adapters/cli/mappings.ts +43 -0
  499. package/src/adapters/cli/prompts.ts +70 -0
  500. package/src/adapters/cli/schemas/flags.schema.ts +8 -0
  501. package/src/adapters/cli/schemas/mappings.schema.ts +3 -0
  502. package/src/adapters/cli/schemas/prompts.schema.ts +4 -0
  503. package/src/adapters/cli/schemas/wizard.schema.ts +21 -0
  504. package/src/adapters/cli/wizard.ts +106 -0
  505. package/src/adapters/web/components/ManifestForm.svelte +817 -0
  506. package/src/browser/index.ts +86 -0
  507. package/src/cli/settings.descriptor.ts +23 -0
  508. package/src/cli/types.ts +59 -0
  509. package/src/client/index.ts +169 -0
  510. package/src/client/storage.ts +76 -0
  511. package/src/collection/collection.ts +121 -0
  512. package/src/collection/index.ts +6 -0
  513. package/src/common/index.ts +86 -0
  514. package/src/config.context.descriptor.ts +12 -0
  515. package/src/config.plugin.ts +214 -0
  516. package/src/crud/base-types.ts +10 -0
  517. package/src/crud/index.ts +15 -0
  518. package/src/crud/schemas/base-types.schema.ts +20 -0
  519. package/src/crud/schemas/shared.schema.ts +14 -0
  520. package/src/crud/shared.ts +8 -0
  521. package/src/crud/types.ts +299 -0
  522. package/src/docs/environment.docs.descriptor.ts +385 -0
  523. package/src/docs/manifests.docs.descriptor.ts +505 -0
  524. package/src/docs/validation.docs.descriptor.ts +443 -0
  525. package/src/doctor.ts +143 -0
  526. package/src/env.runtime.ts +49 -0
  527. package/src/env.ts +91 -0
  528. package/src/environment/current.ts +108 -0
  529. package/src/environment/environment.config.descriptor.ts +60 -0
  530. package/src/environment/environment.config.schema.ts +24 -0
  531. package/src/environment/environment.local.descriptor.ts +45 -0
  532. package/src/environment/environment.plugin.ts +31 -0
  533. package/src/environment/environment.production.descriptor.ts +40 -0
  534. package/src/environment/environment.staging.descriptor.ts +25 -0
  535. package/src/environment/index.ts +22 -0
  536. package/src/environment/kinds/environment.default.ts +57 -0
  537. package/src/environment/kinds/environment.interface.ts +10 -0
  538. package/src/environment/kinds/environment.kind.ts +69 -0
  539. package/src/environment/kinds/environment.schema.ts +57 -0
  540. package/src/environment/kinds/index.ts +8 -0
  541. package/src/environment/kinds/schemas/environment.interface.schema.ts +11 -0
  542. package/src/environment/kinds/schemas/environment.schema.ts +24 -0
  543. package/src/environment/schemas/current.schema.ts +21 -0
  544. package/src/environment/schemas/environment.config.schema.ts +3 -0
  545. package/src/extensions/index.ts +26 -0
  546. package/src/extensions/registry.ts +179 -0
  547. package/src/extensions/types.ts +123 -0
  548. package/src/form/core/field-resolver.ts +380 -0
  549. package/src/form/core/groups.ts +96 -0
  550. package/src/form/core/index.ts +41 -0
  551. package/src/form/core/nested-utils.ts +115 -0
  552. package/src/form/core/schemas/validation.schema.ts +9 -0
  553. package/src/form/core/types.ts +115 -0
  554. package/src/form/core/validation.ts +137 -0
  555. package/src/form/core/visibility.ts +172 -0
  556. package/src/form/index.ts +36 -0
  557. package/src/index.ts +69 -0
  558. package/src/js-yaml.d.ts +4 -0
  559. package/src/loader/cli/index.ts +386 -0
  560. package/src/loader/cli/loaders.ts +153 -0
  561. package/src/loader/cli/types.ts +181 -0
  562. package/src/loader/cli/utils.ts +236 -0
  563. package/src/loader/client.ts +140 -0
  564. package/src/loader/discovery.ts +291 -0
  565. package/src/loader/file-loader.ts +262 -0
  566. package/src/loader/index.server.ts +389 -0
  567. package/src/loader/index.ts +18 -0
  568. package/src/loader/merge.ts +366 -0
  569. package/src/loader/schemas/merge.schema.ts +8 -0
  570. package/src/loader/schemas/validation.schema.ts +18 -0
  571. package/src/loader/server.ts +15 -0
  572. package/src/loader/types.ts +142 -0
  573. package/src/loader/validation.ts +261 -0
  574. package/src/manifest/builder.ts +452 -0
  575. package/src/manifest/config-manifest.ts +482 -0
  576. package/src/manifest/index.ts +92 -0
  577. package/src/manifest/schema.ts +249 -0
  578. package/src/manifest/schemas/builder.schema.ts +33 -0
  579. package/src/manifest/schemas/config-manifest.schema.ts +1 -0
  580. package/src/manifest/schemas/schema.schema.ts +99 -0
  581. package/src/manifest/types.ts +726 -0
  582. package/src/routing/index.ts +105 -0
  583. package/src/routing/merge.ts +589 -0
  584. package/src/routing/registry.ts +595 -0
  585. package/src/routing/schemas/merge.schema.ts +6 -0
  586. package/src/routing/types.ts +470 -0
  587. package/src/schema/extend-zod.ts +289 -0
  588. package/src/schema/index.ts +44 -0
  589. package/src/schema/references.ts +21 -0
  590. package/src/schema/resolver.ts +343 -0
  591. package/src/schema/schemas/extend-zod.schema.ts +16 -0
  592. package/src/schema/schemas/references.schema.ts +86 -0
  593. package/src/schemas/collection.ts +38 -0
  594. package/src/schemas/config-manifest-descriptor.ts +259 -0
  595. package/src/schemas/config-registry-state.ts +13 -0
  596. package/src/schemas/doctor.schema.ts +27 -0
  597. package/src/schemas/index.ts +53 -0
  598. package/src/server/index.ts +4 -0
  599. package/src/services/config-accessor.ts +218 -0
  600. package/src/services/config-storage/index.ts +8 -0
  601. package/src/services/config-storage/service.ts +355 -0
  602. package/src/services/config.ts +37 -0
  603. package/src/services/encryption.ts +260 -0
  604. package/src/services/index.ts +34 -0
  605. package/src/services/loader/loader.descriptor.ts +96 -0
  606. package/src/services/loader/loader.impl.cloud.ts +214 -0
  607. package/src/services/loader/loader.impl.consumer.local-first.ts +417 -0
  608. package/src/services/loader/loader.impl.consumer.ts +213 -0
  609. package/src/services/manifest-utils.ts +119 -0
  610. package/src/services/schemas/config-accessor.schema.ts +11 -0
  611. package/src/services/schemas/encryption.schema.ts +23 -0
  612. package/src/services/schemas/manifest-utils.schema.ts +4 -0
  613. package/src/settings/assemble.ts +46 -0
  614. package/src/settings/index.ts +19 -0
  615. package/src/settings/settings-section.schema.ts +84 -0
  616. package/src/storage/adapter.ts +12 -0
  617. package/src/storage/index.ts +48 -0
  618. package/src/storage/schemas.ts +215 -0
  619. package/src/storage/types.ts +88 -0
  620. package/src/system-constants.ts +121 -0
@@ -0,0 +1,441 @@
1
+ const descriptor = {
2
+ kind: 'docs/topic',
3
+ id: 'config.validation',
4
+ title: 'Configuration Validation',
5
+ summary: 'Schema validation, error handling, and defaults',
6
+ body: {
7
+ type: 'markdown',
8
+ sourceType: 'raw',
9
+ source: `---
10
+ title: Configuration Validation
11
+ summary: Schema validation, error handling, and defaults
12
+ tags: [config, validation, schema, errors, defaults]
13
+ parent: config
14
+ order: 3
15
+ surfaces: [cli, web, in-app]
16
+ hardware: [consumer, cloud]
17
+ ---
18
+
19
+ # Configuration Validation
20
+
21
+ Configuration validation ensures config data meets schema requirements, provides helpful error messages, and applies sensible defaults. The config system uses Zod schemas for type-safe validation.
22
+
23
+ ## Schema Validation
24
+
25
+ ### Zod Schema Basics
26
+
27
+ \`\`\`ts
28
+ import { z } from 'zod';
29
+
30
+ const configSchema = z.object({
31
+ // Required string
32
+ apiKey: z.string().min(1),
33
+
34
+ // Number with range
35
+ port: z.number().min(1).max(65535),
36
+
37
+ // Enum type
38
+ environment: z.enum(['development', 'production']),
39
+
40
+ // Optional with default
41
+ timeout: z.number().default(5000),
42
+
43
+ // Array of strings
44
+ allowedOrigins: z.array(z.string().url()),
45
+
46
+ // Nested object
47
+ database: z.object({
48
+ host: z.string(),
49
+ port: z.number(),
50
+ name: z.string()
51
+ })
52
+ });
53
+ \`\`\`
54
+
55
+ ### Parsing Configuration
56
+
57
+ \`\`\`ts
58
+ import { z } from 'zod';
59
+
60
+ const configSchema = z.object({
61
+ apiKey: z.string().min(1),
62
+ port: z.number().default(3000)
63
+ });
64
+
65
+ const rawConfig = {
66
+ apiKey: '<api-key>',
67
+ port: '3000' // string, will be coerced
68
+ };
69
+
70
+ try {
71
+ const config = configSchema.parse(rawConfig);
72
+ console.log(config); // { apiKey: '<api-key>', port: 3000 }
73
+ } catch (error) {
74
+ if (error instanceof z.ZodError) {
75
+ console.error(error.errors);
76
+ // [
77
+ // {
78
+ // path: ['apiKey'],
79
+ // message: 'Required',
80
+ // code: 'invalid_type'
81
+ // }
82
+ // ]
83
+ }
84
+ }
85
+ \`\`\`
86
+
87
+ ### Type Coercion
88
+
89
+ \`\`\`ts
90
+ const configSchema = z.object({
91
+ // Coerce string to number
92
+ port: z.coerce.number().default(3000),
93
+
94
+ // Coerce string to boolean
95
+ debug: z.coerce.boolean().default(false),
96
+
97
+ // Coerce string to date
98
+ createdAt: z.coerce.date()
99
+ });
100
+
101
+ const rawConfig = {
102
+ port: '3000',
103
+ debug: 'true',
104
+ createdAt: '2024-01-01'
105
+ };
106
+
107
+ const config = configSchema.parse(rawConfig);
108
+ // { port: 3000, debug: true, createdAt: Date }
109
+ \`\`\`
110
+
111
+ ## Validation Errors
112
+
113
+ ### Error Format
114
+
115
+ \`\`\`ts
116
+ interface ValidationError {
117
+ code: string; // 'invalid_type', 'too_small', etc.
118
+ path: string[]; // ['database', 'host']
119
+ message: string; // 'Required'
120
+ expected?: string; // 'string'
121
+ received?: string; // 'undefined'
122
+ }
123
+ \`\`\`
124
+
125
+ ### Error Handling
126
+
127
+ \`\`\`ts
128
+ import { validateConfig } from '@vibesdotdev/config';
129
+
130
+ const result = validateConfig(configSchema, rawData);
131
+
132
+ if (!result.success) {
133
+ console.error('Validation failed:');
134
+ for (const error of result.errors) {
135
+ console.error(\` \${error.path.join('.')}: \${error.message}\`);
136
+ }
137
+ } else {
138
+ console.log('Config valid:', result.data);
139
+ }
140
+ \`\`\`
141
+
142
+ ### Custom Error Messages
143
+
144
+ \`\`\`ts
145
+ const configSchema = z.object({
146
+ email: z.string().email('Must be a valid email address'),
147
+ password: z
148
+ .string()
149
+ .min(8, 'Password must be at least 8 characters')
150
+ .regex(/[A-Z]/, 'Password must contain uppercase letter')
151
+ .regex(/[0-9]/, 'Password must contain number'),
152
+ age: z.number().min(18, 'Must be 18 or older')
153
+ });
154
+ \`\`\`
155
+
156
+ ### Error Formatting
157
+
158
+ \`\`\`ts
159
+ import { formatValidationErrors } from '@vibesdotdev/config';
160
+
161
+ try {
162
+ configSchema.parse(rawData);
163
+ } catch (error) {
164
+ if (error instanceof z.ZodError) {
165
+ const formatted = formatValidationErrors(error);
166
+ console.log(formatted);
167
+ // {
168
+ // fieldErrors: {
169
+ // email: ['Must be a valid email address'],
170
+ // password: ['Password must be at least 8 characters']
171
+ // },
172
+ // rootErrors: []
173
+ // }
174
+ }
175
+ }
176
+ \`\`\`
177
+
178
+ ## Default Values
179
+
180
+ ### Schema Defaults
181
+
182
+ \`\`\`ts
183
+ const configSchema = z.object({
184
+ // Simple default
185
+ debug: z.boolean().default(false),
186
+
187
+ // Default with transform
188
+ tags: z.string().transform((s) => s.split(',')).default(''),
189
+
190
+ // Default object
191
+ settings: z.object({
192
+ theme: z.enum(['light', 'dark']).default('system'),
193
+ notifications: z.boolean().default(true)
194
+ }).default({})
195
+ });
196
+ \`\`\`
197
+
198
+ ### Context-Aware Defaults
199
+
200
+ \`\`\`ts
201
+ import { applyDefaults } from '@vibesdotdev/config';
202
+
203
+ const configSchema = z.object({
204
+ apiUrl: z.string(),
205
+ timeout: z.number()
206
+ });
207
+
208
+ const defaults = {
209
+ apiUrl: {
210
+ type: 'context',
211
+ rules: [
212
+ {
213
+ when: { environment: 'development' },
214
+ value: 'http://localhost:3000'
215
+ },
216
+ {
217
+ when: { environment: 'production' },
218
+ value: 'https://api.vibes.dev'
219
+ }
220
+ ]
221
+ },
222
+ timeout: {
223
+ type: 'context',
224
+ rules: [
225
+ {
226
+ when: { hardware: 'consumer' },
227
+ value: 30000
228
+ },
229
+ {
230
+ when: { hardware: 'cloud' },
231
+ value: 10000
232
+ }
233
+ ]
234
+ }
235
+ };
236
+
237
+ const config = applyDefaults(configSchema, rawData, {
238
+ environment: 'production',
239
+ hardware: 'cloud'
240
+ });
241
+ \`\`\`
242
+
243
+ ### Lazy Defaults
244
+
245
+ \`\`\`ts
246
+ const configSchema = z.object({
247
+ // Default from environment variable
248
+ apiKey: z.string().default(() => process.env.API_KEY),
249
+
250
+ // Default from function
251
+ timestamp: z.number().default(() => Date.now()),
252
+
253
+ // Default from async function
254
+ version: z.string().default(async () => {
255
+ const pkg = await import('../package.json');
256
+ return pkg.version;
257
+ })
258
+ });
259
+ \`\`\`
260
+
261
+ ## Custom Validation
262
+
263
+ ### Refine Validation
264
+
265
+ \`\`\`ts
266
+ const configSchema = z.object({
267
+ password: z.string(),
268
+ confirmPassword: z.string()
269
+ }).refine(
270
+ (data) => data.password === data.confirmPassword,
271
+ {
272
+ message: 'Passwords do not match',
273
+ path: ['confirmPassword']
274
+ }
275
+ );
276
+ \`\`\`
277
+
278
+ ### Async Validation
279
+
280
+ \`\`\`ts
281
+ const configSchema = z.object({
282
+ apiKey: z.string()
283
+ }).refineAsync(
284
+ async (data) => {
285
+ // Validate API key with remote service
286
+ const response = await fetch('https://api.example.com/validate', {
287
+ headers: { Authorization: \`Bearer \${data.apiKey}\` }
288
+ });
289
+ return response.ok;
290
+ },
291
+ {
292
+ message: 'Invalid API key',
293
+ path: ['apiKey']
294
+ }
295
+ );
296
+ \`\`\`
297
+
298
+ ### Transform Validation
299
+
300
+ \`\`\`ts
301
+ const configSchema = z.object({
302
+ // Trim and lowercase email
303
+ email: z.string().transform((s) => s.trim().toLowerCase()),
304
+
305
+ // Parse JSON string
306
+ metadata: z.string().transform((s) => JSON.parse(s)),
307
+
308
+ // Validate and transform
309
+ port: z.string().transform((s) => {
310
+ const port = parseInt(s, 10);
311
+ if (port < 1 || port > 65535) {
312
+ throw new Error('Invalid port number');
313
+ }
314
+ return port;
315
+ })
316
+ });
317
+ \`\`\`
318
+
319
+ ## Validation Strategies
320
+
321
+ ### Strict Validation
322
+
323
+ \`\`\`ts
324
+ const configSchema = z.object({
325
+ apiKey: z.string()
326
+ }).strict(); // Reject unknown keys
327
+
328
+ try {
329
+ configSchema.parse({ apiKey: '<api-key>', unknown: 'value' });
330
+ } catch (error) {
331
+ console.error(error); // Unrecognized key 'unknown'
332
+ }
333
+ \`\`\`
334
+
335
+ ### Passthrough Validation
336
+
337
+ \`\`\`ts
338
+ const configSchema = z.object({
339
+ apiKey: z.string()
340
+ }).passthrough(); // Allow unknown keys
341
+
342
+ const config = configSchema.parse({
343
+ apiKey: '<api-key>',
344
+ unknown: 'value' // preserved
345
+ });
346
+ \`\`\`
347
+
348
+ ### Partial Validation
349
+
350
+ \`\`\`ts
351
+ const configSchema = z.object({
352
+ apiKey: z.string(),
353
+ port: z.number()
354
+ }).partial(); // All fields optional
355
+
356
+ const config = configSchema.parse({});
357
+ // {}
358
+ \`\`\`
359
+
360
+ ## Validation Utilities
361
+
362
+ ### Deep Merge
363
+
364
+ \`\`\`ts
365
+ import { deepMerge } from '@vibesdotdev/config';
366
+
367
+ const defaults = {
368
+ database: {
369
+ host: 'localhost',
370
+ port: 5432
371
+ }
372
+ };
373
+
374
+ const overrides = {
375
+ database: {
376
+ host: 'db.example.com'
377
+ }
378
+ };
379
+
380
+ const merged = deepMerge(defaults, overrides);
381
+ // { database: { host: 'db.example.com', port: 5432 } }
382
+ \`\`\`
383
+
384
+ ### Flatten Errors
385
+
386
+ \`\`\`ts
387
+ import { flattenErrors } from '@vibesdotdev/config';
388
+
389
+ const zodError = new z.ZodError([...]);
390
+ const flat = flattenErrors(zodError);
391
+
392
+ console.log(flat);
393
+ // {
394
+ // 'database.host': ['Required'],
395
+ // 'database.port': ['Must be a number']
396
+ // }
397
+ \`\`\`
398
+
399
+ ### Validate Against Schema
400
+
401
+ \`\`\`ts
402
+ import { validateAgainstSchema } from '@vibesdotdev/config';
403
+
404
+ const result = validateAgainstSchema(configSchema, rawData, {
405
+ strict: true,
406
+ applyDefaults: true,
407
+ context: { environment: 'production' }
408
+ });
409
+
410
+ if (result.success) {
411
+ console.log(result.data); // Validated config with defaults
412
+ } else {
413
+ console.error(result.errors);
414
+ }
415
+ \`\`\`
416
+
417
+ ## Best Practices
418
+
419
+ 1. **Use specific schemas** — Avoid \`z.any()\` or \`z.unknown()\`
420
+ 2. **Provide helpful error messages** — Guide users to fix issues
421
+ 3. **Apply sensible defaults** — Reduce required configuration
422
+ 4. **Validate early** — Fail fast on invalid config
423
+ 5. **Use context-aware defaults** — Different values per environment
424
+ 6. **Document required fields** — Clear what must be provided
425
+
426
+ :::card{title="See also"}
427
+ - [\`config.manifests\`](config.manifests) — Configuration manifests
428
+ - [\`config.environment\`](config.environment) — Environment variables
429
+ - [\`storage.manifests\`](storage.manifests) — Storage manifests
430
+ :::
431
+ `
432
+ },
433
+ parent: 'config',
434
+ order: 3,
435
+ tags: ['config', 'validation', 'schema', 'errors', 'defaults'],
436
+ surfaces: ['cli', 'web', 'in-app'],
437
+ hardware: ['consumer', 'cloud'],
438
+ enabled: true
439
+ };
440
+ export default descriptor;
441
+ //# sourceMappingURL=validation.docs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.docs.descriptor.js","sourceRoot":"","sources":["../../src/docs/validation.docs.descriptor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAwB;IACvC,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,mBAAmB;IACvB,KAAK,EAAE,0BAA0B;IACjC,OAAO,EAAE,iDAAiD;IAC1D,IAAI,EAAE;QACL,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsaT;KACC;IACD,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC;IAC9D,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;IAClC,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Config Doctor
3
+ *
4
+ * Generic diagnostic functions for validating configuration state.
5
+ */
6
+ import type { ConfigManifest } from './manifest/types';
7
+ import type { ConfigCollection } from './collection/collection';
8
+ import type { DetailedDiagnostic, DiagnoseConfigOptions } from './schemas/doctor.schema.ts';
9
+ export type { DiagnosticSeverity, DiagnosticIssue, DetailedDiagnostic, DiagnoseConfigOptions } from './schemas/doctor.schema.ts';
10
+ /**
11
+ * Generic diagnostic function for any ConfigManifest.
12
+ *
13
+ * Validates:
14
+ * - Required fields are present
15
+ * - Values match schema constraints
16
+ * - No deprecated settings (optional)
17
+ * - Custom validation rules
18
+ *
19
+ * @param manifest - The ConfigManifest to diagnose
20
+ * @param values - The current configuration values
21
+ * @param options - Diagnostic options
22
+ * @returns Detailed diagnostic result
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const result = diagnoseConfig(myManifest, currentValues);
27
+ * if (!result.ready) {
28
+ * console.error('Config errors:', result.issues.filter(i => i.severity === 'error'));
29
+ * }
30
+ * ```
31
+ */
32
+ export declare function diagnoseConfig<T extends ConfigManifest>(manifest: T, values: Record<string, unknown>, options?: DiagnoseConfigOptions): DetailedDiagnostic;
33
+ /**
34
+ * Diagnose a ConfigCollection (group of related configs).
35
+ *
36
+ * Validates that all manifests in the collection are properly configured.
37
+ *
38
+ * @param collection - The ConfigCollection to diagnose
39
+ * @returns Diagnostic results for each manifest in the collection
40
+ */
41
+ export declare function diagnoseCollection(collection: ConfigCollection): Promise<Record<string, DetailedDiagnostic>>;
42
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAmB,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAE7G,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEjI;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,cAAc,EACtD,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,qBAA0B,GACjC,kBAAkB,CA0DpB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAc7C"}
package/dist/doctor.js ADDED
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Config Doctor
3
+ *
4
+ * Generic diagnostic functions for validating configuration state.
5
+ */
6
+ /**
7
+ * Generic diagnostic function for any ConfigManifest.
8
+ *
9
+ * Validates:
10
+ * - Required fields are present
11
+ * - Values match schema constraints
12
+ * - No deprecated settings (optional)
13
+ * - Custom validation rules
14
+ *
15
+ * @param manifest - The ConfigManifest to diagnose
16
+ * @param values - The current configuration values
17
+ * @param options - Diagnostic options
18
+ * @returns Detailed diagnostic result
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const result = diagnoseConfig(myManifest, currentValues);
23
+ * if (!result.ready) {
24
+ * console.error('Config errors:', result.issues.filter(i => i.severity === 'error'));
25
+ * }
26
+ * ```
27
+ */
28
+ export function diagnoseConfig(manifest, values, options = {}) {
29
+ const issues = [];
30
+ const { checkDeprecated = false } = options;
31
+ // Check all fields from manifest
32
+ for (const [fieldKey, fieldMeta] of Object.entries(manifest.fields)) {
33
+ const value = getValueAtPath(values, fieldKey);
34
+ // Check required fields (fields without defaults)
35
+ // Empty string and null count as missing
36
+ const hasValue = value !== undefined && value !== null && value !== '';
37
+ if (fieldMeta.defaults?.base === undefined && !hasValue) {
38
+ issues.push({
39
+ path: fieldKey,
40
+ message: `Required field '${fieldMeta.ui.label || fieldKey}' is missing`,
41
+ severity: 'error',
42
+ code: 'required_field_missing'
43
+ });
44
+ }
45
+ // Check deprecated fields
46
+ if (checkDeprecated && fieldMeta.tags?.includes('deprecated')) {
47
+ if (value !== undefined && value !== null) {
48
+ issues.push({
49
+ path: fieldKey,
50
+ message: `Field '${fieldMeta.ui.label || fieldKey}' is deprecated and should be removed`,
51
+ severity: 'warning',
52
+ code: 'deprecated_field_used'
53
+ });
54
+ }
55
+ }
56
+ }
57
+ // Run custom validators
58
+ if (options.customValidators) {
59
+ for (const { path, fn } of options.customValidators) {
60
+ const value = getValueAtPath(values, path);
61
+ const error = fn(value);
62
+ if (error) {
63
+ issues.push({
64
+ path,
65
+ message: error,
66
+ severity: 'error',
67
+ code: 'custom_validation_failed'
68
+ });
69
+ }
70
+ }
71
+ }
72
+ const errors = issues.filter((i) => i.severity === 'error').length;
73
+ const warnings = issues.filter((i) => i.severity === 'warning').length;
74
+ const info = issues.filter((i) => i.severity === 'info').length;
75
+ return {
76
+ ready: errors === 0,
77
+ issues,
78
+ summary: { errors, warnings, info }
79
+ };
80
+ }
81
+ /**
82
+ * Diagnose a ConfigCollection (group of related configs).
83
+ *
84
+ * Validates that all manifests in the collection are properly configured.
85
+ *
86
+ * @param collection - The ConfigCollection to diagnose
87
+ * @returns Diagnostic results for each manifest in the collection
88
+ */
89
+ export async function diagnoseCollection(collection) {
90
+ const results = {};
91
+ for (const manifestId of collection.manifestIds) {
92
+ // Load current values for this manifest
93
+ // Note: This assumes manifests are registered and loadable
94
+ results[manifestId] = {
95
+ ready: true,
96
+ issues: [],
97
+ summary: { errors: 0, warnings: 0, info: 0 }
98
+ };
99
+ }
100
+ return results;
101
+ }
102
+ /**
103
+ * Helper: Get value at a dot-notation path from an object
104
+ */
105
+ function getValueAtPath(obj, path) {
106
+ if (path in obj) {
107
+ return obj[path];
108
+ }
109
+ const parts = path.split('.');
110
+ let current = obj;
111
+ for (const part of parts) {
112
+ if (current == null || typeof current !== 'object') {
113
+ return undefined;
114
+ }
115
+ current = current[part];
116
+ }
117
+ return current;
118
+ }
119
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Generic environment-variable helpers.
3
+ *
4
+ * This module is the canonical home for *generic* env access: read a key,
5
+ * parse a number, parse a boolean, validate required keys at startup. It is
6
+ * isomorphic — works in Node/server and browser (`window.__env`).
7
+ *
8
+ * Domain-specific env (AI provider keys, OAuth callback URLs, SMTP, Linear
9
+ * status IDs, scheduler crons, …) lives with the owning module. Do not
10
+ * re-introduce a monorepo-wide `env` aggregate here.
11
+ *
12
+ * See `packages/config/SPEC.md` ("Does not own").
13
+ */
14
+ /** Read an env var (or the `PUBLIC_`-prefixed variant) with a fallback. */
15
+ export declare function getEnv(key: string, defaultValue?: string): string;
16
+ /** Read an env var as a number, falling back when missing or unparseable. */
17
+ export declare function getEnvNumber(key: string, defaultValue: number): number;
18
+ /** Read an env var as a boolean (`"true"` is true; anything else is the default). */
19
+ export declare function getEnvBoolean(key: string, defaultValue: boolean): boolean;
20
+ /**
21
+ * Assert that the given env vars are set. No-op in browser runtimes.
22
+ * Throws with a formatted message listing every missing key.
23
+ */
24
+ export declare function validateRequiredEnv(required: Array<{
25
+ key: string;
26
+ description: string;
27
+ }>): void;
28
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkCH,2EAA2E;AAC3E,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAIzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAqB/F"}