@buenojs/bueno 0.8.6 → 0.8.8

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 (398) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/README.md +132 -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 +483 -155
  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/context/index.d.ts +143 -0
  111. package/dist/context/index.d.ts.map +1 -0
  112. package/dist/database/index.d.ts +219 -0
  113. package/dist/database/index.d.ts.map +1 -0
  114. package/dist/database/migrations/index.d.ts +146 -0
  115. package/dist/database/migrations/index.d.ts.map +1 -0
  116. package/dist/database/orm/builder.d.ts +122 -0
  117. package/dist/database/orm/builder.d.ts.map +1 -0
  118. package/dist/database/orm/casts/index.d.ts +16 -0
  119. package/dist/database/orm/casts/index.d.ts.map +1 -0
  120. package/dist/database/orm/casts/types.d.ts +16 -0
  121. package/dist/database/orm/casts/types.d.ts.map +1 -0
  122. package/dist/database/orm/compiler.d.ts +90 -0
  123. package/dist/database/orm/compiler.d.ts.map +1 -0
  124. package/dist/database/orm/hooks/index.d.ts +53 -0
  125. package/dist/database/orm/hooks/index.d.ts.map +1 -0
  126. package/dist/database/orm/index.d.ts +21 -0
  127. package/dist/database/orm/index.d.ts.map +1 -0
  128. package/dist/database/orm/model-registry.d.ts +33 -0
  129. package/dist/database/orm/model-registry.d.ts.map +1 -0
  130. package/dist/database/orm/model.d.ts +245 -0
  131. package/dist/database/orm/model.d.ts.map +1 -0
  132. package/dist/database/orm/relationships/base.d.ts +69 -0
  133. package/dist/database/orm/relationships/base.d.ts.map +1 -0
  134. package/dist/database/orm/relationships/belongs-to-many.d.ts +47 -0
  135. package/dist/database/orm/relationships/belongs-to-many.d.ts.map +1 -0
  136. package/dist/database/orm/relationships/belongs-to.d.ts +17 -0
  137. package/dist/database/orm/relationships/belongs-to.d.ts.map +1 -0
  138. package/dist/database/orm/relationships/has-many.d.ts +14 -0
  139. package/dist/database/orm/relationships/has-many.d.ts.map +1 -0
  140. package/dist/database/orm/relationships/has-one.d.ts +14 -0
  141. package/dist/database/orm/relationships/has-one.d.ts.map +1 -0
  142. package/dist/database/orm/relationships/index.d.ts +10 -0
  143. package/dist/database/orm/relationships/index.d.ts.map +1 -0
  144. package/dist/database/orm/scopes/index.d.ts +36 -0
  145. package/dist/database/orm/scopes/index.d.ts.map +1 -0
  146. package/dist/database/schema/index.d.ts +155 -0
  147. package/dist/database/schema/index.d.ts.map +1 -0
  148. package/dist/events/__tests__/event-system.test.d.ts +2 -0
  149. package/dist/events/__tests__/event-system.test.d.ts.map +1 -0
  150. package/dist/events/config.d.ts +16 -0
  151. package/dist/events/config.d.ts.map +1 -0
  152. package/dist/events/example-usage.d.ts +12 -0
  153. package/dist/events/example-usage.d.ts.map +1 -0
  154. package/dist/events/index.d.ts +27 -0
  155. package/dist/events/index.d.ts.map +1 -0
  156. package/dist/events/manager.d.ts +33 -0
  157. package/dist/events/manager.d.ts.map +1 -0
  158. package/dist/events/registry.d.ts +31 -0
  159. package/dist/events/registry.d.ts.map +1 -0
  160. package/dist/events/types.d.ts +105 -0
  161. package/dist/events/types.d.ts.map +1 -0
  162. package/dist/frontend/api-routes.d.ts +189 -0
  163. package/dist/frontend/api-routes.d.ts.map +1 -0
  164. package/dist/frontend/bundler.d.ts +99 -0
  165. package/dist/frontend/bundler.d.ts.map +1 -0
  166. package/dist/frontend/console-client.d.ts +11 -0
  167. package/dist/frontend/console-client.d.ts.map +1 -0
  168. package/dist/frontend/console-stream.d.ts +138 -0
  169. package/dist/frontend/console-stream.d.ts.map +1 -0
  170. package/dist/frontend/dev-server.d.ts +174 -0
  171. package/dist/frontend/dev-server.d.ts.map +1 -0
  172. package/dist/frontend/file-router.d.ts +170 -0
  173. package/dist/frontend/file-router.d.ts.map +1 -0
  174. package/dist/frontend/frameworks/index.d.ts +41 -0
  175. package/dist/frontend/frameworks/index.d.ts.map +1 -0
  176. package/dist/frontend/frameworks/react.d.ts +32 -0
  177. package/dist/frontend/frameworks/react.d.ts.map +1 -0
  178. package/dist/frontend/frameworks/solid.d.ts +42 -0
  179. package/dist/frontend/frameworks/solid.d.ts.map +1 -0
  180. package/dist/frontend/frameworks/svelte.d.ts +57 -0
  181. package/dist/frontend/frameworks/svelte.d.ts.map +1 -0
  182. package/dist/frontend/frameworks/vue.d.ts +36 -0
  183. package/dist/frontend/frameworks/vue.d.ts.map +1 -0
  184. package/dist/frontend/hmr-client.d.ts +22 -0
  185. package/dist/frontend/hmr-client.d.ts.map +1 -0
  186. package/dist/frontend/hmr.d.ts +185 -0
  187. package/dist/frontend/hmr.d.ts.map +1 -0
  188. package/dist/frontend/index.d.ts +34 -0
  189. package/dist/frontend/index.d.ts.map +1 -0
  190. package/dist/frontend/islands.d.ts +135 -0
  191. package/dist/frontend/islands.d.ts.map +1 -0
  192. package/dist/frontend/isr.d.ts +143 -0
  193. package/dist/frontend/isr.d.ts.map +1 -0
  194. package/dist/frontend/layout.d.ts +140 -0
  195. package/dist/frontend/layout.d.ts.map +1 -0
  196. package/dist/frontend/ssr/react.d.ts +118 -0
  197. package/dist/frontend/ssr/react.d.ts.map +1 -0
  198. package/dist/frontend/ssr/solid.d.ts +141 -0
  199. package/dist/frontend/ssr/solid.d.ts.map +1 -0
  200. package/dist/frontend/ssr/svelte.d.ts +158 -0
  201. package/dist/frontend/ssr/svelte.d.ts.map +1 -0
  202. package/dist/frontend/ssr/vue.d.ts +161 -0
  203. package/dist/frontend/ssr/vue.d.ts.map +1 -0
  204. package/dist/frontend/ssr.d.ts +147 -0
  205. package/dist/frontend/ssr.d.ts.map +1 -0
  206. package/dist/frontend/types.d.ts +1902 -0
  207. package/dist/frontend/types.d.ts.map +1 -0
  208. package/dist/graphql/built-in-engine.d.ts +36 -0
  209. package/dist/graphql/built-in-engine.d.ts.map +1 -0
  210. package/dist/graphql/context-builder.d.ts +44 -0
  211. package/dist/graphql/context-builder.d.ts.map +1 -0
  212. package/dist/graphql/decorators.d.ts +162 -0
  213. package/dist/graphql/decorators.d.ts.map +1 -0
  214. package/dist/graphql/execution-pipeline.d.ts +67 -0
  215. package/dist/graphql/execution-pipeline.d.ts.map +1 -0
  216. package/dist/graphql/graphql-module.d.ts +70 -0
  217. package/dist/graphql/graphql-module.d.ts.map +1 -0
  218. package/dist/graphql/index.d.ts +48 -0
  219. package/dist/graphql/index.d.ts.map +1 -0
  220. package/dist/graphql/metadata.d.ts +37 -0
  221. package/dist/graphql/metadata.d.ts.map +1 -0
  222. package/dist/graphql/schema-builder.d.ts +34 -0
  223. package/dist/graphql/schema-builder.d.ts.map +1 -0
  224. package/dist/graphql/subscription-handler.d.ts +47 -0
  225. package/dist/graphql/subscription-handler.d.ts.map +1 -0
  226. package/dist/graphql/types.d.ts +252 -0
  227. package/dist/graphql/types.d.ts.map +1 -0
  228. package/dist/health/index.d.ts +176 -0
  229. package/dist/health/index.d.ts.map +1 -0
  230. package/dist/i18n/engine.d.ts +105 -0
  231. package/dist/i18n/engine.d.ts.map +1 -0
  232. package/dist/i18n/index.d.ts +13 -0
  233. package/dist/i18n/index.d.ts.map +1 -0
  234. package/dist/i18n/loader.d.ts +79 -0
  235. package/dist/i18n/loader.d.ts.map +1 -0
  236. package/dist/i18n/middleware.d.ts +96 -0
  237. package/dist/i18n/middleware.d.ts.map +1 -0
  238. package/dist/i18n/negotiator.d.ts +84 -0
  239. package/dist/i18n/negotiator.d.ts.map +1 -0
  240. package/dist/i18n/types.d.ts +129 -0
  241. package/dist/i18n/types.d.ts.map +1 -0
  242. package/dist/index.d.ts +48 -0
  243. package/dist/index.d.ts.map +1 -0
  244. package/dist/jobs/drivers/memory.d.ts +38 -0
  245. package/dist/jobs/drivers/memory.d.ts.map +1 -0
  246. package/dist/jobs/drivers/redis.d.ts +34 -0
  247. package/dist/jobs/drivers/redis.d.ts.map +1 -0
  248. package/dist/jobs/index.d.ts +12 -0
  249. package/dist/jobs/index.d.ts.map +1 -0
  250. package/dist/jobs/queue.d.ts +93 -0
  251. package/dist/jobs/queue.d.ts.map +1 -0
  252. package/dist/jobs/types.d.ts +193 -0
  253. package/dist/jobs/types.d.ts.map +1 -0
  254. package/dist/jobs/worker.d.ts +91 -0
  255. package/dist/jobs/worker.d.ts.map +1 -0
  256. package/dist/lock/index.d.ts +141 -0
  257. package/dist/lock/index.d.ts.map +1 -0
  258. package/dist/logger/index.d.ts +156 -0
  259. package/dist/logger/index.d.ts.map +1 -0
  260. package/dist/logger/transports/index.d.ts +371 -0
  261. package/dist/logger/transports/index.d.ts.map +1 -0
  262. package/dist/metrics/index.d.ts +163 -0
  263. package/dist/metrics/index.d.ts.map +1 -0
  264. package/dist/middleware/built-in.d.ts +50 -0
  265. package/dist/middleware/built-in.d.ts.map +1 -0
  266. package/dist/middleware/index.d.ts +40 -0
  267. package/dist/middleware/index.d.ts.map +1 -0
  268. package/dist/migrations/index.d.ts +10 -0
  269. package/dist/migrations/index.d.ts.map +1 -0
  270. package/dist/modules/filters.d.ts +150 -0
  271. package/dist/modules/filters.d.ts.map +1 -0
  272. package/dist/modules/guards.d.ts +188 -0
  273. package/dist/modules/guards.d.ts.map +1 -0
  274. package/dist/modules/index.d.ts +266 -0
  275. package/dist/modules/index.d.ts.map +1 -0
  276. package/dist/modules/interceptors.d.ts +242 -0
  277. package/dist/modules/interceptors.d.ts.map +1 -0
  278. package/dist/modules/lazy.d.ts +187 -0
  279. package/dist/modules/lazy.d.ts.map +1 -0
  280. package/dist/modules/lifecycle.d.ts +221 -0
  281. package/dist/modules/lifecycle.d.ts.map +1 -0
  282. package/dist/modules/metadata.d.ts +32 -0
  283. package/dist/modules/metadata.d.ts.map +1 -0
  284. package/dist/modules/pipes.d.ts +287 -0
  285. package/dist/modules/pipes.d.ts.map +1 -0
  286. package/dist/notification/channels/base.d.ts +32 -0
  287. package/dist/notification/channels/base.d.ts.map +1 -0
  288. package/dist/notification/channels/email.d.ts +37 -0
  289. package/dist/notification/channels/email.d.ts.map +1 -0
  290. package/dist/notification/channels/push.d.ts +37 -0
  291. package/dist/notification/channels/push.d.ts.map +1 -0
  292. package/dist/notification/channels/sms.d.ts +37 -0
  293. package/dist/notification/channels/sms.d.ts.map +1 -0
  294. package/dist/notification/channels/whatsapp.d.ts +37 -0
  295. package/dist/notification/channels/whatsapp.d.ts.map +1 -0
  296. package/dist/notification/index.d.ts +15 -0
  297. package/dist/notification/index.d.ts.map +1 -0
  298. package/dist/notification/service.d.ts +100 -0
  299. package/dist/notification/service.d.ts.map +1 -0
  300. package/dist/notification/types.d.ts +253 -0
  301. package/dist/notification/types.d.ts.map +1 -0
  302. package/dist/observability/__tests__/observability.test.d.ts +2 -0
  303. package/dist/observability/__tests__/observability.test.d.ts.map +1 -0
  304. package/dist/observability/breadcrumbs.d.ts +48 -0
  305. package/dist/observability/breadcrumbs.d.ts.map +1 -0
  306. package/dist/observability/index.d.ts +95 -0
  307. package/dist/observability/index.d.ts.map +1 -0
  308. package/dist/observability/interceptor.d.ts +19 -0
  309. package/dist/observability/interceptor.d.ts.map +1 -0
  310. package/dist/observability/service.d.ts +101 -0
  311. package/dist/observability/service.d.ts.map +1 -0
  312. package/dist/observability/trace.d.ts +21 -0
  313. package/dist/observability/trace.d.ts.map +1 -0
  314. package/dist/observability/types.d.ts +172 -0
  315. package/dist/observability/types.d.ts.map +1 -0
  316. package/dist/openapi/__tests__/decorators.test.d.ts +2 -0
  317. package/dist/openapi/__tests__/decorators.test.d.ts.map +1 -0
  318. package/dist/openapi/__tests__/document-builder.test.d.ts +2 -0
  319. package/dist/openapi/__tests__/document-builder.test.d.ts.map +1 -0
  320. package/dist/openapi/__tests__/route-scanner.test.d.ts +2 -0
  321. package/dist/openapi/__tests__/route-scanner.test.d.ts.map +1 -0
  322. package/dist/openapi/__tests__/schema-generator.test.d.ts +2 -0
  323. package/dist/openapi/__tests__/schema-generator.test.d.ts.map +1 -0
  324. package/dist/openapi/decorators.d.ts +173 -0
  325. package/dist/openapi/decorators.d.ts.map +1 -0
  326. package/dist/openapi/document-builder.d.ts +82 -0
  327. package/dist/openapi/document-builder.d.ts.map +1 -0
  328. package/dist/openapi/index.d.ts +48 -0
  329. package/dist/openapi/index.d.ts.map +1 -0
  330. package/dist/openapi/metadata.d.ts +36 -0
  331. package/dist/openapi/metadata.d.ts.map +1 -0
  332. package/dist/openapi/route-scanner.d.ts +34 -0
  333. package/dist/openapi/route-scanner.d.ts.map +1 -0
  334. package/dist/openapi/schema-generator.d.ts +53 -0
  335. package/dist/openapi/schema-generator.d.ts.map +1 -0
  336. package/dist/openapi/swagger-module.d.ts +57 -0
  337. package/dist/openapi/swagger-module.d.ts.map +1 -0
  338. package/dist/openapi/types.d.ts +344 -0
  339. package/dist/openapi/types.d.ts.map +1 -0
  340. package/dist/orm/index.d.ts +10 -0
  341. package/dist/orm/index.d.ts.map +1 -0
  342. package/dist/router/index.d.ts +73 -0
  343. package/dist/router/index.d.ts.map +1 -0
  344. package/dist/router/linear.d.ts +54 -0
  345. package/dist/router/linear.d.ts.map +1 -0
  346. package/dist/router/regex.d.ts +49 -0
  347. package/dist/router/regex.d.ts.map +1 -0
  348. package/dist/router/tree.d.ts +112 -0
  349. package/dist/router/tree.d.ts.map +1 -0
  350. package/dist/rpc/index.d.ts +321 -0
  351. package/dist/rpc/index.d.ts.map +1 -0
  352. package/dist/schema/index.d.ts +10 -0
  353. package/dist/schema/index.d.ts.map +1 -0
  354. package/dist/security/index.d.ts +126 -0
  355. package/dist/security/index.d.ts.map +1 -0
  356. package/dist/ssg/index.d.ts +73 -0
  357. package/dist/ssg/index.d.ts.map +1 -0
  358. package/dist/storage/index.d.ts +99 -0
  359. package/dist/storage/index.d.ts.map +1 -0
  360. package/dist/telemetry/index.d.ts +376 -0
  361. package/dist/telemetry/index.d.ts.map +1 -0
  362. package/dist/template/index.d.ts +7 -0
  363. package/dist/template/index.d.ts.map +1 -0
  364. package/dist/templates/engine.d.ts +60 -0
  365. package/dist/templates/engine.d.ts.map +1 -0
  366. package/dist/templates/index.d.ts +9 -0
  367. package/dist/templates/index.d.ts.map +1 -0
  368. package/dist/templates/loader.d.ts +45 -0
  369. package/dist/templates/loader.d.ts.map +1 -0
  370. package/dist/templates/renderers/markdown.d.ts +46 -0
  371. package/dist/templates/renderers/markdown.d.ts.map +1 -0
  372. package/dist/templates/renderers/simple.d.ts +35 -0
  373. package/dist/templates/renderers/simple.d.ts.map +1 -0
  374. package/dist/templates/types.d.ts +138 -0
  375. package/dist/templates/types.d.ts.map +1 -0
  376. package/dist/testing/index.d.ts +539 -0
  377. package/dist/testing/index.d.ts.map +1 -0
  378. package/dist/types/index.d.ts +116 -0
  379. package/dist/types/index.d.ts.map +1 -0
  380. package/dist/validation/index.d.ts +89 -0
  381. package/dist/validation/index.d.ts.map +1 -0
  382. package/dist/validation/schemas.d.ts +243 -0
  383. package/dist/validation/schemas.d.ts.map +1 -0
  384. package/dist/websocket/index.d.ts +252 -0
  385. package/dist/websocket/index.d.ts.map +1 -0
  386. package/package.json +3 -3
  387. package/src/cli/commands/add-frontend.ts +444 -0
  388. package/src/cli/commands/new.ts +23 -0
  389. package/src/cli/index.ts +1 -0
  390. package/src/cli/templates/frontend/react.ts +2 -1
  391. package/src/cli/templates/frontend/solid.ts +2 -1
  392. package/src/cli/templates/frontend/svelte.ts +2 -1
  393. package/src/cli/templates/frontend/vue.ts +2 -1
  394. package/src/cli/templates/project/api.ts +1 -1
  395. package/src/cli/templates/project/default.ts +1 -1
  396. package/src/cli/templates/project/fullstack.ts +14 -104
  397. package/src/cli/templates/project/website.ts +62 -11
  398. package/tsconfig.declaration.json +14 -0
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Validation System
3
+ *
4
+ * Multi-validator support using Standard Schema interface.
5
+ * Works with Zod 4, Valibot v1, ArkType, Typia, and any Standard Schema compliant library.
6
+ */
7
+ import type { Context } from "../context";
8
+ import type { Middleware, StandardIssue, StandardSchema } from "../types";
9
+ export type ValidationResult<T> = {
10
+ success: true;
11
+ data: T;
12
+ } | {
13
+ success: false;
14
+ issues: StandardIssue[];
15
+ };
16
+ export interface ValidatorOptions {
17
+ body?: StandardSchema;
18
+ query?: StandardSchema;
19
+ params?: StandardSchema;
20
+ headers?: StandardSchema;
21
+ }
22
+ /**
23
+ * Validate data against any Standard Schema compliant schema
24
+ *
25
+ * Supports:
26
+ * - Zod 4+ (zod)
27
+ * - Valibot v1+ (valibot)
28
+ * - ArkType (arktype)
29
+ * - Typia 7+ (typia) - use typia.createValidate<T>() for Standard Schema compatibility
30
+ * - Any library implementing Standard Schema
31
+ */
32
+ export declare function validate<T>(schema: StandardSchema<unknown, T>, data: unknown): Promise<ValidationResult<T>>;
33
+ /**
34
+ * Synchronous validation (for sync validators only)
35
+ */
36
+ export declare function validateSync<T>(schema: StandardSchema<unknown, T>, data: unknown): ValidationResult<T>;
37
+ /**
38
+ * Validate request body
39
+ */
40
+ export declare function validateBody<T>(context: Context, schema: StandardSchema<unknown, T>): Promise<ValidationResult<T>>;
41
+ /**
42
+ * Validate query parameters
43
+ */
44
+ export declare function validateQuery<T>(context: Context, schema: StandardSchema<unknown, T>): ValidationResult<T>;
45
+ /**
46
+ * Validate path parameters
47
+ */
48
+ export declare function validateParams<T>(context: Context, schema: StandardSchema<unknown, T>): ValidationResult<T>;
49
+ /**
50
+ * Validate headers
51
+ */
52
+ export declare function validateHeaders<T>(context: Context, schema: StandardSchema<unknown, T>): ValidationResult<T>;
53
+ /**
54
+ * Create validation middleware
55
+ */
56
+ export declare function createValidator(options: ValidatorOptions): Middleware;
57
+ /**
58
+ * Body validation decorator for route handlers
59
+ */
60
+ export declare function WithBody(schema: StandardSchema): (target: unknown, propertyKey: string | symbol, descriptor: PropertyDescriptor) => PropertyDescriptor;
61
+ /**
62
+ * Query validation decorator for route handlers
63
+ */
64
+ export declare function WithQuery(schema: StandardSchema): (target: unknown, propertyKey: string | symbol, descriptor: PropertyDescriptor) => PropertyDescriptor;
65
+ /**
66
+ * Check if a value is a Standard Schema
67
+ */
68
+ export declare function isStandardSchema(value: unknown): value is StandardSchema;
69
+ /**
70
+ * Assert that a schema implements Standard Schema
71
+ */
72
+ export declare function assertStandardSchema(schema: unknown, name?: string): asserts schema is StandardSchema;
73
+ /**
74
+ * Validate environment variables against a schema
75
+ *
76
+ * @param schema - Validation schema for environment variables
77
+ * @param envVars - Environment variables to validate
78
+ * @returns Validation result with transformed values or error details
79
+ */
80
+ export declare function validateEnv<T>(schema: StandardSchema<unknown, T>, envVars: Record<string, string>): Promise<ValidationResult<T>>;
81
+ /**
82
+ * Validate environment variables with detailed error reporting
83
+ *
84
+ * @param schema - Validation schema for environment variables
85
+ * @param envVars - Environment variables to validate
86
+ * @returns Validation result with transformed values or detailed error information
87
+ */
88
+ export declare function validateEnvSync<T>(schema: StandardSchema<unknown, T>, envVars: Record<string, string>): ValidationResult<T>;
89
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Built-in Schema System
3
+ * Lightweight validation schema builder for common use cases.
4
+ * No external dependencies required.
5
+ */
6
+ import type { StandardResult } from "../types";
7
+ export type FieldValidator = (value: unknown) => {
8
+ valid: boolean;
9
+ error?: string;
10
+ value?: unknown;
11
+ };
12
+ export interface SchemaDefinition {
13
+ [key: string]: FieldValidator | SchemaDefinition | undefined;
14
+ }
15
+ export declare const Fields: {
16
+ /**
17
+ * String field validators
18
+ */
19
+ string: (options?: {
20
+ min?: number;
21
+ max?: number;
22
+ pattern?: RegExp;
23
+ email?: boolean;
24
+ url?: boolean;
25
+ uuid?: boolean;
26
+ optional?: boolean;
27
+ }) => (value: unknown) => {
28
+ valid: boolean;
29
+ error: string;
30
+ value?: undefined;
31
+ } | {
32
+ valid: boolean;
33
+ value: string;
34
+ error?: undefined;
35
+ };
36
+ /**
37
+ * Number field validators (coerces strings to numbers)
38
+ */
39
+ number: (options?: {
40
+ min?: number;
41
+ max?: number;
42
+ integer?: boolean;
43
+ positive?: boolean;
44
+ optional?: boolean;
45
+ default?: number;
46
+ coerce?: boolean;
47
+ }) => (value: unknown, validateOnly?: boolean) => {
48
+ valid: boolean;
49
+ value: number;
50
+ error?: undefined;
51
+ } | {
52
+ valid: boolean;
53
+ error: string;
54
+ value?: undefined;
55
+ };
56
+ /**
57
+ * Boolean field validator
58
+ */
59
+ boolean: (options?: {
60
+ optional?: boolean;
61
+ }) => (value: unknown) => {
62
+ valid: boolean;
63
+ error: string;
64
+ value?: undefined;
65
+ } | {
66
+ valid: boolean;
67
+ value: boolean;
68
+ error?: undefined;
69
+ };
70
+ /**
71
+ * Array field validators
72
+ */
73
+ array: (options?: {
74
+ min?: number;
75
+ max?: number;
76
+ itemValidator?: FieldValidator;
77
+ optional?: boolean;
78
+ }) => (value: unknown) => {
79
+ valid: boolean;
80
+ error: string;
81
+ value?: undefined;
82
+ } | {
83
+ valid: boolean;
84
+ value: any[];
85
+ error?: undefined;
86
+ };
87
+ /**
88
+ * Enum field validator
89
+ */
90
+ enum: (values: readonly (string | number)[], options?: {
91
+ optional?: boolean;
92
+ }) => (value: unknown) => {
93
+ valid: boolean;
94
+ error: string;
95
+ value?: undefined;
96
+ } | {
97
+ valid: boolean;
98
+ value: unknown;
99
+ error?: undefined;
100
+ };
101
+ /**
102
+ * Custom validator function
103
+ */
104
+ custom: (validate: (value: unknown) => boolean, message?: string) => (value: unknown) => {
105
+ valid: boolean;
106
+ value: unknown;
107
+ error?: undefined;
108
+ } | {
109
+ valid: boolean;
110
+ error: string;
111
+ value?: undefined;
112
+ };
113
+ /**
114
+ * Environment variable validators
115
+ */
116
+ env: {
117
+ /**
118
+ * Required environment variable validator
119
+ */
120
+ required: (options?: {
121
+ optional?: boolean;
122
+ }) => (value: unknown) => {
123
+ valid: boolean;
124
+ error: string;
125
+ value?: undefined;
126
+ } | {
127
+ valid: boolean;
128
+ value: unknown;
129
+ error?: undefined;
130
+ };
131
+ /**
132
+ * Port number validator (1-65535)
133
+ */
134
+ port: (options?: {
135
+ optional?: boolean;
136
+ }) => (value: unknown) => {
137
+ valid: boolean;
138
+ error: string;
139
+ value?: undefined;
140
+ } | {
141
+ valid: boolean;
142
+ value: number;
143
+ error?: undefined;
144
+ };
145
+ /**
146
+ * URL validator
147
+ */
148
+ url: (options?: {
149
+ optional?: boolean;
150
+ }) => (value: unknown) => {
151
+ valid: boolean;
152
+ error: string;
153
+ value?: undefined;
154
+ } | {
155
+ valid: boolean;
156
+ value: string;
157
+ error?: undefined;
158
+ };
159
+ /**
160
+ * Database URL validator
161
+ */
162
+ databaseUrl: (options?: {
163
+ optional?: boolean;
164
+ }) => (value: unknown) => {
165
+ valid: boolean;
166
+ error: string;
167
+ value?: undefined;
168
+ } | {
169
+ valid: boolean;
170
+ value: string;
171
+ error?: undefined;
172
+ };
173
+ /**
174
+ * Boolean validator
175
+ */
176
+ boolean: (options?: {
177
+ optional?: boolean;
178
+ }) => (value: unknown) => {
179
+ valid: boolean;
180
+ error: string;
181
+ value?: undefined;
182
+ } | {
183
+ valid: boolean;
184
+ value: boolean;
185
+ error?: undefined;
186
+ };
187
+ /**
188
+ * Number validator
189
+ */
190
+ number: (options?: {
191
+ min?: number;
192
+ max?: number;
193
+ optional?: boolean;
194
+ integer?: boolean;
195
+ }) => (value: unknown) => {
196
+ valid: boolean;
197
+ error: string;
198
+ value?: undefined;
199
+ } | {
200
+ valid: boolean;
201
+ value: number;
202
+ error?: undefined;
203
+ };
204
+ };
205
+ };
206
+ /**
207
+ * Built-in schema validator
208
+ * Simple, zero-dependency schema validation
209
+ */
210
+ export declare class Schema {
211
+ private definition;
212
+ constructor(definition: SchemaDefinition);
213
+ /**
214
+ * Create a new schema from field definitions
215
+ */
216
+ static object<T extends SchemaDefinition>(definition: T): Schema;
217
+ /**
218
+ * Validate data synchronously
219
+ */
220
+ validateSync(data: unknown): StandardResult<Record<string, unknown>>;
221
+ /**
222
+ * Validate data asynchronously
223
+ * Currently same as sync, but allows for async validators in future
224
+ */
225
+ validate(data: unknown): Promise<StandardResult<Record<string, unknown>>>;
226
+ /**
227
+ * Implement Standard Schema interface for compatibility with @buenojs/bueno validators
228
+ */
229
+ get ["~standard"](): {
230
+ validate: (data: unknown) => StandardResult<Record<string, unknown>>;
231
+ version: number;
232
+ };
233
+ }
234
+ /**
235
+ * Create a schema object
236
+ * Alias for Schema.object() for convenience
237
+ */
238
+ export declare function schema<T extends SchemaDefinition>(definition: T): Schema;
239
+ /**
240
+ * Standard environment variable schema for Bueno Framework
241
+ */
242
+ export declare const envSchema: Schema;
243
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAC;AAI9D,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC7D;AAID,eAAO,MAAM,MAAM;IAClB;;OAEG;uBAEO;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,QAAQ,CAAC,EAAE,OAAO,CAAC;KACnB,MAEO,OAAO,OAAO;;;;;;;;;IAsDvB;;OAEG;uBAEO;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KACjB,MAIO,OAAO,OAAO,EAAE,sBAAoB;;;;;;;;;IA4C7C;;OAEG;wBACgB;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,MAChC,OAAO,OAAO;;;;;;;;;IAavB;;OAEG;sBAEO;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,aAAa,CAAC,EAAE,cAAc,CAAC;QAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;KACnB,MAEO,OAAO,OAAO;;;;;;;;;IAuCvB;;OAEG;mBAEM,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,YAC3B;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,MAEvB,OAAO,OAAO;;;;;;;;;IAgBvB;;OAEG;uBAEQ,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,wBAG7B,OAAO,OAAO;;;;;;;;;IAQvB;;OAEG;;QAEF;;WAEG;6BACiB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,MACjC,OAAO,OAAO;;;;;;;;;QAgBvB;;WAEG;yBACa;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,MAC7B,OAAO,OAAO;;;;;;;;;QAiBvB;;WAEG;wBACY;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,MAC5B,OAAO,OAAO;;;;;;;;;QAkBvB;;WAEG;gCACoB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,MACpC,OAAO,OAAO;;;;;;;;;QAyBvB;;WAEG;4BACgB;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,MAChC,OAAO,OAAO;;;;;;;;;QAiBvB;;WAEG;2BAEO;YACR,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,OAAO,CAAC;SAClB,MAEO,OAAO,OAAO;;;;;;;;;;CA0BxB,CAAC;AAIF;;;GAGG;AACH,qBAAa,MAAM;IACN,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,gBAAgB;IAEhD;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,gBAAgB,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM;IAIhE;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkCpE;;;OAGG;IACG,QAAQ,CACb,IAAI,EAAE,OAAO,GACX,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAInD;;OAEG;IACH,IAAI,CAAC,WAAW,CAAC;yBAEE,OAAO;;MAGzB;CACD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,gBAAgB,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,CAExE;AAID;;GAEG;AACH,eAAO,MAAM,SAAS,QAoCpB,CAAC"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * WebSocket Helpers
3
+ *
4
+ * Utilities for WebSocket connections, pub/sub patterns,
5
+ * and real-time communication in Bueno applications.
6
+ */
7
+ export interface WebSocketData {
8
+ id: string;
9
+ userId?: string;
10
+ [key: string]: unknown;
11
+ }
12
+ export interface WebSocketMessage {
13
+ type: string;
14
+ payload: unknown;
15
+ timestamp: number;
16
+ }
17
+ export interface WebSocketOptions {
18
+ idleTimeout?: number;
19
+ maxPayloadLength?: number;
20
+ perMessageDeflate?: boolean;
21
+ }
22
+ export type WebSocketHandler = (ws: Bun.ServerWebSocket<WebSocketData>, message: WebSocketMessage) => void | Promise<void>;
23
+ export type OpenHandler = (ws: Bun.ServerWebSocket<WebSocketData>) => void | Promise<void>;
24
+ export type CloseHandler = (ws: Bun.ServerWebSocket<WebSocketData>, code: number, reason: string) => void | Promise<void>;
25
+ export type ErrorHandler = (ws: Bun.ServerWebSocket<WebSocketData>, error: Error) => void | Promise<void>;
26
+ export interface WebSocketServerOptions extends WebSocketOptions {
27
+ onMessage?: WebSocketHandler;
28
+ onOpen?: OpenHandler;
29
+ onClose?: CloseHandler;
30
+ onError?: ErrorHandler;
31
+ }
32
+ export declare class WebSocketServer {
33
+ private options;
34
+ private connections;
35
+ private rooms;
36
+ private messageHandlers;
37
+ constructor(options?: WebSocketServerOptions);
38
+ /**
39
+ * Get Bun WebSocket configuration
40
+ */
41
+ getWebSocketConfig(): Bun.WebSocketHandler<WebSocketData>;
42
+ /**
43
+ * Register a message type handler
44
+ */
45
+ on(type: string, handler: WebSocketHandler): this;
46
+ /**
47
+ * Broadcast to all connections
48
+ */
49
+ broadcast(type: string, payload: unknown): void;
50
+ /**
51
+ * Send to specific connection
52
+ */
53
+ send(connectionId: string, type: string, payload: unknown): boolean;
54
+ /**
55
+ * Broadcast to a room
56
+ */
57
+ broadcastToRoom(room: string, type: string, payload: unknown): void;
58
+ /**
59
+ * Join a room
60
+ */
61
+ joinRoom(connectionId: string, room: string): void;
62
+ /**
63
+ * Leave a room
64
+ */
65
+ leaveRoom(connectionId: string, room: string): void;
66
+ /**
67
+ * Get room members
68
+ */
69
+ getRoomMembers(room: string): string[];
70
+ /**
71
+ * Get all connection IDs
72
+ */
73
+ getConnectionIds(): string[];
74
+ /**
75
+ * Get connection count
76
+ */
77
+ get connectionCount(): number;
78
+ /**
79
+ * Check if connection exists
80
+ */
81
+ hasConnection(connectionId: string): boolean;
82
+ /**
83
+ * Close a connection
84
+ */
85
+ closeConnection(connectionId: string, code?: number, reason?: string): boolean;
86
+ /**
87
+ * Close all connections
88
+ */
89
+ closeAll(code?: number, reason?: string): void;
90
+ }
91
+ export interface WebSocketClientOptions {
92
+ url: string;
93
+ protocols?: string | string[];
94
+ reconnect?: boolean;
95
+ reconnectInterval?: number;
96
+ maxReconnectAttempts?: number;
97
+ onOpen?: () => void;
98
+ onClose?: (event: CloseEvent) => void;
99
+ onMessage?: (message: WebSocketMessage) => void;
100
+ onError?: (event: Event) => void;
101
+ }
102
+ export declare class WebSocketClient {
103
+ private ws;
104
+ private options;
105
+ private reconnectAttempts;
106
+ private shouldReconnect;
107
+ private messageQueue;
108
+ constructor(options: WebSocketClientOptions);
109
+ /**
110
+ * Connect to WebSocket server
111
+ */
112
+ connect(): Promise<void>;
113
+ /**
114
+ * Attempt to reconnect
115
+ */
116
+ private attemptReconnect;
117
+ /**
118
+ * Send a message
119
+ */
120
+ send(type: string, payload: unknown): void;
121
+ /**
122
+ * Send raw data
123
+ */
124
+ sendRaw(data: string | ArrayBuffer | Blob): Promise<void>;
125
+ /**
126
+ * Close the connection
127
+ */
128
+ close(code?: number, reason?: string): void;
129
+ /**
130
+ * Check if connected
131
+ */
132
+ get isConnected(): boolean;
133
+ /**
134
+ * Get ready state
135
+ */
136
+ get readyState(): number;
137
+ }
138
+ export interface PubSubConfig {
139
+ driver?: "redis" | "memory";
140
+ url?: string;
141
+ keyPrefix?: string;
142
+ reconnect?: boolean;
143
+ reconnectInterval?: number;
144
+ maxReconnectAttempts?: number;
145
+ }
146
+ export interface PubSubMessage {
147
+ channel: string;
148
+ pattern?: string;
149
+ data: unknown;
150
+ timestamp: number;
151
+ }
152
+ export type PubSubCallback = (message: PubSubMessage) => void | Promise<void>;
153
+ export declare class PubSub {
154
+ private driver;
155
+ private driverType;
156
+ private _isConnected;
157
+ constructor(config?: PubSubConfig);
158
+ /**
159
+ * Connect to the pub/sub backend (Redis only)
160
+ */
161
+ connect(): Promise<void>;
162
+ /**
163
+ * Disconnect from the pub/sub backend
164
+ */
165
+ disconnect(): Promise<void>;
166
+ /**
167
+ * Check if connected
168
+ */
169
+ get isConnected(): boolean;
170
+ /**
171
+ * Get the driver type
172
+ */
173
+ getDriverType(): "redis" | "memory";
174
+ /**
175
+ * Publish a message to a channel
176
+ * Returns the number of subscribers that received the message
177
+ */
178
+ publish(channel: string, data: unknown): Promise<number>;
179
+ /**
180
+ * Subscribe to a channel
181
+ * Returns an unsubscribe function
182
+ */
183
+ subscribe(channel: string, callback: PubSubCallback): Promise<() => void>;
184
+ /**
185
+ * Subscribe to channels matching a pattern
186
+ * Supports * (any characters) and ? (single character)
187
+ * Returns an unsubscribe function
188
+ */
189
+ psubscribe(pattern: string, callback: PubSubCallback): Promise<() => void>;
190
+ /**
191
+ * Unsubscribe all callbacks from a channel
192
+ */
193
+ unsubscribe(channel: string): Promise<void>;
194
+ /**
195
+ * Unsubscribe all callbacks from a pattern
196
+ */
197
+ punsubscribe(pattern: string): Promise<void>;
198
+ /**
199
+ * Get subscriber count for a specific channel
200
+ */
201
+ getChannelSubscribers(channel: string): number;
202
+ /**
203
+ * Get subscriber count for a specific pattern
204
+ */
205
+ getPatternSubscribers(pattern: string): number;
206
+ /**
207
+ * Get total subscriber count across all channels and patterns
208
+ */
209
+ getTotalSubscribers(): number;
210
+ /**
211
+ * Clear all subscriptions
212
+ */
213
+ clear(): Promise<void>;
214
+ /**
215
+ * Destroy the pub/sub instance and release resources
216
+ */
217
+ destroy(): void;
218
+ }
219
+ /**
220
+ * Create a WebSocket server
221
+ */
222
+ export declare function createWebSocketServer(options?: WebSocketServerOptions): WebSocketServer;
223
+ /**
224
+ * Create a WebSocket client
225
+ */
226
+ export declare function createWebSocketClient(options: WebSocketClientOptions): WebSocketClient;
227
+ /**
228
+ * Create a pub/sub instance
229
+ * @param config Configuration options including driver type and Redis URL
230
+ */
231
+ export declare function createPubSub(config?: PubSubConfig): PubSub;
232
+ /**
233
+ * Create a Redis pub/sub instance (convenience function)
234
+ */
235
+ export declare function createRedisPubSub(url: string, options?: Omit<PubSubConfig, "driver" | "url">): PubSub;
236
+ /**
237
+ * Create an in-memory pub/sub instance (convenience function)
238
+ */
239
+ export declare function createMemoryPubSub(): PubSub;
240
+ /**
241
+ * Check if request is a WebSocket upgrade request
242
+ */
243
+ export declare function isWebSocketRequest(request: Request): boolean;
244
+ /**
245
+ * Generate WebSocket connection ID
246
+ */
247
+ export declare function generateConnectionId(): string;
248
+ /**
249
+ * Create WebSocket data for new connection
250
+ */
251
+ export declare function createWebSocketData(data?: Partial<WebSocketData>): WebSocketData;
252
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/websocket/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buenojs/bueno",
3
- "version": "0.8.6",
3
+ "version": "0.8.8",
4
4
  "description": "A Bun-Native Full-Stack Framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -10,7 +10,7 @@
