@buenojs/bueno 0.8.5 → 0.8.7

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 (421) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/README.md +259 -15
  3. package/dist/cache/index.d.ts +187 -0
  4. package/dist/cache/index.d.ts.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 +484 -156
  8. package/dist/cli/commands/add-frontend.d.ts +7 -0
  9. package/dist/cli/commands/add-frontend.d.ts.map +1 -0
  10. package/dist/cli/commands/build.d.ts +7 -0
  11. package/dist/cli/commands/build.d.ts.map +1 -0
  12. package/dist/cli/commands/dev.d.ts +7 -0
  13. package/dist/cli/commands/dev.d.ts.map +1 -0
  14. package/dist/cli/commands/generate.d.ts +7 -0
  15. package/dist/cli/commands/generate.d.ts.map +1 -0
  16. package/dist/cli/commands/help.d.ts +7 -0
  17. package/dist/cli/commands/help.d.ts.map +1 -0
  18. package/dist/cli/commands/index.d.ts +59 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/migration.d.ts +7 -0
  21. package/dist/cli/commands/migration.d.ts.map +1 -0
  22. package/dist/cli/commands/new.d.ts +7 -0
  23. package/dist/cli/commands/new.d.ts.map +1 -0
  24. package/dist/cli/commands/start.d.ts +7 -0
  25. package/dist/cli/commands/start.d.ts.map +1 -0
  26. package/dist/cli/core/args.d.ts +61 -0
  27. package/dist/cli/core/args.d.ts.map +1 -0
  28. package/dist/cli/core/console.d.ts +135 -0
  29. package/dist/cli/core/console.d.ts.map +1 -0
  30. package/dist/cli/core/index.d.ts +10 -0
  31. package/dist/cli/core/index.d.ts.map +1 -0
  32. package/dist/cli/core/prompt.d.ts +63 -0
  33. package/dist/cli/core/prompt.d.ts.map +1 -0
  34. package/dist/cli/core/spinner.d.ts +111 -0
  35. package/dist/cli/core/spinner.d.ts.map +1 -0
  36. package/dist/cli/index.d.ts +47 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/templates/database/index.d.ts +24 -0
  39. package/dist/cli/templates/database/index.d.ts.map +1 -0
  40. package/dist/cli/templates/database/mysql.d.ts +6 -0
  41. package/dist/cli/templates/database/mysql.d.ts.map +1 -0
  42. package/dist/cli/templates/database/none.d.ts +8 -0
  43. package/dist/cli/templates/database/none.d.ts.map +1 -0
  44. package/dist/cli/templates/database/postgresql.d.ts +6 -0
  45. package/dist/cli/templates/database/postgresql.d.ts.map +1 -0
  46. package/dist/cli/templates/database/sqlite.d.ts +6 -0
  47. package/dist/cli/templates/database/sqlite.d.ts.map +1 -0
  48. package/dist/cli/templates/deploy.d.ts +41 -0
  49. package/dist/cli/templates/deploy.d.ts.map +1 -0
  50. package/dist/cli/templates/docker.d.ts +30 -0
  51. package/dist/cli/templates/docker.d.ts.map +1 -0
  52. package/dist/cli/templates/frontend/index.d.ts +25 -0
  53. package/dist/cli/templates/frontend/index.d.ts.map +1 -0
  54. package/dist/cli/templates/frontend/none.d.ts +8 -0
  55. package/dist/cli/templates/frontend/none.d.ts.map +1 -0
  56. package/dist/cli/templates/frontend/react.d.ts +6 -0
  57. package/dist/cli/templates/frontend/react.d.ts.map +1 -0
  58. package/dist/cli/templates/frontend/solid.d.ts +6 -0
  59. package/dist/cli/templates/frontend/solid.d.ts.map +1 -0
  60. package/dist/cli/templates/frontend/svelte.d.ts +6 -0
  61. package/dist/cli/templates/frontend/svelte.d.ts.map +1 -0
  62. package/dist/cli/templates/frontend/vue.d.ts +6 -0
  63. package/dist/cli/templates/frontend/vue.d.ts.map +1 -0
  64. package/dist/cli/templates/generators/index.d.ts +29 -0
  65. package/dist/cli/templates/generators/index.d.ts.map +1 -0
  66. package/dist/cli/templates/generators/types.d.ts +32 -0
  67. package/dist/cli/templates/generators/types.d.ts.map +1 -0
  68. package/dist/cli/templates/index.d.ts +12 -0
  69. package/dist/cli/templates/index.d.ts.map +1 -0
  70. package/dist/cli/templates/project/api.d.ts +6 -0
  71. package/dist/cli/templates/project/api.d.ts.map +1 -0
  72. package/dist/cli/templates/project/default.d.ts +6 -0
  73. package/dist/cli/templates/project/default.d.ts.map +1 -0
  74. package/dist/cli/templates/project/fullstack.d.ts +14 -0
  75. package/dist/cli/templates/project/fullstack.d.ts.map +1 -0
  76. package/dist/cli/templates/project/index.d.ts +26 -0
  77. package/dist/cli/templates/project/index.d.ts.map +1 -0
  78. package/dist/cli/templates/project/minimal.d.ts +6 -0
  79. package/dist/cli/templates/project/minimal.d.ts.map +1 -0
  80. package/dist/cli/templates/project/types.d.ts +80 -0
  81. package/dist/cli/templates/project/types.d.ts.map +1 -0
  82. package/dist/cli/templates/project/website.d.ts +8 -0
  83. package/dist/cli/templates/project/website.d.ts.map +1 -0
  84. package/dist/cli/utils/fs.d.ts +137 -0
  85. package/dist/cli/utils/fs.d.ts.map +1 -0
  86. package/dist/cli/utils/index.d.ts +9 -0
  87. package/dist/cli/utils/index.d.ts.map +1 -0
  88. package/dist/cli/utils/strings.d.ts +86 -0
  89. package/dist/cli/utils/strings.d.ts.map +1 -0
  90. package/dist/cli/utils/version.d.ts +15 -0
  91. package/dist/cli/utils/version.d.ts.map +1 -0
  92. package/dist/config/env-validation.d.ts +49 -0
  93. package/dist/config/env-validation.d.ts.map +1 -0
  94. package/dist/config/env.d.ts +167 -0
  95. package/dist/config/env.d.ts.map +1 -0
  96. package/dist/config/index.d.ts +168 -0
  97. package/dist/config/index.d.ts.map +1 -0
  98. package/dist/config/loader.d.ts +81 -0
  99. package/dist/config/loader.d.ts.map +1 -0
  100. package/dist/config/merge.d.ts +66 -0
  101. package/dist/config/merge.d.ts.map +1 -0
  102. package/dist/config/types.d.ts +322 -0
  103. package/dist/config/types.d.ts.map +1 -0
  104. package/dist/config/validation.d.ts +100 -0
  105. package/dist/config/validation.d.ts.map +1 -0
  106. package/dist/container/forward-ref.d.ts +116 -0
  107. package/dist/container/forward-ref.d.ts.map +1 -0
  108. package/dist/container/index.d.ts +95 -0
  109. package/dist/container/index.d.ts.map +1 -0
  110. package/dist/container/index.js +26 -3
  111. package/dist/context/index.d.ts +143 -0
  112. package/dist/context/index.d.ts.map +1 -0
  113. package/dist/database/index.d.ts +219 -0
  114. package/dist/database/index.d.ts.map +1 -0
  115. package/dist/database/migrations/index.d.ts +146 -0
  116. package/dist/database/migrations/index.d.ts.map +1 -0
  117. package/dist/database/orm/builder.d.ts +122 -0
  118. package/dist/database/orm/builder.d.ts.map +1 -0
  119. package/dist/database/orm/casts/index.d.ts +16 -0
  120. package/dist/database/orm/casts/index.d.ts.map +1 -0
  121. package/dist/database/orm/casts/types.d.ts +16 -0
  122. package/dist/database/orm/casts/types.d.ts.map +1 -0
  123. package/dist/database/orm/compiler.d.ts +90 -0
  124. package/dist/database/orm/compiler.d.ts.map +1 -0
  125. package/dist/database/orm/hooks/index.d.ts +53 -0
  126. package/dist/database/orm/hooks/index.d.ts.map +1 -0
  127. package/dist/database/orm/index.d.ts +21 -0
  128. package/dist/database/orm/index.d.ts.map +1 -0
  129. package/dist/database/orm/model-registry.d.ts +33 -0
  130. package/dist/database/orm/model-registry.d.ts.map +1 -0
  131. package/dist/database/orm/model.d.ts +245 -0
  132. package/dist/database/orm/model.d.ts.map +1 -0
  133. package/dist/database/orm/relationships/base.d.ts +69 -0
  134. package/dist/database/orm/relationships/base.d.ts.map +1 -0
  135. package/dist/database/orm/relationships/belongs-to-many.d.ts +47 -0
  136. package/dist/database/orm/relationships/belongs-to-many.d.ts.map +1 -0
  137. package/dist/database/orm/relationships/belongs-to.d.ts +17 -0
  138. package/dist/database/orm/relationships/belongs-to.d.ts.map +1 -0
  139. package/dist/database/orm/relationships/has-many.d.ts +14 -0
  140. package/dist/database/orm/relationships/has-many.d.ts.map +1 -0
  141. package/dist/database/orm/relationships/has-one.d.ts +14 -0
  142. package/dist/database/orm/relationships/has-one.d.ts.map +1 -0
  143. package/dist/database/orm/relationships/index.d.ts +10 -0
  144. package/dist/database/orm/relationships/index.d.ts.map +1 -0
  145. package/dist/database/orm/scopes/index.d.ts +36 -0
  146. package/dist/database/orm/scopes/index.d.ts.map +1 -0
  147. package/dist/database/schema/index.d.ts +155 -0
  148. package/dist/database/schema/index.d.ts.map +1 -0
  149. package/dist/events/__tests__/event-system.test.d.ts +2 -0
  150. package/dist/events/__tests__/event-system.test.d.ts.map +1 -0
  151. package/dist/events/config.d.ts +16 -0
  152. package/dist/events/config.d.ts.map +1 -0
  153. package/dist/events/example-usage.d.ts +12 -0
  154. package/dist/events/example-usage.d.ts.map +1 -0
  155. package/dist/events/index.d.ts +27 -0
  156. package/dist/events/index.d.ts.map +1 -0
  157. package/dist/events/manager.d.ts +33 -0
  158. package/dist/events/manager.d.ts.map +1 -0
  159. package/dist/events/registry.d.ts +31 -0
  160. package/dist/events/registry.d.ts.map +1 -0
  161. package/dist/events/types.d.ts +105 -0
  162. package/dist/events/types.d.ts.map +1 -0
  163. package/dist/frontend/api-routes.d.ts +189 -0
  164. package/dist/frontend/api-routes.d.ts.map +1 -0
  165. package/dist/frontend/bundler.d.ts +99 -0
  166. package/dist/frontend/bundler.d.ts.map +1 -0
  167. package/dist/frontend/console-client.d.ts +11 -0
  168. package/dist/frontend/console-client.d.ts.map +1 -0
  169. package/dist/frontend/console-stream.d.ts +138 -0
  170. package/dist/frontend/console-stream.d.ts.map +1 -0
  171. package/dist/frontend/dev-server.d.ts +174 -0
  172. package/dist/frontend/dev-server.d.ts.map +1 -0
  173. package/dist/frontend/file-router.d.ts +170 -0
  174. package/dist/frontend/file-router.d.ts.map +1 -0
  175. package/dist/frontend/frameworks/index.d.ts +41 -0
  176. package/dist/frontend/frameworks/index.d.ts.map +1 -0
  177. package/dist/frontend/frameworks/react.d.ts +32 -0
  178. package/dist/frontend/frameworks/react.d.ts.map +1 -0
  179. package/dist/frontend/frameworks/solid.d.ts +42 -0
  180. package/dist/frontend/frameworks/solid.d.ts.map +1 -0
  181. package/dist/frontend/frameworks/svelte.d.ts +57 -0
  182. package/dist/frontend/frameworks/svelte.d.ts.map +1 -0
  183. package/dist/frontend/frameworks/vue.d.ts +36 -0
  184. package/dist/frontend/frameworks/vue.d.ts.map +1 -0
  185. package/dist/frontend/hmr-client.d.ts +22 -0
  186. package/dist/frontend/hmr-client.d.ts.map +1 -0
  187. package/dist/frontend/hmr.d.ts +185 -0
  188. package/dist/frontend/hmr.d.ts.map +1 -0
  189. package/dist/frontend/index.d.ts +34 -0
  190. package/dist/frontend/index.d.ts.map +1 -0
  191. package/dist/frontend/islands.d.ts +135 -0
  192. package/dist/frontend/islands.d.ts.map +1 -0
  193. package/dist/frontend/isr.d.ts +143 -0
  194. package/dist/frontend/isr.d.ts.map +1 -0
  195. package/dist/frontend/layout.d.ts +140 -0
  196. package/dist/frontend/layout.d.ts.map +1 -0
  197. package/dist/frontend/ssr/react.d.ts +118 -0
  198. package/dist/frontend/ssr/react.d.ts.map +1 -0
  199. package/dist/frontend/ssr/solid.d.ts +141 -0
  200. package/dist/frontend/ssr/solid.d.ts.map +1 -0
  201. package/dist/frontend/ssr/svelte.d.ts +158 -0
  202. package/dist/frontend/ssr/svelte.d.ts.map +1 -0
  203. package/dist/frontend/ssr/vue.d.ts +161 -0
  204. package/dist/frontend/ssr/vue.d.ts.map +1 -0
  205. package/dist/frontend/ssr.d.ts +147 -0
  206. package/dist/frontend/ssr.d.ts.map +1 -0
  207. package/dist/frontend/types.d.ts +1902 -0
  208. package/dist/frontend/types.d.ts.map +1 -0
  209. package/dist/graphql/built-in-engine.d.ts +36 -0
  210. package/dist/graphql/built-in-engine.d.ts.map +1 -0
  211. package/dist/graphql/context-builder.d.ts +44 -0
  212. package/dist/graphql/context-builder.d.ts.map +1 -0
  213. package/dist/graphql/decorators.d.ts +162 -0
  214. package/dist/graphql/decorators.d.ts.map +1 -0
  215. package/dist/graphql/execution-pipeline.d.ts +67 -0
  216. package/dist/graphql/execution-pipeline.d.ts.map +1 -0
  217. package/dist/graphql/graphql-module.d.ts +70 -0
  218. package/dist/graphql/graphql-module.d.ts.map +1 -0
  219. package/dist/graphql/index.d.ts +48 -0
  220. package/dist/graphql/index.d.ts.map +1 -0
  221. package/dist/graphql/index.js +2156 -0
  222. package/dist/graphql/metadata.d.ts +37 -0
  223. package/dist/graphql/metadata.d.ts.map +1 -0
  224. package/dist/graphql/schema-builder.d.ts +34 -0
  225. package/dist/graphql/schema-builder.d.ts.map +1 -0
  226. package/dist/graphql/subscription-handler.d.ts +47 -0
  227. package/dist/graphql/subscription-handler.d.ts.map +1 -0
  228. package/dist/graphql/types.d.ts +252 -0
  229. package/dist/graphql/types.d.ts.map +1 -0
  230. package/dist/health/index.d.ts +176 -0
  231. package/dist/health/index.d.ts.map +1 -0
  232. package/dist/i18n/engine.d.ts +105 -0
  233. package/dist/i18n/engine.d.ts.map +1 -0
  234. package/dist/i18n/index.d.ts +13 -0
  235. package/dist/i18n/index.d.ts.map +1 -0
  236. package/dist/i18n/loader.d.ts +79 -0
  237. package/dist/i18n/loader.d.ts.map +1 -0
  238. package/dist/i18n/middleware.d.ts +96 -0
  239. package/dist/i18n/middleware.d.ts.map +1 -0
  240. package/dist/i18n/negotiator.d.ts +84 -0
  241. package/dist/i18n/negotiator.d.ts.map +1 -0
  242. package/dist/i18n/types.d.ts +129 -0
  243. package/dist/i18n/types.d.ts.map +1 -0
  244. package/dist/index.d.ts +48 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +520 -434
  247. package/dist/jobs/drivers/memory.d.ts +38 -0
  248. package/dist/jobs/drivers/memory.d.ts.map +1 -0
  249. package/dist/jobs/drivers/redis.d.ts +34 -0
  250. package/dist/jobs/drivers/redis.d.ts.map +1 -0
  251. package/dist/jobs/index.d.ts +12 -0
  252. package/dist/jobs/index.d.ts.map +1 -0
  253. package/dist/jobs/queue.d.ts +93 -0
  254. package/dist/jobs/queue.d.ts.map +1 -0
  255. package/dist/jobs/types.d.ts +193 -0
  256. package/dist/jobs/types.d.ts.map +1 -0
  257. package/dist/jobs/worker.d.ts +91 -0
  258. package/dist/jobs/worker.d.ts.map +1 -0
  259. package/dist/lock/index.d.ts +141 -0
  260. package/dist/lock/index.d.ts.map +1 -0
  261. package/dist/logger/index.d.ts +156 -0
  262. package/dist/logger/index.d.ts.map +1 -0
  263. package/dist/logger/transports/index.d.ts +371 -0
  264. package/dist/logger/transports/index.d.ts.map +1 -0
  265. package/dist/metrics/index.d.ts +163 -0
  266. package/dist/metrics/index.d.ts.map +1 -0
  267. package/dist/middleware/built-in.d.ts +50 -0
  268. package/dist/middleware/built-in.d.ts.map +1 -0
  269. package/dist/middleware/index.d.ts +40 -0
  270. package/dist/middleware/index.d.ts.map +1 -0
  271. package/dist/migrations/index.d.ts +10 -0
  272. package/dist/migrations/index.d.ts.map +1 -0
  273. package/dist/modules/filters.d.ts +150 -0
  274. package/dist/modules/filters.d.ts.map +1 -0
  275. package/dist/modules/guards.d.ts +188 -0
  276. package/dist/modules/guards.d.ts.map +1 -0
  277. package/dist/modules/index.d.ts +266 -0
  278. package/dist/modules/index.d.ts.map +1 -0
  279. package/dist/modules/index.js +514 -449
  280. package/dist/modules/interceptors.d.ts +242 -0
  281. package/dist/modules/interceptors.d.ts.map +1 -0
  282. package/dist/modules/lazy.d.ts +187 -0
  283. package/dist/modules/lazy.d.ts.map +1 -0
  284. package/dist/modules/lifecycle.d.ts +221 -0
  285. package/dist/modules/lifecycle.d.ts.map +1 -0
  286. package/dist/modules/metadata.d.ts +32 -0
  287. package/dist/modules/metadata.d.ts.map +1 -0
  288. package/dist/modules/pipes.d.ts +287 -0
  289. package/dist/modules/pipes.d.ts.map +1 -0
  290. package/dist/notification/channels/base.d.ts +32 -0
  291. package/dist/notification/channels/base.d.ts.map +1 -0
  292. package/dist/notification/channels/email.d.ts +37 -0
  293. package/dist/notification/channels/email.d.ts.map +1 -0
  294. package/dist/notification/channels/push.d.ts +37 -0
  295. package/dist/notification/channels/push.d.ts.map +1 -0
  296. package/dist/notification/channels/sms.d.ts +37 -0
  297. package/dist/notification/channels/sms.d.ts.map +1 -0
  298. package/dist/notification/channels/whatsapp.d.ts +37 -0
  299. package/dist/notification/channels/whatsapp.d.ts.map +1 -0
  300. package/dist/notification/index.d.ts +15 -0
  301. package/dist/notification/index.d.ts.map +1 -0
  302. package/dist/notification/service.d.ts +100 -0
  303. package/dist/notification/service.d.ts.map +1 -0
  304. package/dist/notification/types.d.ts +253 -0
  305. package/dist/notification/types.d.ts.map +1 -0
  306. package/dist/observability/__tests__/observability.test.d.ts +2 -0
  307. package/dist/observability/__tests__/observability.test.d.ts.map +1 -0
  308. package/dist/observability/breadcrumbs.d.ts +48 -0
  309. package/dist/observability/breadcrumbs.d.ts.map +1 -0
  310. package/dist/observability/index.d.ts +95 -0
  311. package/dist/observability/index.d.ts.map +1 -0
  312. package/dist/observability/interceptor.d.ts +19 -0
  313. package/dist/observability/interceptor.d.ts.map +1 -0
  314. package/dist/observability/service.d.ts +101 -0
  315. package/dist/observability/service.d.ts.map +1 -0
  316. package/dist/observability/trace.d.ts +21 -0
  317. package/dist/observability/trace.d.ts.map +1 -0
  318. package/dist/observability/types.d.ts +172 -0
  319. package/dist/observability/types.d.ts.map +1 -0
  320. package/dist/openapi/__tests__/decorators.test.d.ts +2 -0
  321. package/dist/openapi/__tests__/decorators.test.d.ts.map +1 -0
  322. package/dist/openapi/__tests__/document-builder.test.d.ts +2 -0
  323. package/dist/openapi/__tests__/document-builder.test.d.ts.map +1 -0
  324. package/dist/openapi/__tests__/route-scanner.test.d.ts +2 -0
  325. package/dist/openapi/__tests__/route-scanner.test.d.ts.map +1 -0
  326. package/dist/openapi/__tests__/schema-generator.test.d.ts +2 -0
  327. package/dist/openapi/__tests__/schema-generator.test.d.ts.map +1 -0
  328. package/dist/openapi/decorators.d.ts +173 -0
  329. package/dist/openapi/decorators.d.ts.map +1 -0
  330. package/dist/openapi/document-builder.d.ts +82 -0
  331. package/dist/openapi/document-builder.d.ts.map +1 -0
  332. package/dist/openapi/index.d.ts +48 -0
  333. package/dist/openapi/index.d.ts.map +1 -0
  334. package/dist/openapi/index.js +59 -40
  335. package/dist/openapi/metadata.d.ts +36 -0
  336. package/dist/openapi/metadata.d.ts.map +1 -0
  337. package/dist/openapi/route-scanner.d.ts +34 -0
  338. package/dist/openapi/route-scanner.d.ts.map +1 -0
  339. package/dist/openapi/schema-generator.d.ts +53 -0
  340. package/dist/openapi/schema-generator.d.ts.map +1 -0
  341. package/dist/openapi/swagger-module.d.ts +57 -0
  342. package/dist/openapi/swagger-module.d.ts.map +1 -0
  343. package/dist/openapi/types.d.ts +344 -0
  344. package/dist/openapi/types.d.ts.map +1 -0
  345. package/dist/orm/index.d.ts +10 -0
  346. package/dist/orm/index.d.ts.map +1 -0
  347. package/dist/router/index.d.ts +73 -0
  348. package/dist/router/index.d.ts.map +1 -0
  349. package/dist/router/linear.d.ts +54 -0
  350. package/dist/router/linear.d.ts.map +1 -0
  351. package/dist/router/regex.d.ts +49 -0
  352. package/dist/router/regex.d.ts.map +1 -0
  353. package/dist/router/tree.d.ts +112 -0
  354. package/dist/router/tree.d.ts.map +1 -0
  355. package/dist/rpc/index.d.ts +321 -0
  356. package/dist/rpc/index.d.ts.map +1 -0
  357. package/dist/schema/index.d.ts +10 -0
  358. package/dist/schema/index.d.ts.map +1 -0
  359. package/dist/security/index.d.ts +126 -0
  360. package/dist/security/index.d.ts.map +1 -0
  361. package/dist/ssg/index.d.ts +73 -0
  362. package/dist/ssg/index.d.ts.map +1 -0
  363. package/dist/storage/index.d.ts +99 -0
  364. package/dist/storage/index.d.ts.map +1 -0
  365. package/dist/telemetry/index.d.ts +376 -0
  366. package/dist/telemetry/index.d.ts.map +1 -0
  367. package/dist/template/index.d.ts +7 -0
  368. package/dist/template/index.d.ts.map +1 -0
  369. package/dist/templates/engine.d.ts +60 -0
  370. package/dist/templates/engine.d.ts.map +1 -0
  371. package/dist/templates/index.d.ts +9 -0
  372. package/dist/templates/index.d.ts.map +1 -0
  373. package/dist/templates/loader.d.ts +45 -0
  374. package/dist/templates/loader.d.ts.map +1 -0
  375. package/dist/templates/renderers/markdown.d.ts +46 -0
  376. package/dist/templates/renderers/markdown.d.ts.map +1 -0
  377. package/dist/templates/renderers/simple.d.ts +35 -0
  378. package/dist/templates/renderers/simple.d.ts.map +1 -0
  379. package/dist/templates/types.d.ts +138 -0
  380. package/dist/templates/types.d.ts.map +1 -0
  381. package/dist/testing/index.d.ts +539 -0
  382. package/dist/testing/index.d.ts.map +1 -0
  383. package/dist/types/index.d.ts +116 -0
  384. package/dist/types/index.d.ts.map +1 -0
  385. package/dist/validation/index.d.ts +89 -0
  386. package/dist/validation/index.d.ts.map +1 -0
  387. package/dist/validation/schemas.d.ts +243 -0
  388. package/dist/validation/schemas.d.ts.map +1 -0
  389. package/dist/websocket/index.d.ts +252 -0
  390. package/dist/websocket/index.d.ts.map +1 -0
  391. package/llms.txt +231 -0
  392. package/package.json +6 -2
  393. package/src/cli/ARCHITECTURE.md +3 -3
  394. package/src/cli/commands/add-frontend.ts +444 -0
  395. package/src/cli/commands/new.ts +23 -0
  396. package/src/cli/index.ts +1 -0
  397. package/src/cli/templates/frontend/react.ts +2 -1
  398. package/src/cli/templates/frontend/solid.ts +2 -1
  399. package/src/cli/templates/frontend/svelte.ts +2 -1
  400. package/src/cli/templates/frontend/vue.ts +2 -1
  401. package/src/cli/templates/project/api.ts +1 -1
  402. package/src/cli/templates/project/default.ts +1 -1
  403. package/src/cli/templates/project/fullstack.ts +14 -104
  404. package/src/cli/templates/project/website.ts +63 -12
  405. package/src/config/types.ts +21 -0
  406. package/src/graphql/built-in-engine.ts +598 -0
  407. package/src/graphql/context-builder.ts +110 -0
  408. package/src/graphql/decorators.ts +358 -0
  409. package/src/graphql/execution-pipeline.ts +227 -0
  410. package/src/graphql/graphql-module.ts +563 -0
  411. package/src/graphql/index.ts +101 -0
  412. package/src/graphql/metadata.ts +237 -0
  413. package/src/graphql/schema-builder.ts +319 -0
  414. package/src/graphql/subscription-handler.ts +283 -0
  415. package/src/graphql/types.ts +324 -0
  416. package/src/index.ts +3 -0
  417. package/src/modules/index.ts +48 -1
  418. package/tests/integration/cli.test.ts +19 -19
  419. package/tests/unit/cli.test.ts +1 -1
  420. package/tests/unit/graphql.test.ts +991 -0
  421. package/tsconfig.declaration.json +14 -0
