@buenojs/bueno 0.8.10 → 0.8.11

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 (699) hide show
  1. package/dist/cache/index.d.ts +187 -0
  2. package/dist/cache/index.d.ts.map +1 -0
  3. package/dist/cache/index.js +595 -0
  4. package/dist/cache/index.js.map +1 -0
  5. package/dist/cli/bin.d.ts +8 -0
  6. package/dist/cli/bin.d.ts.map +1 -0
  7. package/dist/cli/bin.js +9 -9
  8. package/dist/cli/bin.js.map +1 -0
  9. package/dist/cli/commands/add-frontend.d.ts +7 -0
  10. package/dist/cli/commands/add-frontend.d.ts.map +1 -0
  11. package/dist/cli/commands/add-frontend.js +376 -0
  12. package/dist/cli/commands/add-frontend.js.map +1 -0
  13. package/dist/cli/commands/build.d.ts +7 -0
  14. package/dist/cli/commands/build.d.ts.map +1 -0
  15. package/dist/cli/commands/build.js +347 -0
  16. package/dist/cli/commands/build.js.map +1 -0
  17. package/dist/cli/commands/dev.d.ts +7 -0
  18. package/dist/cli/commands/dev.d.ts.map +1 -0
  19. package/dist/cli/commands/dev.js +205 -0
  20. package/dist/cli/commands/dev.js.map +1 -0
  21. package/dist/cli/commands/generate.d.ts +7 -0
  22. package/dist/cli/commands/generate.d.ts.map +1 -0
  23. package/dist/cli/commands/generate.js +491 -0
  24. package/dist/cli/commands/generate.js.map +1 -0
  25. package/dist/cli/commands/help.d.ts +7 -0
  26. package/dist/cli/commands/help.d.ts.map +1 -0
  27. package/dist/cli/commands/help.js +51 -0
  28. package/dist/cli/commands/help.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +59 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -0
  31. package/dist/cli/commands/index.js +77 -0
  32. package/dist/cli/commands/index.js.map +1 -0
  33. package/dist/cli/commands/migration.d.ts +7 -0
  34. package/dist/cli/commands/migration.d.ts.map +1 -0
  35. package/dist/cli/commands/migration.js +295 -0
  36. package/dist/cli/commands/migration.js.map +1 -0
  37. package/dist/cli/commands/new.d.ts +7 -0
  38. package/dist/cli/commands/new.d.ts.map +1 -0
  39. package/dist/cli/commands/new.js +641 -0
  40. package/dist/cli/commands/new.js.map +1 -0
  41. package/dist/cli/commands/start.d.ts +7 -0
  42. package/dist/cli/commands/start.d.ts.map +1 -0
  43. package/dist/cli/commands/start.js +171 -0
  44. package/dist/cli/commands/start.js.map +1 -0
  45. package/dist/cli/core/args.d.ts +61 -0
  46. package/dist/cli/core/args.d.ts.map +1 -0
  47. package/dist/cli/core/args.js +224 -0
  48. package/dist/cli/core/args.js.map +1 -0
  49. package/dist/cli/core/console.d.ts +135 -0
  50. package/dist/cli/core/console.d.ts.map +1 -0
  51. package/dist/cli/core/console.js +268 -0
  52. package/dist/cli/core/console.js.map +1 -0
  53. package/dist/cli/core/index.d.ts +10 -0
  54. package/dist/cli/core/index.d.ts.map +1 -0
  55. package/dist/cli/core/index.js +10 -0
  56. package/dist/cli/core/index.js.map +1 -0
  57. package/dist/cli/core/prompt.d.ts +63 -0
  58. package/dist/cli/core/prompt.d.ts.map +1 -0
  59. package/dist/cli/core/prompt.js +338 -0
  60. package/dist/cli/core/prompt.js.map +1 -0
  61. package/dist/cli/core/spinner.d.ts +111 -0
  62. package/dist/cli/core/spinner.d.ts.map +1 -0
  63. package/dist/cli/core/spinner.js +208 -0
  64. package/dist/cli/core/spinner.js.map +1 -0
  65. package/dist/cli/index.d.ts +47 -0
  66. package/dist/cli/index.d.ts.map +1 -0
  67. package/dist/cli/index.js +127 -0
  68. package/dist/cli/index.js.map +1 -0
  69. package/dist/cli/templates/database/index.d.ts +24 -0
  70. package/dist/cli/templates/database/index.d.ts.map +1 -0
  71. package/dist/cli/templates/database/index.js +49 -0
  72. package/dist/cli/templates/database/index.js.map +1 -0
  73. package/dist/cli/templates/database/mysql.d.ts +6 -0
  74. package/dist/cli/templates/database/mysql.d.ts.map +1 -0
  75. package/dist/cli/templates/database/mysql.js +12 -0
  76. package/dist/cli/templates/database/mysql.js.map +1 -0
  77. package/dist/cli/templates/database/none.d.ts +8 -0
  78. package/dist/cli/templates/database/none.d.ts.map +1 -0
  79. package/dist/cli/templates/database/none.js +14 -0
  80. package/dist/cli/templates/database/none.js.map +1 -0
  81. package/dist/cli/templates/database/postgresql.d.ts +6 -0
  82. package/dist/cli/templates/database/postgresql.d.ts.map +1 -0
  83. package/dist/cli/templates/database/postgresql.js +12 -0
  84. package/dist/cli/templates/database/postgresql.js.map +1 -0
  85. package/dist/cli/templates/database/sqlite.d.ts +6 -0
  86. package/dist/cli/templates/database/sqlite.d.ts.map +1 -0
  87. package/dist/cli/templates/database/sqlite.js +12 -0
  88. package/dist/cli/templates/database/sqlite.js.map +1 -0
  89. package/dist/cli/templates/deploy.d.ts +41 -0
  90. package/dist/cli/templates/deploy.d.ts.map +1 -0
  91. package/dist/cli/templates/deploy.js +278 -0
  92. package/dist/cli/templates/deploy.js.map +1 -0
  93. package/dist/cli/templates/docker.d.ts +30 -0
  94. package/dist/cli/templates/docker.d.ts.map +1 -0
  95. package/dist/cli/templates/docker.js +298 -0
  96. package/dist/cli/templates/docker.js.map +1 -0
  97. package/dist/cli/templates/frontend/index.d.ts +25 -0
  98. package/dist/cli/templates/frontend/index.d.ts.map +1 -0
  99. package/dist/cli/templates/frontend/index.js +40 -0
  100. package/dist/cli/templates/frontend/index.js.map +1 -0
  101. package/dist/cli/templates/frontend/none.d.ts +8 -0
  102. package/dist/cli/templates/frontend/none.d.ts.map +1 -0
  103. package/dist/cli/templates/frontend/none.js +15 -0
  104. package/dist/cli/templates/frontend/none.js.map +1 -0
  105. package/dist/cli/templates/frontend/react.d.ts +6 -0
  106. package/dist/cli/templates/frontend/react.d.ts.map +1 -0
  107. package/dist/cli/templates/frontend/react.js +139 -0
  108. package/dist/cli/templates/frontend/react.js.map +1 -0
  109. package/dist/cli/templates/frontend/solid.d.ts +6 -0
  110. package/dist/cli/templates/frontend/solid.d.ts.map +1 -0
  111. package/dist/cli/templates/frontend/solid.js +133 -0
  112. package/dist/cli/templates/frontend/solid.js.map +1 -0
  113. package/dist/cli/templates/frontend/svelte.d.ts +6 -0
  114. package/dist/cli/templates/frontend/svelte.d.ts.map +1 -0
  115. package/dist/cli/templates/frontend/svelte.js +130 -0
  116. package/dist/cli/templates/frontend/svelte.js.map +1 -0
  117. package/dist/cli/templates/frontend/vue.d.ts +6 -0
  118. package/dist/cli/templates/frontend/vue.d.ts.map +1 -0
  119. package/dist/cli/templates/frontend/vue.js +129 -0
  120. package/dist/cli/templates/frontend/vue.js.map +1 -0
  121. package/dist/cli/templates/generators/index.d.ts +29 -0
  122. package/dist/cli/templates/generators/index.d.ts.map +1 -0
  123. package/dist/cli/templates/generators/index.js +308 -0
  124. package/dist/cli/templates/generators/index.js.map +1 -0
  125. package/dist/cli/templates/generators/types.d.ts +32 -0
  126. package/dist/cli/templates/generators/types.d.ts.map +1 -0
  127. package/dist/cli/templates/generators/types.js +21 -0
  128. package/dist/cli/templates/generators/types.js.map +1 -0
  129. package/dist/cli/templates/index.d.ts +12 -0
  130. package/dist/cli/templates/index.d.ts.map +1 -0
  131. package/dist/cli/templates/index.js +18 -0
  132. package/dist/cli/templates/index.js.map +1 -0
  133. package/dist/cli/templates/project/api.d.ts +6 -0
  134. package/dist/cli/templates/project/api.d.ts.map +1 -0
  135. package/dist/cli/templates/project/api.js +79 -0
  136. package/dist/cli/templates/project/api.js.map +1 -0
  137. package/dist/cli/templates/project/default.d.ts +6 -0
  138. package/dist/cli/templates/project/default.d.ts.map +1 -0
  139. package/dist/cli/templates/project/default.js +136 -0
  140. package/dist/cli/templates/project/default.js.map +1 -0
  141. package/dist/cli/templates/project/fullstack.d.ts +14 -0
  142. package/dist/cli/templates/project/fullstack.d.ts.map +1 -0
  143. package/dist/cli/templates/project/fullstack.js +19 -0
  144. package/dist/cli/templates/project/fullstack.js.map +1 -0
  145. package/dist/cli/templates/project/index.d.ts +26 -0
  146. package/dist/cli/templates/project/index.d.ts.map +1 -0
  147. package/dist/cli/templates/project/index.js +60 -0
  148. package/dist/cli/templates/project/index.js.map +1 -0
  149. package/dist/cli/templates/project/minimal.d.ts +6 -0
  150. package/dist/cli/templates/project/minimal.d.ts.map +1 -0
  151. package/dist/cli/templates/project/minimal.js +43 -0
  152. package/dist/cli/templates/project/minimal.js.map +1 -0
  153. package/dist/cli/templates/project/types.d.ts +80 -0
  154. package/dist/cli/templates/project/types.d.ts.map +1 -0
  155. package/dist/cli/templates/project/types.js +7 -0
  156. package/dist/cli/templates/project/types.js.map +1 -0
  157. package/dist/cli/templates/project/website.d.ts +8 -0
  158. package/dist/cli/templates/project/website.d.ts.map +1 -0
  159. package/dist/cli/templates/project/website.js +312 -0
  160. package/dist/cli/templates/project/website.js.map +1 -0
  161. package/dist/cli/utils/fs.d.ts +137 -0
  162. package/dist/cli/utils/fs.d.ts.map +1 -0
  163. package/dist/cli/utils/fs.js +350 -0
  164. package/dist/cli/utils/fs.js.map +1 -0
  165. package/dist/cli/utils/index.d.ts +9 -0
  166. package/dist/cli/utils/index.d.ts.map +1 -0
  167. package/dist/cli/utils/index.js +9 -0
  168. package/dist/cli/utils/index.js.map +1 -0
  169. package/dist/cli/utils/strings.d.ts +86 -0
  170. package/dist/cli/utils/strings.d.ts.map +1 -0
  171. package/dist/cli/utils/strings.js +190 -0
  172. package/dist/cli/utils/strings.js.map +1 -0
  173. package/dist/cli/utils/version.d.ts +15 -0
  174. package/dist/cli/utils/version.d.ts.map +1 -0
  175. package/dist/cli/utils/version.js +38 -0
  176. package/dist/cli/utils/version.js.map +1 -0
  177. package/dist/config/env-validation.d.ts +49 -0
  178. package/dist/config/env-validation.d.ts.map +1 -0
  179. package/dist/config/env-validation.js +77 -0
  180. package/dist/config/env-validation.js.map +1 -0
  181. package/dist/config/env.d.ts +167 -0
  182. package/dist/config/env.d.ts.map +1 -0
  183. package/dist/config/env.js +392 -0
  184. package/dist/config/env.js.map +1 -0
  185. package/dist/config/index.d.ts +168 -0
  186. package/dist/config/index.d.ts.map +1 -0
  187. package/dist/config/index.js +329 -0
  188. package/dist/config/index.js.map +1 -0
  189. package/dist/config/loader.d.ts +81 -0
  190. package/dist/config/loader.d.ts.map +1 -0
  191. package/dist/config/loader.js +242 -0
  192. package/dist/config/loader.js.map +1 -0
  193. package/dist/config/merge.d.ts +66 -0
  194. package/dist/config/merge.d.ts.map +1 -0
  195. package/dist/config/merge.js +226 -0
  196. package/dist/config/merge.js.map +1 -0
  197. package/dist/config/types.d.ts +322 -0
  198. package/dist/config/types.d.ts.map +1 -0
  199. package/dist/config/types.js +443 -0
  200. package/dist/config/types.js.map +1 -0
  201. package/dist/config/validation.d.ts +100 -0
  202. package/dist/config/validation.d.ts.map +1 -0
  203. package/dist/config/validation.js +548 -0
  204. package/dist/config/validation.js.map +1 -0
  205. package/dist/container/forward-ref.d.ts +116 -0
  206. package/dist/container/forward-ref.d.ts.map +1 -0
  207. package/dist/container/forward-ref.js +105 -0
  208. package/dist/container/forward-ref.js.map +1 -0
  209. package/dist/container/index.d.ts +95 -0
  210. package/dist/container/index.d.ts.map +1 -0
  211. package/dist/container/index.js.map +1 -0
  212. package/dist/context/index.d.ts +143 -0
  213. package/dist/context/index.d.ts.map +1 -0
  214. package/dist/context/index.js.map +1 -0
  215. package/dist/database/index.d.ts +219 -0
  216. package/dist/database/index.d.ts.map +1 -0
  217. package/dist/database/index.js.map +1 -0
  218. package/dist/database/migrations/index.d.ts +151 -0
  219. package/dist/database/migrations/index.d.ts.map +1 -0
  220. package/dist/database/migrations/index.js +258 -0
  221. package/dist/database/migrations/index.js.map +1 -0
  222. package/dist/database/orm/builder.d.ts +122 -0
  223. package/dist/database/orm/builder.d.ts.map +1 -0
  224. package/dist/database/orm/builder.js +355 -0
  225. package/dist/database/orm/builder.js.map +1 -0
  226. package/dist/database/orm/casts/index.d.ts +16 -0
  227. package/dist/database/orm/casts/index.d.ts.map +1 -0
  228. package/dist/database/orm/casts/index.js +131 -0
  229. package/dist/database/orm/casts/index.js.map +1 -0
  230. package/dist/database/orm/casts/types.d.ts +16 -0
  231. package/dist/database/orm/casts/types.d.ts.map +1 -0
  232. package/dist/database/orm/casts/types.js +5 -0
  233. package/dist/database/orm/casts/types.js.map +1 -0
  234. package/dist/database/orm/compiler.d.ts +90 -0
  235. package/dist/database/orm/compiler.d.ts.map +1 -0
  236. package/dist/database/orm/compiler.js +218 -0
  237. package/dist/database/orm/compiler.js.map +1 -0
  238. package/dist/database/orm/hooks/index.d.ts +53 -0
  239. package/dist/database/orm/hooks/index.d.ts.map +1 -0
  240. package/dist/database/orm/hooks/index.js +81 -0
  241. package/dist/database/orm/hooks/index.js.map +1 -0
  242. package/dist/database/orm/index.d.ts +21 -0
  243. package/dist/database/orm/index.d.ts.map +1 -0
  244. package/dist/database/orm/index.js +23 -0
  245. package/dist/database/orm/index.js.map +1 -0
  246. package/dist/database/orm/model-registry.d.ts +33 -0
  247. package/dist/database/orm/model-registry.d.ts.map +1 -0
  248. package/dist/database/orm/model-registry.js +49 -0
  249. package/dist/database/orm/model-registry.js.map +1 -0
  250. package/dist/database/orm/model.d.ts +245 -0
  251. package/dist/database/orm/model.d.ts.map +1 -0
  252. package/dist/database/orm/model.js +599 -0
  253. package/dist/database/orm/model.js.map +1 -0
  254. package/dist/database/orm/relationships/base.d.ts +69 -0
  255. package/dist/database/orm/relationships/base.d.ts.map +1 -0
  256. package/dist/database/orm/relationships/base.js +84 -0
  257. package/dist/database/orm/relationships/base.js.map +1 -0
  258. package/dist/database/orm/relationships/belongs-to-many.d.ts +47 -0
  259. package/dist/database/orm/relationships/belongs-to-many.d.ts.map +1 -0
  260. package/dist/database/orm/relationships/belongs-to-many.js +136 -0
  261. package/dist/database/orm/relationships/belongs-to-many.js.map +1 -0
  262. package/dist/database/orm/relationships/belongs-to.d.ts +17 -0
  263. package/dist/database/orm/relationships/belongs-to.d.ts.map +1 -0
  264. package/dist/database/orm/relationships/belongs-to.js +38 -0
  265. package/dist/database/orm/relationships/belongs-to.js.map +1 -0
  266. package/dist/database/orm/relationships/has-many.d.ts +14 -0
  267. package/dist/database/orm/relationships/has-many.d.ts.map +1 -0
  268. package/dist/database/orm/relationships/has-many.js +35 -0
  269. package/dist/database/orm/relationships/has-many.js.map +1 -0
  270. package/dist/database/orm/relationships/has-one.d.ts +14 -0
  271. package/dist/database/orm/relationships/has-one.d.ts.map +1 -0
  272. package/dist/database/orm/relationships/has-one.js +32 -0
  273. package/dist/database/orm/relationships/has-one.js.map +1 -0
  274. package/dist/database/orm/relationships/index.d.ts +10 -0
  275. package/dist/database/orm/relationships/index.d.ts.map +1 -0
  276. package/dist/database/orm/relationships/index.js +9 -0
  277. package/dist/database/orm/relationships/index.js.map +1 -0
  278. package/dist/database/orm/scopes/index.d.ts +36 -0
  279. package/dist/database/orm/scopes/index.d.ts.map +1 -0
  280. package/dist/database/orm/scopes/index.js +47 -0
  281. package/dist/database/orm/scopes/index.js.map +1 -0
  282. package/dist/database/schema/index.d.ts +155 -0
  283. package/dist/database/schema/index.d.ts.map +1 -0
  284. package/dist/database/schema/index.js +401 -0
  285. package/dist/database/schema/index.js.map +1 -0
  286. package/dist/frontend/api-routes.d.ts +189 -0
  287. package/dist/frontend/api-routes.d.ts.map +1 -0
  288. package/dist/frontend/api-routes.js +548 -0
  289. package/dist/frontend/api-routes.js.map +1 -0
  290. package/dist/frontend/bundler.d.ts +99 -0
  291. package/dist/frontend/bundler.d.ts.map +1 -0
  292. package/dist/frontend/bundler.js +555 -0
  293. package/dist/frontend/bundler.js.map +1 -0
  294. package/dist/frontend/console-client.d.ts +11 -0
  295. package/dist/frontend/console-client.d.ts.map +1 -0
  296. package/dist/frontend/console-client.js +414 -0
  297. package/dist/frontend/console-client.js.map +1 -0
  298. package/dist/frontend/console-stream.d.ts +138 -0
  299. package/dist/frontend/console-stream.d.ts.map +1 -0
  300. package/dist/frontend/console-stream.js +535 -0
  301. package/dist/frontend/console-stream.js.map +1 -0
  302. package/dist/frontend/dev-server.d.ts +174 -0
  303. package/dist/frontend/dev-server.d.ts.map +1 -0
  304. package/dist/frontend/dev-server.js +735 -0
  305. package/dist/frontend/dev-server.js.map +1 -0
  306. package/dist/frontend/file-router.d.ts +170 -0
  307. package/dist/frontend/file-router.d.ts.map +1 -0
  308. package/dist/frontend/file-router.js +531 -0
  309. package/dist/frontend/file-router.js.map +1 -0
  310. package/dist/frontend/frameworks/index.d.ts +41 -0
  311. package/dist/frontend/frameworks/index.d.ts.map +1 -0
  312. package/dist/frontend/frameworks/index.js +87 -0
  313. package/dist/frontend/frameworks/index.js.map +1 -0
  314. package/dist/frontend/frameworks/react.d.ts +32 -0
  315. package/dist/frontend/frameworks/react.d.ts.map +1 -0
  316. package/dist/frontend/frameworks/react.js +66 -0
  317. package/dist/frontend/frameworks/react.js.map +1 -0
  318. package/dist/frontend/frameworks/solid.d.ts +42 -0
  319. package/dist/frontend/frameworks/solid.d.ts.map +1 -0
  320. package/dist/frontend/frameworks/solid.js +84 -0
  321. package/dist/frontend/frameworks/solid.js.map +1 -0
  322. package/dist/frontend/frameworks/svelte.d.ts +57 -0
  323. package/dist/frontend/frameworks/svelte.d.ts.map +1 -0
  324. package/dist/frontend/frameworks/svelte.js +90 -0
  325. package/dist/frontend/frameworks/svelte.js.map +1 -0
  326. package/dist/frontend/frameworks/vue.d.ts +36 -0
  327. package/dist/frontend/frameworks/vue.d.ts.map +1 -0
  328. package/dist/frontend/frameworks/vue.js +72 -0
  329. package/dist/frontend/frameworks/vue.js.map +1 -0
  330. package/dist/frontend/hmr-client.d.ts +22 -0
  331. package/dist/frontend/hmr-client.d.ts.map +1 -0
  332. package/dist/frontend/hmr-client.js +654 -0
  333. package/dist/frontend/hmr-client.js.map +1 -0
  334. package/dist/frontend/hmr.d.ts +185 -0
  335. package/dist/frontend/hmr.d.ts.map +1 -0
  336. package/dist/frontend/hmr.js +619 -0
  337. package/dist/frontend/hmr.js.map +1 -0
  338. package/dist/frontend/index.d.ts +34 -0
  339. package/dist/frontend/index.d.ts.map +1 -0
  340. package/dist/frontend/index.js.map +1 -0
  341. package/dist/frontend/islands.d.ts +135 -0
  342. package/dist/frontend/islands.d.ts.map +1 -0
  343. package/dist/frontend/islands.js +455 -0
  344. package/dist/frontend/islands.js.map +1 -0
  345. package/dist/frontend/isr.d.ts +143 -0
  346. package/dist/frontend/isr.d.ts.map +1 -0
  347. package/dist/frontend/isr.js +440 -0
  348. package/dist/frontend/isr.js.map +1 -0
  349. package/dist/frontend/layout.d.ts +140 -0
  350. package/dist/frontend/layout.d.ts.map +1 -0
  351. package/dist/frontend/layout.js +392 -0
  352. package/dist/frontend/layout.js.map +1 -0
  353. package/dist/frontend/ssr/react.d.ts +118 -0
  354. package/dist/frontend/ssr/react.d.ts.map +1 -0
  355. package/dist/frontend/ssr/react.js +373 -0
  356. package/dist/frontend/ssr/react.js.map +1 -0
  357. package/dist/frontend/ssr/solid.d.ts +141 -0
  358. package/dist/frontend/ssr/solid.d.ts.map +1 -0
  359. package/dist/frontend/ssr/solid.js +440 -0
  360. package/dist/frontend/ssr/solid.js.map +1 -0
  361. package/dist/frontend/ssr/svelte.d.ts +158 -0
  362. package/dist/frontend/ssr/svelte.d.ts.map +1 -0
  363. package/dist/frontend/ssr/svelte.js +439 -0
  364. package/dist/frontend/ssr/svelte.js.map +1 -0
  365. package/dist/frontend/ssr/vue.d.ts +161 -0
  366. package/dist/frontend/ssr/vue.d.ts.map +1 -0
  367. package/dist/frontend/ssr/vue.js +385 -0
  368. package/dist/frontend/ssr/vue.js.map +1 -0
  369. package/dist/frontend/ssr.d.ts +147 -0
  370. package/dist/frontend/ssr.d.ts.map +1 -0
  371. package/dist/frontend/ssr.js +609 -0
  372. package/dist/frontend/ssr.js.map +1 -0
  373. package/dist/frontend/types.d.ts +1902 -0
  374. package/dist/frontend/types.d.ts.map +1 -0
  375. package/dist/frontend/types.js +8 -0
  376. package/dist/frontend/types.js.map +1 -0
  377. package/dist/graphql/built-in-engine.d.ts +36 -0
  378. package/dist/graphql/built-in-engine.d.ts.map +1 -0
  379. package/dist/graphql/built-in-engine.js +443 -0
  380. package/dist/graphql/built-in-engine.js.map +1 -0
  381. package/dist/graphql/context-builder.d.ts +44 -0
  382. package/dist/graphql/context-builder.d.ts.map +1 -0
  383. package/dist/graphql/context-builder.js +91 -0
  384. package/dist/graphql/context-builder.js.map +1 -0
  385. package/dist/graphql/decorators.d.ts +162 -0
  386. package/dist/graphql/decorators.d.ts.map +1 -0
  387. package/dist/graphql/decorators.js +291 -0
  388. package/dist/graphql/decorators.js.map +1 -0
  389. package/dist/graphql/execution-pipeline.d.ts +67 -0
  390. package/dist/graphql/execution-pipeline.d.ts.map +1 -0
  391. package/dist/graphql/execution-pipeline.js +127 -0
  392. package/dist/graphql/execution-pipeline.js.map +1 -0
  393. package/dist/graphql/graphql-module.d.ts +70 -0
  394. package/dist/graphql/graphql-module.d.ts.map +1 -0
  395. package/dist/graphql/graphql-module.js +442 -0
  396. package/dist/graphql/graphql-module.js.map +1 -0
  397. package/dist/graphql/index.d.ts +48 -0
  398. package/dist/graphql/index.d.ts.map +1 -0
  399. package/dist/graphql/index.js.map +1 -0
  400. package/dist/graphql/metadata.d.ts +37 -0
  401. package/dist/graphql/metadata.d.ts.map +1 -0
  402. package/dist/graphql/metadata.js +130 -0
  403. package/dist/graphql/metadata.js.map +1 -0
  404. package/dist/graphql/schema-builder.d.ts +34 -0
  405. package/dist/graphql/schema-builder.d.ts.map +1 -0
  406. package/dist/graphql/schema-builder.js +251 -0
  407. package/dist/graphql/schema-builder.js.map +1 -0
  408. package/dist/graphql/subscription-handler.d.ts +47 -0
  409. package/dist/graphql/subscription-handler.d.ts.map +1 -0
  410. package/dist/graphql/subscription-handler.js +201 -0
  411. package/dist/graphql/subscription-handler.js.map +1 -0
  412. package/dist/graphql/types.d.ts +252 -0
  413. package/dist/graphql/types.d.ts.map +1 -0
  414. package/dist/graphql/types.js +28 -0
  415. package/dist/graphql/types.js.map +1 -0
  416. package/dist/health/index.d.ts +176 -0
  417. package/dist/health/index.d.ts.map +1 -0
  418. package/dist/health/index.js.map +1 -0
  419. package/dist/i18n/engine.d.ts +105 -0
  420. package/dist/i18n/engine.d.ts.map +1 -0
  421. package/dist/i18n/engine.js +248 -0
  422. package/dist/i18n/engine.js.map +1 -0
  423. package/dist/i18n/index.d.ts +13 -0
  424. package/dist/i18n/index.d.ts.map +1 -0
  425. package/dist/i18n/index.js.map +1 -0
  426. package/dist/i18n/loader.d.ts +79 -0
  427. package/dist/i18n/loader.d.ts.map +1 -0
  428. package/dist/i18n/loader.js +192 -0
  429. package/dist/i18n/loader.js.map +1 -0
  430. package/dist/i18n/middleware.d.ts +96 -0
  431. package/dist/i18n/middleware.d.ts.map +1 -0
  432. package/dist/i18n/middleware.js +126 -0
  433. package/dist/i18n/middleware.js.map +1 -0
  434. package/dist/i18n/negotiator.d.ts +84 -0
  435. package/dist/i18n/negotiator.d.ts.map +1 -0
  436. package/dist/i18n/negotiator.js +139 -0
  437. package/dist/i18n/negotiator.js.map +1 -0
  438. package/dist/i18n/types.d.ts +129 -0
  439. package/dist/i18n/types.d.ts.map +1 -0
  440. package/dist/i18n/types.js +8 -0
  441. package/dist/i18n/types.js.map +1 -0
  442. package/dist/index.d.ts +48 -0
  443. package/dist/index.d.ts.map +1 -0
  444. package/dist/index.js.map +1 -0
  445. package/dist/jobs/drivers/memory.d.ts +38 -0
  446. package/dist/jobs/drivers/memory.d.ts.map +1 -0
  447. package/dist/jobs/drivers/memory.js +246 -0
  448. package/dist/jobs/drivers/memory.js.map +1 -0
  449. package/dist/jobs/drivers/redis.d.ts +34 -0
  450. package/dist/jobs/drivers/redis.d.ts.map +1 -0
  451. package/dist/jobs/drivers/redis.js +355 -0
  452. package/dist/jobs/drivers/redis.js.map +1 -0
  453. package/dist/jobs/index.d.ts +12 -0
  454. package/dist/jobs/index.d.ts.map +1 -0
  455. package/dist/jobs/index.js.map +1 -0
  456. package/dist/jobs/queue.d.ts +93 -0
  457. package/dist/jobs/queue.d.ts.map +1 -0
  458. package/dist/jobs/queue.js +233 -0
  459. package/dist/jobs/queue.js.map +1 -0
  460. package/dist/jobs/types.d.ts +193 -0
  461. package/dist/jobs/types.d.ts.map +1 -0
  462. package/dist/jobs/types.js +8 -0
  463. package/dist/jobs/types.js.map +1 -0
  464. package/dist/jobs/worker.d.ts +91 -0
  465. package/dist/jobs/worker.d.ts.map +1 -0
  466. package/dist/jobs/worker.js +300 -0
  467. package/dist/jobs/worker.js.map +1 -0
  468. package/dist/lock/index.d.ts +141 -0
  469. package/dist/lock/index.d.ts.map +1 -0
  470. package/dist/lock/index.js.map +1 -0
  471. package/dist/logger/index.d.ts +156 -0
  472. package/dist/logger/index.d.ts.map +1 -0
  473. package/dist/logger/index.js.map +1 -0
  474. package/dist/logger/transports/index.d.ts +371 -0
  475. package/dist/logger/transports/index.d.ts.map +1 -0
  476. package/dist/logger/transports/index.js +740 -0
  477. package/dist/logger/transports/index.js.map +1 -0
  478. package/dist/metrics/index.d.ts +163 -0
  479. package/dist/metrics/index.d.ts.map +1 -0
  480. package/dist/metrics/index.js.map +1 -0
  481. package/dist/middleware/built-in.d.ts +50 -0
  482. package/dist/middleware/built-in.d.ts.map +1 -0
  483. package/dist/middleware/built-in.js +220 -0
  484. package/dist/middleware/built-in.js.map +1 -0
  485. package/dist/middleware/index.d.ts +40 -0
  486. package/dist/middleware/index.d.ts.map +1 -0
  487. package/dist/middleware/index.js.map +1 -0
  488. package/dist/migrations/index.d.ts +48 -0
  489. package/dist/migrations/index.d.ts.map +1 -0
  490. package/dist/migrations/index.js +3 -0
  491. package/dist/migrations/index.js.map +1 -0
  492. package/dist/modules/filters.d.ts +150 -0
  493. package/dist/modules/filters.d.ts.map +1 -0
  494. package/dist/modules/filters.js +338 -0
  495. package/dist/modules/filters.js.map +1 -0
  496. package/dist/modules/guards.d.ts +188 -0
  497. package/dist/modules/guards.d.ts.map +1 -0
  498. package/dist/modules/guards.js +278 -0
  499. package/dist/modules/guards.js.map +1 -0
  500. package/dist/modules/index.d.ts +266 -0
  501. package/dist/modules/index.d.ts.map +1 -0
  502. package/dist/modules/index.js.map +1 -0
  503. package/dist/modules/interceptors.d.ts +242 -0
  504. package/dist/modules/interceptors.d.ts.map +1 -0
  505. package/dist/modules/interceptors.js +407 -0
  506. package/dist/modules/interceptors.js.map +1 -0
  507. package/dist/modules/lazy.d.ts +187 -0
  508. package/dist/modules/lazy.d.ts.map +1 -0
  509. package/dist/modules/lazy.js +305 -0
  510. package/dist/modules/lazy.js.map +1 -0
  511. package/dist/modules/lifecycle.d.ts +221 -0
  512. package/dist/modules/lifecycle.d.ts.map +1 -0
  513. package/dist/modules/lifecycle.js +314 -0
  514. package/dist/modules/lifecycle.js.map +1 -0
  515. package/dist/modules/metadata.d.ts +32 -0
  516. package/dist/modules/metadata.d.ts.map +1 -0
  517. package/dist/modules/metadata.js +59 -0
  518. package/dist/modules/metadata.js.map +1 -0
  519. package/dist/modules/pipes.d.ts +287 -0
  520. package/dist/modules/pipes.d.ts.map +1 -0
  521. package/dist/modules/pipes.js +443 -0
  522. package/dist/modules/pipes.js.map +1 -0
  523. package/dist/notification/channels/base.d.ts +32 -0
  524. package/dist/notification/channels/base.d.ts.map +1 -0
  525. package/dist/notification/channels/base.js +37 -0
  526. package/dist/notification/channels/base.js.map +1 -0
  527. package/dist/notification/channels/email.d.ts +37 -0
  528. package/dist/notification/channels/email.d.ts.map +1 -0
  529. package/dist/notification/channels/email.js +85 -0
  530. package/dist/notification/channels/email.js.map +1 -0
  531. package/dist/notification/channels/push.d.ts +37 -0
  532. package/dist/notification/channels/push.d.ts.map +1 -0
  533. package/dist/notification/channels/push.js +84 -0
  534. package/dist/notification/channels/push.js.map +1 -0
  535. package/dist/notification/channels/sms.d.ts +37 -0
  536. package/dist/notification/channels/sms.d.ts.map +1 -0
  537. package/dist/notification/channels/sms.js +83 -0
  538. package/dist/notification/channels/sms.js.map +1 -0
  539. package/dist/notification/channels/whatsapp.d.ts +37 -0
  540. package/dist/notification/channels/whatsapp.d.ts.map +1 -0
  541. package/dist/notification/channels/whatsapp.js +81 -0
  542. package/dist/notification/channels/whatsapp.js.map +1 -0
  543. package/dist/notification/index.d.ts +15 -0
  544. package/dist/notification/index.d.ts.map +1 -0
  545. package/dist/notification/index.js.map +1 -0
  546. package/dist/notification/service.d.ts +100 -0
  547. package/dist/notification/service.d.ts.map +1 -0
  548. package/dist/notification/service.js +279 -0
  549. package/dist/notification/service.js.map +1 -0
  550. package/dist/notification/types.d.ts +253 -0
  551. package/dist/notification/types.d.ts.map +1 -0
  552. package/dist/notification/types.js +14 -0
  553. package/dist/notification/types.js.map +1 -0
  554. package/dist/observability/__tests__/observability.test.d.ts +2 -0
  555. package/dist/observability/__tests__/observability.test.d.ts.map +1 -0
  556. package/dist/observability/__tests__/observability.test.js +404 -0
  557. package/dist/observability/__tests__/observability.test.js.map +1 -0
  558. package/dist/observability/breadcrumbs.d.ts +48 -0
  559. package/dist/observability/breadcrumbs.d.ts.map +1 -0
  560. package/dist/observability/breadcrumbs.js +97 -0
  561. package/dist/observability/breadcrumbs.js.map +1 -0
  562. package/dist/observability/index.d.ts +95 -0
  563. package/dist/observability/index.d.ts.map +1 -0
  564. package/dist/observability/index.js.map +1 -0
  565. package/dist/observability/interceptor.d.ts +19 -0
  566. package/dist/observability/interceptor.d.ts.map +1 -0
  567. package/dist/observability/interceptor.js +67 -0
  568. package/dist/observability/interceptor.js.map +1 -0
  569. package/dist/observability/service.d.ts +101 -0
  570. package/dist/observability/service.d.ts.map +1 -0
  571. package/dist/observability/service.js +249 -0
  572. package/dist/observability/service.js.map +1 -0
  573. package/dist/observability/trace.d.ts +21 -0
  574. package/dist/observability/trace.d.ts.map +1 -0
  575. package/dist/observability/trace.js +35 -0
  576. package/dist/observability/trace.js.map +1 -0
  577. package/dist/observability/types.d.ts +172 -0
  578. package/dist/observability/types.d.ts.map +1 -0
  579. package/dist/observability/types.js +8 -0
  580. package/dist/observability/types.js.map +1 -0
  581. package/dist/openapi/decorators.d.ts +173 -0
  582. package/dist/openapi/decorators.d.ts.map +1 -0
  583. package/dist/openapi/decorators.js +276 -0
  584. package/dist/openapi/decorators.js.map +1 -0
  585. package/dist/openapi/document-builder.d.ts +82 -0
  586. package/dist/openapi/document-builder.d.ts.map +1 -0
  587. package/dist/openapi/document-builder.js +228 -0
  588. package/dist/openapi/document-builder.js.map +1 -0
  589. package/dist/openapi/index.d.ts +48 -0
  590. package/dist/openapi/index.d.ts.map +1 -0
  591. package/dist/openapi/index.js.map +1 -0
  592. package/dist/openapi/metadata.d.ts +36 -0
  593. package/dist/openapi/metadata.d.ts.map +1 -0
  594. package/dist/openapi/metadata.js +78 -0
  595. package/dist/openapi/metadata.js.map +1 -0
  596. package/dist/openapi/route-scanner.d.ts +34 -0
  597. package/dist/openapi/route-scanner.d.ts.map +1 -0
  598. package/dist/openapi/route-scanner.js +174 -0
  599. package/dist/openapi/route-scanner.js.map +1 -0
  600. package/dist/openapi/schema-generator.d.ts +53 -0
  601. package/dist/openapi/schema-generator.d.ts.map +1 -0
  602. package/dist/openapi/schema-generator.js +236 -0
  603. package/dist/openapi/schema-generator.js.map +1 -0
  604. package/dist/openapi/swagger-module.d.ts +57 -0
  605. package/dist/openapi/swagger-module.d.ts.map +1 -0
  606. package/dist/openapi/swagger-module.js +143 -0
  607. package/dist/openapi/swagger-module.js.map +1 -0
  608. package/dist/openapi/types.d.ts +344 -0
  609. package/dist/openapi/types.d.ts.map +1 -0
  610. package/dist/openapi/types.js +7 -0
  611. package/dist/openapi/types.js.map +1 -0
  612. package/dist/orm/index.d.ts +10 -0
  613. package/dist/orm/index.d.ts.map +1 -0
  614. package/dist/orm/index.js.map +1 -0
  615. package/dist/router/index.d.ts +73 -0
  616. package/dist/router/index.d.ts.map +1 -0
  617. package/dist/router/index.js.map +1 -0
  618. package/dist/router/linear.d.ts +54 -0
  619. package/dist/router/linear.d.ts.map +1 -0
  620. package/dist/router/linear.js +261 -0
  621. package/dist/router/linear.js.map +1 -0
  622. package/dist/router/regex.d.ts +49 -0
  623. package/dist/router/regex.d.ts.map +1 -0
  624. package/dist/router/regex.js +201 -0
  625. package/dist/router/regex.js.map +1 -0
  626. package/dist/router/tree.d.ts +112 -0
  627. package/dist/router/tree.d.ts.map +1 -0
  628. package/dist/router/tree.js +360 -0
  629. package/dist/router/tree.js.map +1 -0
  630. package/dist/rpc/index.d.ts +321 -0
  631. package/dist/rpc/index.d.ts.map +1 -0
  632. package/dist/rpc/index.js.map +1 -0
  633. package/dist/schema/index.d.ts +10 -0
  634. package/dist/schema/index.d.ts.map +1 -0
  635. package/dist/schema/index.js.map +1 -0
  636. package/dist/security/index.d.ts +126 -0
  637. package/dist/security/index.d.ts.map +1 -0
  638. package/dist/security/index.js +309 -0
  639. package/dist/security/index.js.map +1 -0
  640. package/dist/ssg/index.d.ts +73 -0
  641. package/dist/ssg/index.d.ts.map +1 -0
  642. package/dist/ssg/index.js +464 -0
  643. package/dist/ssg/index.js.map +1 -0
  644. package/dist/storage/index.d.ts +99 -0
  645. package/dist/storage/index.d.ts.map +1 -0
  646. package/dist/storage/index.js +338 -0
  647. package/dist/storage/index.js.map +1 -0
  648. package/dist/telemetry/index.d.ts +376 -0
  649. package/dist/telemetry/index.d.ts.map +1 -0
  650. package/dist/telemetry/index.js.map +1 -0
  651. package/dist/template/index.d.ts +7 -0
  652. package/dist/template/index.d.ts.map +1 -0
  653. package/dist/template/index.js.map +1 -0
  654. package/dist/templates/engine.d.ts +60 -0
  655. package/dist/templates/engine.d.ts.map +1 -0
  656. package/dist/templates/engine.js +177 -0
  657. package/dist/templates/engine.js.map +1 -0
  658. package/dist/templates/index.d.ts +9 -0
  659. package/dist/templates/index.d.ts.map +1 -0
  660. package/dist/templates/index.js.map +1 -0
  661. package/dist/templates/loader.d.ts +45 -0
  662. package/dist/templates/loader.d.ts.map +1 -0
  663. package/dist/templates/loader.js +274 -0
  664. package/dist/templates/loader.js.map +1 -0
  665. package/dist/templates/renderers/markdown.d.ts +46 -0
  666. package/dist/templates/renderers/markdown.d.ts.map +1 -0
  667. package/dist/templates/renderers/markdown.js +181 -0
  668. package/dist/templates/renderers/markdown.js.map +1 -0
  669. package/dist/templates/renderers/simple.d.ts +35 -0
  670. package/dist/templates/renderers/simple.d.ts.map +1 -0
  671. package/dist/templates/renderers/simple.js +245 -0
  672. package/dist/templates/renderers/simple.js.map +1 -0
  673. package/dist/templates/types.d.ts +138 -0
  674. package/dist/templates/types.d.ts.map +1 -0
  675. package/dist/templates/types.js +8 -0
  676. package/dist/templates/types.js.map +1 -0
  677. package/dist/testing/index.d.ts +539 -0
  678. package/dist/testing/index.d.ts.map +1 -0
  679. package/dist/testing/index.js.map +1 -0
  680. package/dist/types/index.d.ts +116 -0
  681. package/dist/types/index.d.ts.map +1 -0
  682. package/dist/types/index.js.map +1 -0
  683. package/dist/validation/index.d.ts +89 -0
  684. package/dist/validation/index.d.ts.map +1 -0
  685. package/dist/validation/index.js +276 -0
  686. package/dist/validation/index.js.map +1 -0
  687. package/dist/validation/schemas.d.ts +283 -0
  688. package/dist/validation/schemas.d.ts.map +1 -0
  689. package/dist/validation/schemas.js +407 -0
  690. package/dist/validation/schemas.js.map +1 -0
  691. package/dist/websocket/index.d.ts +252 -0
  692. package/dist/websocket/index.d.ts.map +1 -0
  693. package/dist/websocket/index.js +749 -0
  694. package/dist/websocket/index.js.map +1 -0
  695. package/package.json +3 -3
  696. package/src/database/migrations/index.ts +8 -0
  697. package/src/migrations/index.ts +40 -1
  698. package/src/types/index.ts +1 -1
  699. package/tsconfig.json +2 -6
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Configuration System for Bueno Framework
3
+ *
4
+ * Provides a comprehensive configuration system supporting:
5
+ * - `bueno.config.ts` file loading
6
+ * - Environment variables
7
+ * - Schema validation
8
+ * - Deep merging of config sources
9
+ */
10
+ // Re-export merge utilities
11
+ export { deepMerge, mergeConfigs, isObject } from "./merge";
12
+ // Re-export environment utilities
13
+ export { loadEnv, getEnvConfig, getEnvValue, setEnvValue, envConfigMapping, } from "./env";
14
+ // Re-export loader utilities
15
+ export { loadConfig, loadConfigFile, loadConfigFiles, findConfigFile, clearConfigCache, getCachedConfig, watchConfig, validateConfigStructure, getConfigPathFromArgs, getConfigPathFromEnv, } from "./loader";
16
+ // Re-export validation utilities
17
+ export { validateConfig, validateConfigSync, validateConfigDefaults, validateWithSchema, assertValidConfig, formatValidationErrors, createConfigError, createCustomValidator, isStandardSchema, } from "./validation";
18
+ import { getEnvConfig, loadEnv } from "./env";
19
+ import { clearConfigCache, findConfigFile, loadConfig } from "./loader";
20
+ import { deepMerge, mergeConfigs } from "./merge";
21
+ import { validateConfig, validateConfigSync, } from "./validation";
22
+ /**
23
+ * Default configuration values
24
+ */
25
+ const DEFAULT_CONFIG = {
26
+ server: {
27
+ port: 3000,
28
+ host: "localhost",
29
+ development: false,
30
+ },
31
+ database: {
32
+ url: undefined,
33
+ poolSize: 10,
34
+ enableMetrics: true,
35
+ slowQueryThreshold: 100,
36
+ },
37
+ cache: {
38
+ driver: "memory",
39
+ url: undefined,
40
+ ttl: 3600,
41
+ keyPrefix: "",
42
+ enableMetrics: true,
43
+ },
44
+ logger: {
45
+ level: "info",
46
+ pretty: false,
47
+ output: "console",
48
+ },
49
+ health: {
50
+ enabled: true,
51
+ healthPath: "/health",
52
+ readyPath: "/ready",
53
+ },
54
+ metrics: {
55
+ enabled: true,
56
+ collectInterval: 60000,
57
+ maxHistorySize: 100,
58
+ },
59
+ telemetry: {
60
+ enabled: false,
61
+ serviceName: "bueno-app",
62
+ endpoint: undefined,
63
+ sampleRate: 1.0,
64
+ },
65
+ frontend: {
66
+ devServer: false,
67
+ hmr: true,
68
+ port: 3001,
69
+ },
70
+ };
71
+ /**
72
+ * ConfigManager class
73
+ * Manages configuration loading, merging, validation, and access
74
+ */
75
+ export class ConfigManager {
76
+ config;
77
+ options;
78
+ loaded = false;
79
+ filePath;
80
+ watchers = [];
81
+ unwatch;
82
+ constructor(options = {}) {
83
+ this.options = options;
84
+ this.config = (options.useDefaults !== false ? { ...DEFAULT_CONFIG } : {});
85
+ // Apply initial config if provided
86
+ if (options.config) {
87
+ this.config = deepMerge(this.config, options.config);
88
+ }
89
+ }
90
+ /**
91
+ * Load configuration from all sources
92
+ * Order: defaults → file config → env vars → CLI args → provided config
93
+ */
94
+ async load() {
95
+ // Load environment variables
96
+ if (this.options.loadEnv !== false) {
97
+ loadEnv();
98
+ }
99
+ // Load config file
100
+ const { config: fileConfig, filePath } = await loadConfig({
101
+ configPath: this.options.configPath,
102
+ cwd: this.options.cwd,
103
+ });
104
+ this.filePath = filePath;
105
+ // Get environment config
106
+ const envConfig = getEnvConfig();
107
+ // Merge all sources
108
+ const merged = mergeConfigs({}, this.options.useDefaults !== false ? DEFAULT_CONFIG : {}, fileConfig, envConfig, this.options.config || {});
109
+ this.config = merged;
110
+ // Validate if requested
111
+ if (this.options.validate !== false) {
112
+ await this.validate(this.options.schema);
113
+ }
114
+ this.loaded = true;
115
+ return this.config;
116
+ }
117
+ /**
118
+ * Get the entire configuration
119
+ */
120
+ getAll() {
121
+ return { ...this.config };
122
+ }
123
+ get(key) {
124
+ const parts = key.split(".");
125
+ let current = this.config;
126
+ for (const part of parts) {
127
+ if (current === null || current === undefined) {
128
+ return undefined;
129
+ }
130
+ if (typeof current !== "object") {
131
+ return undefined;
132
+ }
133
+ current = current[part];
134
+ }
135
+ return current;
136
+ }
137
+ set(key, value) {
138
+ const parts = key.split(".");
139
+ let current = this.config;
140
+ for (let i = 0; i < parts.length - 1; i++) {
141
+ const part = parts[i];
142
+ if (!(part in current)) {
143
+ current[part] = {};
144
+ }
145
+ current = current[part];
146
+ }
147
+ current[parts[parts.length - 1]] = value;
148
+ // Notify watchers
149
+ this.notifyWatchers();
150
+ }
151
+ /**
152
+ * Check if a configuration key exists
153
+ */
154
+ has(key) {
155
+ return this.get(key) !== undefined;
156
+ }
157
+ /**
158
+ * Validate the current configuration
159
+ */
160
+ async validate(schema) {
161
+ const result = await validateConfig(this.config, schema);
162
+ if (!result.valid) {
163
+ const errors = result.errors
164
+ .map((e) => `${e.path ? e.path + ": " : ""}${e.message}`)
165
+ .join("\n");
166
+ throw new Error(`Configuration validation failed:\n${errors}`);
167
+ }
168
+ // Log warnings
169
+ for (const warning of result.warnings) {
170
+ console.warn(`Config warning: ${warning.message}${warning.path ? ` (at ${warning.path})` : ""}`);
171
+ }
172
+ return result;
173
+ }
174
+ /**
175
+ * Validate synchronously (only default rules)
176
+ */
177
+ validateSync() {
178
+ return validateConfigSync(this.config);
179
+ }
180
+ /**
181
+ * Watch for configuration changes
182
+ */
183
+ watch(callback) {
184
+ this.watchers.push(callback);
185
+ // Return unsubscribe function
186
+ return () => {
187
+ const index = this.watchers.indexOf(callback);
188
+ if (index !== -1) {
189
+ this.watchers.splice(index, 1);
190
+ }
191
+ };
192
+ }
193
+ /**
194
+ * Start watching the config file for changes
195
+ */
196
+ async watchFile() {
197
+ if (!this.filePath) {
198
+ this.filePath = await findConfigFile(this.options.cwd);
199
+ }
200
+ if (!this.filePath) {
201
+ return;
202
+ }
203
+ // Clear the cache to allow reloading
204
+ clearConfigCache();
205
+ // Set up polling for file changes
206
+ const { watchConfig } = await import("./loader");
207
+ this.unwatch = watchConfig(this.filePath, async () => {
208
+ await this.load();
209
+ }, { debounce: 100 });
210
+ }
211
+ /**
212
+ * Stop watching the config file
213
+ */
214
+ unwatchFile() {
215
+ if (this.unwatch) {
216
+ this.unwatch();
217
+ this.unwatch = undefined;
218
+ }
219
+ }
220
+ /**
221
+ * Check if config has been loaded
222
+ */
223
+ isLoaded() {
224
+ return this.loaded;
225
+ }
226
+ /**
227
+ * Get the config file path
228
+ */
229
+ getFilePath() {
230
+ return this.filePath;
231
+ }
232
+ /**
233
+ * Reset configuration to defaults
234
+ */
235
+ reset() {
236
+ this.config = { ...DEFAULT_CONFIG };
237
+ this.loaded = false;
238
+ this.notifyWatchers();
239
+ }
240
+ /**
241
+ * Merge additional configuration
242
+ */
243
+ merge(config) {
244
+ this.config = deepMerge(this.config, config);
245
+ this.notifyWatchers();
246
+ }
247
+ /**
248
+ * Notify all watchers of a change
249
+ */
250
+ notifyWatchers() {
251
+ for (const watcher of this.watchers) {
252
+ try {
253
+ watcher(this.config);
254
+ }
255
+ catch (error) {
256
+ console.error("Error in config watcher:", error);
257
+ }
258
+ }
259
+ }
260
+ }
261
+ /**
262
+ * Define configuration with type safety
263
+ * @example
264
+ * export default defineConfig({
265
+ * server: { port: 3000 },
266
+ * database: { url: process.env.DATABASE_URL },
267
+ * })
268
+ */
269
+ export function defineConfig(config) {
270
+ return config;
271
+ }
272
+ /**
273
+ * Define configuration with a function
274
+ * @example
275
+ * export default defineConfigFn((env) => ({
276
+ * server: { port: env.PORT ? parseInt(env.PORT) : 3000 },
277
+ * }))
278
+ */
279
+ export function defineConfigFn(fn) {
280
+ return fn;
281
+ }
282
+ /**
283
+ * Create a configuration manager
284
+ * @example
285
+ * const config = await createConfigManager();
286
+ * const port = config.get('server.port');
287
+ */
288
+ export async function createConfigManager(options) {
289
+ const manager = new ConfigManager(options);
290
+ await manager.load();
291
+ return manager;
292
+ }
293
+ /**
294
+ * Create a configuration manager without loading
295
+ * @example
296
+ * const config = createConfigManagerSync();
297
+ * // Later: await config.load();
298
+ */
299
+ export function createConfigManagerSync(options) {
300
+ return new ConfigManager(options);
301
+ }
302
+ /**
303
+ * Load configuration and return the config object directly
304
+ * @example
305
+ * const config = await loadConfigDirect();
306
+ * console.log(config.server?.port);
307
+ */
308
+ export async function loadConfigDirect(options) {
309
+ const manager = await createConfigManager(options);
310
+ return manager.getAll();
311
+ }
312
+ // Singleton instance for convenience
313
+ let defaultManager;
314
+ /**
315
+ * Get the default configuration manager
316
+ */
317
+ export function getConfigManager() {
318
+ if (!defaultManager) {
319
+ defaultManager = new ConfigManager();
320
+ }
321
+ return defaultManager;
322
+ }
323
+ /**
324
+ * Set the default configuration manager
325
+ */
326
+ export function setConfigManager(manager) {
327
+ defaultManager = manager;
328
+ }
329
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Configuration file loader for Bueno Framework
3
+ * Uses Bun's native TypeScript loader to import config files
4
+ */
5
+ import type { BuenoConfig, DeepPartial } from "./types";
6
+ /**
7
+ * Loaded configuration information
8
+ */
9
+ export interface LoadedConfig {
10
+ /** The loaded configuration */
11
+ config: DeepPartial<BuenoConfig>;
12
+ /** Path to the config file that was loaded */
13
+ filePath?: string;
14
+ /** Whether the config was loaded from cache */
15
+ fromCache: boolean;
16
+ }
17
+ /**
18
+ * Find the first existing config file
19
+ */
20
+ export declare function findConfigFile(cwd?: string): Promise<string | undefined>;
21
+ /**
22
+ * Clear the config cache
23
+ */
24
+ export declare function clearConfigCache(): void;
25
+ /**
26
+ * Get cached config
27
+ */
28
+ export declare function getCachedConfig(path: string): DeepPartial<BuenoConfig> | undefined;
29
+ /**
30
+ * Load a configuration file
31
+ * Supports both default exports and named exports
32
+ */
33
+ export declare function loadConfigFile<T extends BuenoConfig = BuenoConfig>(filePath: string, options?: {
34
+ /** Whether to use cache */
35
+ useCache?: boolean;
36
+ /** Additional context to pass to config function */
37
+ context?: Record<string, unknown>;
38
+ }): Promise<LoadedConfig>;
39
+ /**
40
+ * Load configuration from file
41
+ * Searches for config files in order and loads the first one found
42
+ */
43
+ export declare function loadConfig<T extends BuenoConfig = BuenoConfig>(options?: {
44
+ /** Custom config file path */
45
+ configPath?: string;
46
+ /** Working directory to search for config */
47
+ cwd?: string;
48
+ /** Whether to use cache */
49
+ useCache?: boolean;
50
+ /** Additional context to pass to config function */
51
+ context?: Record<string, unknown>;
52
+ }): Promise<LoadedConfig>;
53
+ /**
54
+ * Load and merge multiple config files
55
+ * Later files override earlier ones
56
+ */
57
+ export declare function loadConfigFiles(filePaths: string[], options?: {
58
+ /** Whether to use cache */
59
+ useCache?: boolean;
60
+ }): Promise<LoadedConfig>;
61
+ /**
62
+ * Watch a config file for changes
63
+ * Returns an unsubscribe function
64
+ */
65
+ export declare function watchConfig(filePath: string, callback: (config: DeepPartial<BuenoConfig>) => void, options?: {
66
+ /** Debounce time in milliseconds */
67
+ debounce?: number;
68
+ }): () => void;
69
+ /**
70
+ * Validate that a config object has the expected structure
71
+ */
72
+ export declare function validateConfigStructure(config: unknown): config is DeepPartial<BuenoConfig>;
73
+ /**
74
+ * Extract config file path from CLI args
75
+ */
76
+ export declare function getConfigPathFromArgs(args?: string[]): string | undefined;
77
+ /**
78
+ * Extract config file path from environment
79
+ */
80
+ export declare function getConfigPathFromEnv(): string | undefined;
81
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACX,WAAW,EACX,WAAW,EAGX,MAAM,SAAS,CAAC;AAajB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,+BAA+B;IAC/B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;CACnB;AAmBD;;GAEG;AACH,wBAAsB,cAAc,CACnC,GAAG,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,MAAM,GACV,WAAW,CAAC,WAAW,CAAC,GAAG,SAAS,CAEtC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EACvE,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACT,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GACC,OAAO,CAAC,YAAY,CAAC,CAwDvB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC/B,CAAC,SAAS,WAAW,GAAG,WAAW,EAClC,OAAO,CAAC,EAAE;IACX,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,GAAG,OAAO,CAAC,YAAY,CAAC,CAwBxB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACpC,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,CAAC,EAAE;IACT,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,GACC,OAAO,CAAC,YAAY,CAAC,CAsBvB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,IAAI,EACpD,OAAO,CAAC,EAAE;IACT,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,GACC,MAAM,IAAI,CAmCZ;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,OAAO,GACb,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC,CAyBpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,GAAE,MAAM,EAAiB,GAC3B,MAAM,GAAG,SAAS,CAapB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAEzD"}
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Configuration file loader for Bueno Framework
3
+ * Uses Bun's native TypeScript loader to import config files
4
+ */
5
+ import { deepMerge } from "./merge";
6
+ /**
7
+ * Configuration file search order
8
+ */
9
+ const CONFIG_FILES = [
10
+ "bueno.config.ts",
11
+ "bueno.config.js",
12
+ ".buenorc.ts",
13
+ ".buenorc.js",
14
+ "bueno.config.mjs",
15
+ ];
16
+ /**
17
+ * Config loader cache
18
+ */
19
+ const configCache = new Map();
20
+ /**
21
+ * Check if a file exists
22
+ */
23
+ async function fileExists(path) {
24
+ try {
25
+ const file = Bun.file(path);
26
+ return await file.exists();
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * Find the first existing config file
34
+ */
35
+ export async function findConfigFile(cwd) {
36
+ const baseDir = cwd ?? process.cwd();
37
+ for (const file of CONFIG_FILES) {
38
+ const filePath = `${baseDir}/${file}`;
39
+ if (await fileExists(filePath)) {
40
+ return filePath;
41
+ }
42
+ }
43
+ return undefined;
44
+ }
45
+ /**
46
+ * Clear the config cache
47
+ */
48
+ export function clearConfigCache() {
49
+ configCache.clear();
50
+ }
51
+ /**
52
+ * Get cached config
53
+ */
54
+ export function getCachedConfig(path) {
55
+ return configCache.get(path);
56
+ }
57
+ /**
58
+ * Load a configuration file
59
+ * Supports both default exports and named exports
60
+ */
61
+ export async function loadConfigFile(filePath, options) {
62
+ const useCache = options?.useCache !== false;
63
+ // Check cache first
64
+ if (useCache) {
65
+ const cached = configCache.get(filePath);
66
+ if (cached) {
67
+ return {
68
+ config: cached,
69
+ filePath,
70
+ fromCache: true,
71
+ };
72
+ }
73
+ }
74
+ // Check if file exists
75
+ if (!(await fileExists(filePath))) {
76
+ throw new Error(`Config file not found: ${filePath}`);
77
+ }
78
+ try {
79
+ // Use Bun's native TypeScript loader
80
+ const module = await import(filePath);
81
+ let config;
82
+ // Handle different export styles
83
+ if (typeof module.default === "function") {
84
+ // Function export: export default defineConfig(() => ({ ... }))
85
+ config = await module.default(options?.context);
86
+ }
87
+ else if (typeof module.default === "object" && module.default !== null) {
88
+ // Object export: export default { ... }
89
+ config = module.default;
90
+ }
91
+ else if (module.config) {
92
+ // Named export: export const config = { ... }
93
+ config = module.config;
94
+ }
95
+ else {
96
+ // Try to use the module itself as config
97
+ config = module;
98
+ }
99
+ // Cache the result
100
+ if (useCache) {
101
+ configCache.set(filePath, config);
102
+ }
103
+ return {
104
+ config: config,
105
+ filePath,
106
+ fromCache: false,
107
+ };
108
+ }
109
+ catch (error) {
110
+ throw new Error(`Failed to load config from ${filePath}: ${error instanceof Error ? error.message : String(error)}`);
111
+ }
112
+ }
113
+ /**
114
+ * Load configuration from file
115
+ * Searches for config files in order and loads the first one found
116
+ */
117
+ export async function loadConfig(options) {
118
+ // If a specific path is provided, use it
119
+ if (options?.configPath) {
120
+ return loadConfigFile(options.configPath, {
121
+ useCache: options.useCache,
122
+ context: options.context,
123
+ });
124
+ }
125
+ // Find config file
126
+ const filePath = await findConfigFile(options?.cwd);
127
+ if (!filePath) {
128
+ return {
129
+ config: {},
130
+ filePath: undefined,
131
+ fromCache: false,
132
+ };
133
+ }
134
+ return loadConfigFile(filePath, {
135
+ useCache: options?.useCache,
136
+ context: options?.context,
137
+ });
138
+ }
139
+ /**
140
+ * Load and merge multiple config files
141
+ * Later files override earlier ones
142
+ */
143
+ export async function loadConfigFiles(filePaths, options) {
144
+ const configs = [];
145
+ let lastFilePath;
146
+ for (const filePath of filePaths) {
147
+ if (await fileExists(filePath)) {
148
+ const { config } = await loadConfigFile(filePath, options);
149
+ configs.push(config);
150
+ lastFilePath = filePath;
151
+ }
152
+ }
153
+ const mergedConfig = configs.reduce((acc, config) => deepMerge(acc, config), {});
154
+ return {
155
+ config: mergedConfig,
156
+ filePath: lastFilePath,
157
+ fromCache: false,
158
+ };
159
+ }
160
+ /**
161
+ * Watch a config file for changes
162
+ * Returns an unsubscribe function
163
+ */
164
+ export function watchConfig(filePath, callback, options) {
165
+ let timeout;
166
+ const debounce = options?.debounce ?? 100;
167
+ // Use Bun's file watcher
168
+ const watcher = Bun.file(filePath);
169
+ // Note: Bun doesn't have a built-in file watcher API yet
170
+ // This is a placeholder for future implementation
171
+ // For now, we'll use a polling approach
172
+ const interval = setInterval(async () => {
173
+ try {
174
+ // Clear cache to force reload
175
+ configCache.delete(filePath);
176
+ const { config } = await loadConfigFile(filePath, { useCache: false });
177
+ if (timeout) {
178
+ clearTimeout(timeout);
179
+ }
180
+ timeout = setTimeout(() => {
181
+ callback(config);
182
+ }, debounce);
183
+ }
184
+ catch {
185
+ // Ignore errors during watch
186
+ }
187
+ }, 1000);
188
+ return () => {
189
+ clearInterval(interval);
190
+ if (timeout) {
191
+ clearTimeout(timeout);
192
+ }
193
+ };
194
+ }
195
+ /**
196
+ * Validate that a config object has the expected structure
197
+ */
198
+ export function validateConfigStructure(config) {
199
+ if (config === null || typeof config !== "object") {
200
+ return false;
201
+ }
202
+ // Basic validation - check that all top-level keys are valid
203
+ const validKeys = new Set([
204
+ "server",
205
+ "database",
206
+ "cache",
207
+ "logger",
208
+ "health",
209
+ "metrics",
210
+ "telemetry",
211
+ "frontend",
212
+ ]);
213
+ const cfg = config;
214
+ for (const key of Object.keys(cfg)) {
215
+ if (!validKeys.has(key)) {
216
+ console.warn(`Unknown config key: ${key}`);
217
+ }
218
+ }
219
+ return true;
220
+ }
221
+ /**
222
+ * Extract config file path from CLI args
223
+ */
224
+ export function getConfigPathFromArgs(args = process.argv) {
225
+ const configIndex = args.indexOf("--config");
226
+ if (configIndex !== -1 && args[configIndex + 1]) {
227
+ return args[configIndex + 1];
228
+ }
229
+ // Also support -c shorthand
230
+ const shortIndex = args.indexOf("-c");
231
+ if (shortIndex !== -1 && args[shortIndex + 1]) {
232
+ return args[shortIndex + 1];
233
+ }
234
+ return undefined;
235
+ }
236
+ /**
237
+ * Extract config file path from environment
238
+ */
239
+ export function getConfigPathFromEnv() {
240
+ return Bun.env.BUENO_CONFIG;
241
+ }
242
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}