10
10
  "access": "public"
11
11
  },
12
12
  "bin": {
13
- "bueno": "./dist/cli/index.js"
13
+ "bueno": "./dist/cli/bin.js"
14
14
  },
15
15
  "exports": {
16
16
  ".": {
@@ -148,7 +148,7 @@
148
148
  "test:watch": "bun test --watch",
149
149
  "test:coverage": "bun test --coverage",
150
150
  "coverage": "bun test --coverage coverage/lcov.info",
151
- "build": "rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true",
151
+ "build": "rm -rf dist && bun build ./src/index.ts ./src/database/index.ts ./src/schema/index.ts ./src/migrations/index.ts ./src/orm/index.ts ./src/jobs/index.ts ./src/templates/index.ts ./src/template/index.ts ./src/openapi/index.ts ./src/notification/index.ts ./src/i18n/index.ts ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts ./src/telemetry/index.ts ./src/observability/index.ts ./src/graphql/index.ts ./src/lock/index.ts ./src/health/index.ts ./src/logger/index.ts ./src/metrics/index.ts ./src/rpc/index.ts ./src/context/index.ts ./src/container/index.ts ./src/testing/index.ts ./src/types/index.ts --outdir ./dist --target bun && test -d dist/src && (cp -r dist/src/* dist/ && rm -rf dist/src) || true && tsc --project tsconfig.declaration.json 2>&1 || true",
152
152
  "build:cli": "bun build ./src/cli/bin.ts ./src/frontend/index.ts ./src/router/index.ts ./src/middleware/index.ts ./src/modules/index.ts --outdir ./dist/cli --target bun",
153
153
  "typecheck": "tsc --noEmit",
154
154
  "lint": "bunx biome check ./src",