@@ -0,0 +1,105 @@
1
+ /**
2
+ * i18n Engine — Translation Lookup and Interpolation
3
+ *
4
+ * Orchestrates locale loading and exposes the t() translation function.
5
+ * Handles pluralisation, variable interpolation, fallback, and metrics.
6
+ */
7
+ import { LocaleNegotiator } from "./negotiator";
8
+ import type { I18nConfig, I18nMetrics, ResolvedI18nConfig, TranslationFunction, TranslationParams } from "./types";
9
+ /**
10
+ * Main i18n engine.
11
+ * Handles translation lookup, plural forms, interpolation, and caching.
12
+ *
13
+ * Usage:
14
+ * ```
15
+ * const i18n = new I18n({ defaultLocale: 'en', supportedLocales: ['en', 'fr'] });
16
+ * i18n.preload(); // optional
17
+ * const t = i18n.createTranslator('fr');
18
+ * console.log(t('greeting', { name: 'Alice' })); // from fr.json
19
+ * ```
20
+ */
21
+ export declare class I18n {
22
+ private loader;
23
+ private negotiator;
24
+ readonly config: ResolvedI18nConfig;
25
+ private metrics;
26
+ /**
27
+ * Create an i18n engine.
28
+ * @param config Optional configuration (all fields are optional)
29
+ */
30
+ constructor(config?: I18nConfig);
31
+ /**
32
+ * Pre-load all supported locale files at startup.
33
+ * Optional — lazy loading works without calling this.
34
+ * Useful for production to catch missing files early.
35
+ */
36
+ preload(): void;
37
+ /**
38
+ * Enable hot-reload file watching for all supported locales.
39
+ * Should only be called in development mode.
40
+ */
41
+ watchAll(): void;
42
+ /**
43
+ * Stop all file watchers.
44
+ * Call this when the application shuts down.
45
+ */
46
+ stopWatching(): void;
47
+ /**
48
+ * Return a bound translation function for the given locale.
49
+ * This is what gets stored on context: ctx.set('t', ...)
50
+ *
51
+ * @param locale Locale to create translator for
52
+ * @returns TranslationFunction bound to that locale
53
+ */
54
+ createTranslator(locale: string): TranslationFunction;
55
+ /**
56
+ * Primary translation lookup.
57
+ *
58
+ * Resolution order:
59
+ * 1. Check `locale` translations
60
+ * a. If `params.count` is provided, try plural key first ({key}_one, {key}_other, etc.)
61
+ * b. Then try bare key
62
+ * 2. If fallbackToDefault and locale !== defaultLocale, repeat step 1 for defaultLocale
63
+ * 3. Return the key string as last resort
64
+ *
65
+ * Metrics are tracked: hits (found in locale), fallbacks (found in default),
66
+ * misses (returned key string).
67
+ *
68
+ * @param locale Locale to translate in
69
+ * @param key Translation key (supports dot-notation for nested keys)
70
+ * @param params Optional translation parameters (interpolation + plural count)
71
+ * @returns Translated string, or key string if not found
72
+ */
73
+ t(locale: string, key: string, params?: TranslationParams): string;
74
+ /**
75
+ * Returns the LocaleNegotiator instance for use by middleware.
76
+ * @returns LocaleNegotiator instance
77
+ */
78
+ getNegotiator(): LocaleNegotiator;
79
+ /**
80
+ * Get current translation metrics.
81
+ * Useful for debugging and performance monitoring.
82
+ * @returns Current I18nMetrics
83
+ */
84
+ getMetrics(): I18nMetrics;
85
+ /**
86
+ * Resolve a translation key in a specific locale.
87
+ * Returns null if not found (to distinguish from a successful empty string).
88
+ *
89
+ * @param locale Locale to resolve in
90
+ * @param key Translation key
91
+ * @param params Translation parameters
92
+ * @param hasCount Whether params contains a count field
93
+ * @returns Translated string, or null if not found
94
+ */
95
+ private _resolve;
96
+ }
97
+ /**
98
+ * Create an i18n engine.
99
+ * Convenience factory for new I18n(config).
100
+ *
101
+ * @param config Optional configuration
102
+ * @returns New I18n instance
103
+ */
104
+ export declare function createI18n(config?: I18nConfig): I18n;
105
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/i18n/engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EACX,UAAU,EACV,WAAW,EAEX,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,SAAS,CAAC;AAkFjB;;;;;;;;;;;GAWG;AACH,qBAAa,IAAI;IAChB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAmB;IACrC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,OAAO,CAAC,OAAO,CAMb;IAEF;;;OAGG;gBACS,MAAM,GAAE,UAAe;IAmBnC;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAMhB;;;OAGG;IACH,YAAY,IAAI,IAAI;IAIpB;;;;;;OAMG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB;IAMrD;;;;;;;;;;;;;;;;;OAiBG;IACH,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAkClE;;;OAGG;IACH,aAAa,IAAI,gBAAgB;IAIjC;;;;OAIG;IACH,UAAU,IAAI,WAAW;IASzB;;;;;;;;;OASG;IACH,OAAO,CAAC,QAAQ;CAsBhB;AAID;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAEpD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * i18n Module — Internationalisation for Bueno Framework
3
+ *
4
+ * Locale detection (cookie → Accept-Language), translation lookup with
5
+ * dot-notation keys, variable interpolation, plural forms, and caching.
6
+ */
7
+ export type { PluralKey, TranslationMap, FlatTranslations, TranslationParams, TranslationFunction, LocaleMatch, I18nContext, I18nConfig, ResolvedI18nConfig, LocaleBundle, I18nMetrics, } from "./types";
8
+ export { I18n, createI18n } from "./engine";
9
+ export { TranslationLoader } from "./loader";
10
+ export { LocaleNegotiator, parseAcceptLanguage, normaliseLocale, } from "./negotiator";
11
+ export { i18nMiddleware, getLocale, getT } from "./middleware";
12
+ export type { I18nMiddlewareOptions } from "./middleware";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACX,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EACN,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Translation Loader — JSON File Loading and Caching
3
+ *
4
+ * Loads locale JSON files from disk, flattens nested keys to dot-notation,
5
+ * caches in memory, and supports hot-reload via file watching.
6
+ */
7
+ import type { LocaleBundle, ResolvedI18nConfig } from "./types";
8
+ /**
9
+ * Loads and caches locale translation bundles from JSON files.
10
+ * Supports file watching for hot-reload in development.
11
+ */
12
+ export declare class TranslationLoader {
13
+ private cache;
14
+ private watchers;
15
+ private config;
16
+ constructor(config: ResolvedI18nConfig);
17
+ /**
18
+ * Load a locale bundle. Returns from cache if already loaded.
19
+ *
20
+ * For the default locale:
21
+ * - Throws if the file is not found (cannot proceed without defaults)
22
+ *
23
+ * For non-default locales:
24
+ * - Returns an empty bundle if the file is not found
25
+ * - Fallback in the engine will handle the miss
26
+ *
27
+ * @param locale Locale identifier to load
28
+ * @returns LocaleBundle with flattened translations
29
+ * @throws Error if default locale file is not found
30
+ */
31
+ load(locale: string): LocaleBundle;
32
+ /**
33
+ * Pre-load all supported locales eagerly.
34
+ * Call this once at application startup for best performance.
35
+ *
36
+ * Non-default locales that are missing are silently skipped
37
+ * (returning empty bundles).
38
+ */
39
+ preload(): void;
40
+ /**
41
+ * Invalidate a locale's cache entry.
42
+ * Forces a reload from disk on the next access.
43
+ *
44
+ * @param locale Locale to invalidate
45
+ */
46
+ invalidate(locale: string): void;
47
+ /**
48
+ * Return all currently loaded locale names.
49
+ *
50
+ * @returns Array of loaded locale identifiers
51
+ */
52
+ loadedLocales(): string[];
53
+ /**
54
+ * Enable file watching for a locale (hot reload in dev mode).
55
+ * Invalidates cache and reloads on file change.
56
+ *
57
+ * @param locale Locale file to watch
58
+ */
59
+ watch(locale: string): void;
60
+ /**
61
+ * Stop all file watchers.
62
+ * Call this when the application shuts down.
63
+ */
64
+ stopWatching(): void;
65
+ /**
66
+ * Resolve the full file path for a locale.
67
+ * @param locale Locale identifier
68
+ * @returns Full file path to the locale JSON file
69
+ */
70
+ private _resolvePath;
71
+ /**
72
+ * Load a locale file from disk and cache it.
73
+ * @param locale Locale to load
74
+ * @returns LocaleBundle with flattened translations
75
+ * @throws Error if default locale file is not found or JSON is invalid
76
+ */
77
+ private _loadFromDisk;
78
+ }
79
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/i18n/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAEX,YAAY,EACZ,kBAAkB,EAClB,MAAM,SAAS,CAAC;AAsCjB;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAItC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAOlC;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAiBf;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;OAIG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAiB3B;;;OAGG;IACH,YAAY,IAAI,IAAI;IASpB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAIpB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;CAsCrB"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * i18n Middleware — Locale Detection and Translation Binding
3
+ *
4
+ * Detects locale from cookie (priority 1) then Accept-Language header (priority 2),
5
+ * binds t() and locale to context, persists locale choice in a cookie.
6
+ */
7
+ import type { Context } from "../context";
8
+ import type { Middleware } from "../middleware";
9
+ import { type I18n } from "./engine";
10
+ import type { I18nConfig, TranslationFunction } from "./types";
11
+ /**
12
+ * Get the current locale from context.
13
+ * Typed helper for accessing the locale set by i18nMiddleware.
14
+ *
15
+ * Returns the default locale ("en") if middleware has not run.
16
+ * Useful in route handlers:
17
+ *
18
+ * @example
19
+ * router.get('/locale', (ctx) => {
20
+ * const locale = getLocale(ctx); // 'fr', 'en', etc.
21
+ * return ctx.json({ locale });
22
+ * });
23
+ *
24
+ * @param ctx Bueno Context instance
25
+ * @returns Current locale, or "en" if middleware hasn't run
26
+ */
27
+ export declare function getLocale(ctx: Context): string;
28
+ /**
29
+ * Get the bound translation function from context.
30
+ * Typed helper for accessing the t() set by i18nMiddleware.
31
+ *
32
+ * Returns an identity function (returns key as-is) if middleware has not run.
33
+ * Useful in route handlers:
34
+ *
35
+ * @example
36
+ * router.get('/greeting', (ctx) => {
37
+ * const t = getT(ctx);
38
+ * const message = t('greeting', { name: 'Alice' });
39
+ * return ctx.text(message);
40
+ * });
41
+ *
42
+ * @param ctx Bueno Context instance
43
+ * @returns Translation function, or identity function if middleware hasn't run
44
+ */
45
+ export declare function getT(ctx: Context): TranslationFunction;
46
+ /**
47
+ * Options for i18nMiddleware.
48
+ * Extends I18nConfig and adds an optional pre-constructed I18n instance.
49
+ */
50
+ export interface I18nMiddlewareOptions extends I18nConfig {
51
+ /**
52
+ * Pre-constructed I18n instance.
53
+ * If not provided, one is created from the other options.
54
+ *
55
+ * Pass this when you want a single shared instance across multiple
56
+ * middleware chains or route groups (prevents double-loading locale files).
57
+ */
58
+ i18n?: I18n;
59
+ }
60
+ /**
61
+ * Create i18n middleware.
62
+ *
63
+ * Locale detection priority:
64
+ * 1. Cookie (bueno_locale or custom cookieName)
65
+ * 2. Accept-Language header
66
+ * 3. Default locale (config.defaultLocale)
67
+ *
68
+ * Sets on context (available via getLocale/getT):
69
+ * - ctx.set('locale', detectedLocale)
70
+ * - ctx.set('t', translationFunction)
71
+ *
72
+ * Sets on response:
73
+ * - Set-Cookie header to persist locale choice
74
+ * - Vary: Accept-Language header (for correct CDN caching)
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const router = new Router();
79
+ * router.use(i18nMiddleware({
80
+ * defaultLocale: 'en',
81
+ * supportedLocales: ['en', 'fr', 'de'],
82
+ * basePath: 'resources/i18n'
83
+ * }));
84
+ *
85
+ * router.get('/hello', (ctx) => {
86
+ * const locale = getLocale(ctx);
87
+ * const t = getT(ctx);
88
+ * return ctx.json({ message: t('greeting') });
89
+ * });
90
+ * ```
91
+ *
92
+ * @param options Configuration options
93
+ * @returns Koa-style middleware function
94
+ */
95
+ export declare function i18nMiddleware(options?: I18nMiddlewareOptions): Middleware;
96
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/i18n/middleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,EAAc,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAI/D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAEtD;AAID;;;GAGG;AACH,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACxD;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;CACZ;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,cAAc,CAC7B,OAAO,GAAE,qBAA0B,GACjC,UAAU,CAoDZ"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Locale Negotiation — Accept-Language Header Parsing
3
+ *
4
+ * Parses RFC 7231 Accept-Language headers and matches them against
5
+ * supported locales using exact and language-prefix matching.
6
+ *
7
+ * @see https://tools.ietf.org/html/rfc7231#section-5.3.5
8
+ */
9
+ import type { LocaleMatch } from "./types";
10
+ /**
11
+ * Parsed entry from an Accept-Language header.
12
+ */
13
+ interface AcceptEntry {
14
+ locale: string;
15
+ quality: number;
16
+ }
17
+ /**
18
+ * Parse RFC 7231 Accept-Language header value into quality-sorted entries.
19
+ *
20
+ * @example
21
+ * Input: "en-US,en;q=0.9,fr;q=0.8"
22
+ * Output: [
23
+ * { locale: "en-US", quality: 1.0 },
24
+ * { locale: "en", quality: 0.9 },
25
+ * { locale: "fr", quality: 0.8 }
26
+ * ]
27
+ *
28
+ * @param header Raw Accept-Language header value
29
+ * @returns Array of entries sorted by quality (highest first)
30
+ */
31
+ export declare function parseAcceptLanguage(header: string): AcceptEntry[];
32
+ /**
33
+ * Normalise a locale tag:
34
+ * - Converts underscore to hyphen ("en_US" → "en-US")
35
+ * - Lowercases language subtag ("EN" → "en")
36
+ * - Uppercases region subtag ("us" → "US")
37
+ *
38
+ * @example
39
+ * normaliseLocale("en_US") → "en-US"
40
+ * normaliseLocale("EN-us") → "en-US"
41
+ * normaliseLocale("fr") → "fr"
42
+ *
43
+ * @param locale Raw locale string
44
+ * @returns Normalised locale string
45
+ */
46
+ export declare function normaliseLocale(locale: string): string;
47
+ /**
48
+ * Negotiates the best locale match given an Accept-Language header
49
+ * and a list of supported locales.
50
+ *
51
+ * Matching strategy (two-pass):
52
+ * 1. Exact match: find a supported locale that exactly matches (case-normalised) any entry
53
+ * 2. Language prefix match: find a supported locale whose language subtag matches any entry
54
+ * 3. Default: return the configured default locale
55
+ *
56
+ * This two-pass approach ensures correct behavior even when entries
57
+ * are out of quality order, e.g. "fr-CA,de;q=0.9" against ["de","fr"]
58
+ * should return "fr" (via prefix match), not "de".
59
+ */
60
+ export declare class LocaleNegotiator {
61
+ private supported;
62
+ private defaultLocale;
63
+ constructor(supportedLocales: string[], defaultLocale: string);
64
+ /**
65
+ * Find the best matching locale given a raw Accept-Language header string.
66
+ *
67
+ * @param acceptLanguageHeader Raw Accept-Language header value
68
+ * @returns LocaleMatch with matched locale and strategy used
69
+ */
70
+ negotiate(acceptLanguageHeader: string): LocaleMatch;
71
+ /**
72
+ * Validate whether a given locale string is in the supported list.
73
+ * Used to validate cookie values before trusting them.
74
+ *
75
+ * Performs strict membership check — does not normalise or approximate.
76
+ * If a cookie contains "fr-CA" but only "fr" is supported, this returns false.
77
+ *
78
+ * @param locale Locale to validate
79
+ * @returns true if locale is in supportedLocales
80
+ */
81
+ isSupported(locale: string): boolean;
82
+ }
83
+ export {};
84
+ //# sourceMappingURL=negotiator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negotiator.d.ts","sourceRoot":"","sources":["../../src/i18n/negotiator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3C;;GAEG;AACH,UAAU,WAAW;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAejE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOtD;AAcD;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,aAAa,CAAS;gBAElB,gBAAgB,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM;IAK7D;;;;;OAKG;IACH,SAAS,CAAC,oBAAoB,EAAE,MAAM,GAAG,WAAW;IA+BpD;;;;;;;;;OASG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * i18n Types and Interfaces
3
+ *
4
+ * Core types for the internationalisation system:
5
+ * locale negotiation, translation lookup, plural forms, and configuration.
6
+ */
7
+ /**
8
+ * CLDR-standard plural form categories.
9
+ * Used to select the appropriate plural variant of a translation.
10
+ *
11
+ * @see https://cldr.unicode.org/index/cldr-spec/plural-rules
12
+ */
13
+ export type PluralKey = "zero" | "one" | "two" | "few" | "many" | "other";
14
+ /**
15
+ * Raw translation file shape — can be flat or nested JSON.
16
+ * @example
17
+ * { "nav.home": "Home" } or { "nav": { "home": "Home" } }
18
+ */
19
+ export type TranslationMap = Record<string, unknown>;
20
+ /**
21
+ * Flat map of dot-notation keys → string values.
22
+ * The loader always normalises nested keys to this format before caching.
23
+ * @example
24
+ * Map { "nav.home" → "Home", "nav.about" → "About" }
25
+ */
26
+ export type FlatTranslations = Map<string, string>;
27
+ /**
28
+ * Parameters passed to the translation function.
29
+ * `count` is special — it drives plural form selection.
30
+ * Other keys are used for variable interpolation ({{ key }}).
31
+ */
32
+ export interface TranslationParams {
33
+ count?: number;
34
+ [key: string]: unknown;
35
+ }
36
+ /**
37
+ * The t() function signature stored on context and returned by the engine.
38
+ * @example
39
+ * t('greeting', { name: 'Alice' }) → "Hello, Alice!"
40
+ */
41
+ export type TranslationFunction = (key: string, params?: TranslationParams) => string;
42
+ /**
43
+ * Result of a locale negotiation attempt against supported locales.
44
+ * Used to determine which locale to load based on client preferences.
45
+ */
46
+ export interface LocaleMatch {
47
+ /** The matched locale from supportedLocales (e.g. "fr") */
48
+ locale: string;
49
+ /** How the match was found: exact string match, language prefix match, or default */
50
+ strategy: "exact" | "prefix" | "default";
51
+ /** The original value that was negotiated (e.g. "fr-CA" from Accept-Language) */
52
+ source: string;
53
+ }
54
+ /**
55
+ * What the middleware stores on the Bueno Context instance.
56
+ * Accessed via ctx.get('locale') and ctx.get('t').
57
+ * Typed helpers getLocale(ctx) and getT(ctx) are recommended.
58
+ */
59
+ export interface I18nContext {
60
+ locale: string;
61
+ t: TranslationFunction;
62
+ }
63
+ /**
64
+ * User-facing i18n configuration.
65
+ * All fields are optional; defaults are applied by the engine.
66
+ * Environment variable pattern: BUENO_I18N_*
67
+ */
68
+ export interface I18nConfig {
69
+ /** Enable/disable the i18n system (default: false) */
70
+ enabled?: boolean;
71
+ /** Default locale — used as fallback when requested locale has missing keys (default: "en") */
72
+ defaultLocale?: string;
73
+ /** List of all supported locale identifiers (default: ["en"]) */
74
+ supportedLocales?: string[];
75
+ /** Base directory for locale JSON files (default: "resources/i18n") */
76
+ basePath?: string;
77
+ /**
78
+ * When a key is missing in the requested locale,
79
+ * fall back to the defaultLocale before returning the key string (default: true)
80
+ */
81
+ fallbackToDefault?: boolean;
82
+ /** Cookie name used to persist locale choice (default: "bueno_locale") */
83
+ cookieName?: string;
84
+ /** Cookie max-age in seconds (default: 31536000 = 1 year) */
85
+ cookieMaxAge?: number;
86
+ /** Enable file watching for hot reload in development (default: false) */
87
+ watch?: boolean;
88
+ }
89
+ /**
90
+ * Fully-resolved i18n configuration with all defaults applied.
91
+ * All fields are required (non-optional) — used internally by the engine.
92
+ */
93
+ export interface ResolvedI18nConfig {
94
+ defaultLocale: string;
95
+ supportedLocales: string[];
96
+ basePath: string;
97
+ fallbackToDefault: boolean;
98
+ cookieName: string;
99
+ cookieMaxAge: number;
100
+ }
101
+ /**
102
+ * A loaded and cached locale bundle.
103
+ * Contains flattened translations and metadata.
104
+ */
105
+ export interface LocaleBundle {
106
+ /** Locale identifier e.g. "en", "fr-CA" */
107
+ locale: string;
108
+ /** Flat dot-notation key → string value map */
109
+ translations: FlatTranslations;
110
+ /** When this bundle was loaded (ms epoch) */
111
+ loadedAt: number;
112
+ }
113
+ /**
114
+ * Metrics collected by the translation engine.
115
+ * Useful for debugging and performance monitoring.
116
+ */
117
+ export interface I18nMetrics {
118
+ /** Total number of t() calls */
119
+ totalLookups: number;
120
+ /** Lookups that found a key in the requested locale */
121
+ hits: number;
122
+ /** Lookups that fell back to the default locale */
123
+ fallbacks: number;
124
+ /** Lookups that returned the key string (complete miss) */
125
+ misses: number;
126
+ /** Locales currently loaded in memory */
127
+ loadedLocales: string[];
128
+ }
129
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAI1E;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CACjC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,iBAAiB,KACtB,MAAM,CAAC;AAIZ;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;CACf;AAID;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,mBAAmB,CAAC;CACvB;AAID;;;;GAIG;AACH,MAAM,WAAW,UAAU;IAC1B,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAID;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,YAAY,EAAE,gBAAgB,CAAC;IAC/B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CACjB;AAID;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,SAAS,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Bueno Framework
3
+ *
4
+ * A Bun-Native Full-Stack Framework
5
+ */
6
+ export declare const VERSION = "0.1.0";
7
+ export { Container, createToken, Injectable, Inject, } from "./container";
8
+ export type { Provider, Token } from "./container";
9
+ export { Router, generateUrl } from "./router";
10
+ export { Context, createContext } from "./context";
11
+ export { compose, createPipeline, type Middleware, type Handler, } from "./middleware";
12
+ export { logger, cors, requestId, timing, securityHeaders, rateLimit, compression, } from "./middleware/built-in";
13
+ export { Module, Controller, Injectable as ModuleInjectable, Inject as ModuleInject, Get, Post, Put, Patch, Delete, Head, Options, AppModule, Application, createApp, } from "./modules";
14
+ export { Database, createConnection, detectDriver, ReservedConnection, type DatabaseConfig as DatabaseConfigType, type DatabaseDriver, type QueryResult, type Transaction, } from "./database";
15
+ export { validate, validateSync, validateBody, validateQuery, validateParams, validateHeaders, createValidator, WithBody, WithQuery, isStandardSchema, assertStandardSchema, type ValidationResult, type ValidatorOptions, } from "./validation";
16
+ export { Password, JWT, CSRF, createAuthMiddleware, createRBACMiddleware, createAPIKeyMiddleware, } from "./security";
17
+ export { RPCClient, createRPClient, bc, extractRouteTypes, parseJSON, parseText, isOK, isStatus, throwIfNotOK, } from "./rpc";
18
+ export { Cache, SessionStore, createCache, createSessionStore, } from "./cache";
19
+ export { DistributedLock, LockAcquireError, LockTimeoutError, createDistributedLock, createRedisLock, createMemoryLock, getDefaultLock, setDefaultLock, lock, type LockConfig, type LockOptions, type Lock, type LockHandle, } from "./lock";
20
+ export { JobQueue, JobWorker, createJobQueue, startWorker, MemoryJobQueueDriver, RedisJobQueueDriver, type Job, type JobStatus, type JobQueueConfig, type QueueOptions, type JobHandler, type QueueMetrics, type JobEvent, type JobEventType, type JobClaimHandle, type JobQueueDriver, type HandlerRegistryEntry, type JobConfigValidationResult, } from "./jobs";
21
+ export { TemplateEngine, TemplateLoader, SimpleRenderer, MarkdownRenderer, type Template, type TemplateMetadata, type TemplateData, type RenderOptions, type TemplateEngineConfig, type TemplateEngineMetrics, type IRenderer, type FilterRegistry, type TemplateLoaderOptions, type TemplateLoadedEvent, } from "./templates";
22
+ export { NotificationService, createNotificationService, BaseChannelService, EmailChannelService, SMSChannelService, WhatsAppChannelService, PushNotificationChannelService, type NotificationChannel, type NotificationMessage, type EmailRecipient, type EmailRecipients, type EmailAttachment, type EmailMessage, type SMSMessage, type WhatsAppMessage, type PushNotificationMessage, type BuiltInNotification, type Notifiable, type ChannelHealth, type ChannelService, type BaseChannelConfig, type EmailChannelConfig, type SMSChannelConfig, type WhatsAppChannelConfig, type PushChannelConfig, type ChannelConfig, type NotificationServiceConfig, type ChannelMetrics, type NotificationEvent, type NotificationEventType, type NotificationValidationResult, } from "./notification";
23
+ export { DocumentBuilder, SchemaGenerator, RouteScanner, SwaggerModule, ApiTags, ApiBearerAuth, ApiBasicAuth, ApiApiKey, ApiExcludeController, ApiOperation, ApiResponse, ApiParam, ApiQuery, ApiHeader, ApiBody, ApiExcludeEndpoint, ApiProperty, ApiPropertyOptional, type OpenAPIDocument, type OpenAPIInfo, type OpenAPIContact, type OpenAPILicense, type OpenAPIServer, type OpenAPIPaths, type OpenAPIPath, type OpenAPIOperation, type OpenAPIExternalDocs, type OpenAPIParameter, type OpenAPIRequestBody, type OpenAPIMediaType, type OpenAPIExample, type OpenAPIResponse, type OpenAPIHeader, type OpenAPIResponses, type OpenAPISchema, type OpenAPIDiscriminator, type OpenAPIXML, type OpenAPIComponents, type OpenAPISecurityScheme, type OpenAPIOAuthFlows, type OpenAPIOAuthFlow, type OpenAPISecurity, type OpenAPITag, type SwaggerOptions, type ApiOperationOptions, type ApiResponseOptions, type ApiParamOptions, type ApiQueryOptions, type ApiHeaderOptions, type ApiBodyOptions, type ApiPropertyOptions, type SecuritySchemeOptions, type ApiKeySecurityOptions, } from "./openapi";
24
+ export { I18n, createI18n, TranslationLoader, LocaleNegotiator, parseAcceptLanguage, normaliseLocale, i18nMiddleware, getLocale, getT, type PluralKey, type TranslationParams, type TranslationFunction, type LocaleMatch, type I18nContext, type LocaleBundle, type I18nMetrics, type I18nMiddlewareOptions, } from "./i18n";
25
+ export { SSG, createSSG, parseMarkdown, parseFrontmatter, type Frontmatter, type Page, type SSGConfig, type LayoutContext, type SiteConfig, } from "./ssg";
26
+ export { Storage, createStorage, Secrets, type StorageConfig, type UploadOptions, type DownloadOptions, type FileInfo, type ListOptions, type ListResult, type PresignedURLOptions, type SecretOptions, type SetSecretOptions, } from "./storage";
27
+ export { AppTester, createTester, createTestRequest, createTestResponse, createMockContext, createMockContextWithParams, assertStatus, assertOK, assertJSON, assertBody, assertHeader, assertRedirect, snapshotResponse, FixtureFactory, createFixtureFactory, waitFor, sleep, type TestRequestOptions, type TestResponse, } from "./testing";
28
+ export { WebSocketServer, WebSocketClient, PubSub, createWebSocketServer, createWebSocketClient, createPubSub, createRedisPubSub, createMemoryPubSub, isWebSocketRequest, generateConnectionId, createWebSocketData, type WebSocketData, type WebSocketMessage, type WebSocketOptions, type WebSocketHandler, type OpenHandler, type CloseHandler, type ErrorHandler, type WebSocketServerOptions, type WebSocketClientOptions, type PubSubConfig, type PubSubMessage, type PubSubCallback, } from "./websocket";
29
+ export { Logger, PerformanceLogger, createLogger, createRequestLogger, getLogger, setLogger, type LogLevel, type LogEntry, type LoggerConfig as LoggerConfigType, type LoggerContext, } from "./logger";
30
+ export { HealthCheckManager, createHealthMiddleware, createHealthManager, createDatabaseCheck, createCacheCheck, createCustomCheck, createTCPCheck, createHTTPCheck, type HealthStatus, type CheckResult, type HealthCheckResult, type HealthCheckFn, type CheckOptions, type HealthMiddlewareOptions, type DatabaseLike, type CacheLike, } from "./health";
31
+ export { ObservabilityModule, ObservabilityService, ObservabilityInterceptor, BreadcrumbCollector, httpBreadcrumb, logBreadcrumb, extractTraceContext, generateTraceId, generateSpanId, buildTraceparent, type BreadcrumbEntry, type ErrorEvent, type ErrorRequestContext, type ErrorUserContext, type MessageEvent, type ErrorReporter, type ObservabilityOptions, type ObservabilityConfig, } from "./observability";
32
+ export type { GraphQLConfig } from "./graphql/types";
33
+ export type { HTTPMethod, StatusCode, PathParams, RouteHandler, MiddlewareHandler, RouteDefinition, ModuleMetadata, ContextVariableMap, StandardSchema, StandardIssue, ServerConfig, AppOptions, BuenoError, ValidationError, NotFoundError, StandardResult, StandardTypes, InferInput, InferOutput, } from "./types";
34
+ export { ConfigManager, defineConfig, defineConfigFn, createConfigManager, createConfigManagerSync, loadConfigDirect, getConfigManager, setConfigManager, type ConfigManagerOptions, type ConfigChangeCallback, } from "./config";
35
+ export { loadConfig, loadConfigFile, loadConfigFiles, findConfigFile, clearConfigCache, getCachedConfig, watchConfig, validateConfigStructure, getConfigPathFromArgs, getConfigPathFromEnv, type LoadedConfig, } from "./config";
36
+ export { loadEnv, getEnvConfig, getEnvValue, setEnvValue, envConfigMapping, type EnvConfigMapping, } from "./config";
37
+ export { validateConfig, validateConfigSync, validateConfigDefaults, validateWithSchema, assertValidConfig, formatValidationErrors, createConfigError, createCustomValidator, isStandardSchema as isConfigStandardSchema, type ConfigValidationResult, type ConfigValidationError, type ConfigValidationWarning, } from "./config";
38
+ export { deepMerge, mergeConfigs, isObject, } from "./config";
39
+ export type { BuenoConfig, ServerConfig as BuenoServerConfig, DatabaseConfig, CacheConfig, LoggerConfig, HealthConfig, MetricsConfig, TelemetryConfig, FrontendConfig, JobsConfig, NotificationConfig, I18nConfig, DeepPartial, UserConfig, UserConfigFn, InferConfig, } from "./config";
40
+ import { Router } from "./router";
41
+ export declare function createServer(options?: {
42
+ port?: number;
43
+ hostname?: string;
44
+ }): {
45
+ router: Router;
46
+ listen(port?: number, hostname?: string): Promise<Bun.Server<undefined>>;
47
+ };
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}