@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 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Built-in Middleware
3
+ *
4
+ * Common middleware utilities for logging, CORS, request ID, etc.
5
+ */
6
+ import type { Context } from "../context";
7
+ import type { Middleware } from "../index";
8
+ export interface LoggerOptions {
9
+ format?: "json" | "text";
10
+ level?: "debug" | "info" | "warn" | "error";
11
+ }
12
+ export declare function logger(options?: LoggerOptions): Middleware;
13
+ export interface CorsOptions {
14
+ origin?: string | string[] | ((origin: string) => string | undefined);
15
+ methods?: string[];
16
+ allowedHeaders?: string[];
17
+ exposedHeaders?: string[];
18
+ credentials?: boolean;
19
+ maxAge?: number;
20
+ }
21
+ export declare function cors(options?: CorsOptions): Middleware;
22
+ export interface RequestIdOptions {
23
+ header?: string;
24
+ generator?: () => string;
25
+ }
26
+ export declare function requestId(options?: RequestIdOptions): Middleware;
27
+ export declare function timing(): Middleware;
28
+ export interface SecurityHeadersOptions {
29
+ contentSecurityPolicy?: string;
30
+ xssProtection?: boolean;
31
+ frameGuard?: "DENY" | "SAMEORIGIN" | "ALLOW-FROM";
32
+ hsts?: boolean | {
33
+ maxAge?: number;
34
+ includeSubDomains?: boolean;
35
+ };
36
+ }
37
+ export declare function securityHeaders(options?: SecurityHeadersOptions): Middleware;
38
+ export interface RateLimitOptions {
39
+ windowMs?: number;
40
+ max?: number;
41
+ keyGenerator?: (context: Context) => string;
42
+ handler?: (context: Context) => Response;
43
+ }
44
+ export declare function rateLimit(options?: RateLimitOptions): Middleware;
45
+ export interface CompressionOptions {
46
+ threshold?: number;
47
+ types?: string[];
48
+ }
49
+ export declare function compression(options?: CompressionOptions): Middleware;
50
+ //# sourceMappingURL=built-in.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in.d.ts","sourceRoot":"","sources":["../../src/middleware/built-in.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAI3C,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,UAAU,CA+D9D;AAID,MAAM,WAAW,WAAW;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,UAAU,CAuD1D;AAID,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAMD,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAkBpE;AAID,wBAAgB,MAAM,IAAI,UAAU,CAYnC;AAID,MAAM,WAAW,sBAAsB;IACtC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;IAClD,IAAI,CAAC,EAAE,OAAO,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClE;AAED,wBAAgB,eAAe,CAC9B,OAAO,GAAE,sBAA2B,GAClC,UAAU,CAwCZ;AAID,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC;CACzC;AAED,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAgDpE;AAID,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,UAAU,CA4CxE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Middleware System
3
+ *
4
+ * Provides a composable middleware pipeline with async/await support
5
+ * and context mutation capabilities.
6
+ */
7
+ import type { Context } from "../context";
8
+ /**
9
+ * Middleware function type
10
+ */
11
+ export type Middleware = (context: Context, next: () => Promise<Response>) => Promise<Response> | Response;
12
+ /**
13
+ * Route handler type
14
+ */
15
+ export type Handler = (context: Context) => Promise<Response> | Response;
16
+ /**
17
+ * Compose multiple middleware into a single function
18
+ * Following Koa-style middleware pattern
19
+ */
20
+ export declare function compose(middleware: Middleware[]): (context: Context, handler: Handler) => Promise<Response>;
21
+ export declare class Pipeline {
22
+ private middleware;
23
+ /**
24
+ * Add middleware to the pipeline
25
+ */
26
+ use(middleware: Middleware): this;
27
+ /**
28
+ * Execute the pipeline with a handler
29
+ */
30
+ execute(context: Context, handler: Handler): Promise<Response>;
31
+ /**
32
+ * Get middleware count
33
+ */
34
+ get length(): number;
35
+ }
36
+ /**
37
+ * Create a new middleware pipeline
38
+ */
39
+ export declare function createPipeline(): Pipeline;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CACxB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,KACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAIzE;;;GAGG;AACH,wBAAgB,OAAO,CACtB,UAAU,EAAE,UAAU,EAAE,GACtB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAyB3D;AAID,qBAAa,QAAQ;IACpB,OAAO,CAAC,UAAU,CAAoB;IAEtC;;OAEG;IACH,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAKjC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKpE;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;CACD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAEzC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Bueno Migrations
3
+ *
4
+ * Database migration runner, builder, and helpers.
5
+ *
6
+ * @example
7
+ * import { createMigration, type MigrationRunner } from '@buenojs/bueno/migrations';
8
+ */
9
+ export * from "../database/migrations";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Exception Filters System
3
+ *
4
+ * Filters catch exceptions thrown during request processing and transform
5
+ * them into appropriate responses. They act as error boundaries in the
6
+ * request pipeline.
7
+ *
8
+ * Execution Order:
9
+ * Incoming Request → Guards → Pipes → Handler → Filters (if error) → Error Response
10
+ */
11
+ import type { Context } from "../context";
12
+ import type { Token } from "../types";
13
+ import { BuenoError, NotFoundError, ValidationError } from "../types";
14
+ /**
15
+ * Exception filter interface
16
+ * Filters implement this interface to handle specific exception types
17
+ */
18
+ export interface ExceptionFilter<T = Error> {
19
+ catch(exception: T, context: Context): Response | Promise<Response>;
20
+ }
21
+ /**
22
+ * Filter function type for functional filters
23
+ */
24
+ export type FilterFn<T = Error> = (exception: T, context: Context) => Response | Promise<Response>;
25
+ /**
26
+ * Filter type - can be a token, instance, or function
27
+ */
28
+ export type Filter<T = Error> = Token<ExceptionFilter<T>> | ExceptionFilter<T> | FilterFn<T>;
29
+ type Constructor = new (...args: unknown[]) => unknown;
30
+ /**
31
+ * Decorator to apply filters to a controller class or method
32
+ * Filters are executed in order: global → class → method
33
+ *
34
+ * @param filters - Filters to apply
35
+ * @returns ClassDecorator & MethodDecorator
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * @Controller('users')
40
+ * @UseFilters(CustomExceptionFilter) // Applied to all methods
41
+ * class UsersController {
42
+ * @Get(':id')
43
+ * @UseFilters(NotFoundExceptionFilter) // Additional filter for this method
44
+ * getUser() {}
45
+ * }
46
+ * ```
47
+ */
48
+ export declare function UseFilters(...filters: Filter[]): MethodDecorator & ClassDecorator;
49
+ /**
50
+ * Decorator to mark a filter as catching a specific exception type
51
+ *
52
+ * @param exceptionType - The exception class to catch
53
+ * @returns ClassDecorator
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * @Catch(ValidationError)
58
+ * @Injectable()
59
+ * class CustomValidationFilter implements ExceptionFilter<ValidationError> {
60
+ * catch(exception: ValidationError, context: Context): Response {
61
+ * return context.status(422).json({
62
+ * error: 'Validation Failed',
63
+ * issues: exception.issues
64
+ * });
65
+ * }
66
+ * }
67
+ * ```
68
+ */
69
+ export declare function Catch<T extends Error>(exceptionType: new (...args: never[]) => T): ClassDecorator;
70
+ /**
71
+ * Get class-level filters from a controller
72
+ */
73
+ export declare function getClassFilters(target: Constructor): Filter[] | undefined;
74
+ /**
75
+ * Get method-level filters from a controller method
76
+ */
77
+ export declare function getMethodFilters(target: object, propertyKey: string | symbol): Filter[] | undefined;
78
+ /**
79
+ * Get the exception type that a filter catches
80
+ */
81
+ export declare function getCatchType(filter: Filter): (new (...args: unknown[]) => Error) | undefined;
82
+ /**
83
+ * Check if a filter can handle a specific exception
84
+ */
85
+ export declare function canHandleException(filter: Filter, exception: Error): boolean;
86
+ /**
87
+ * Type guard to check if a value is an ExceptionFilter instance
88
+ */
89
+ export declare function isExceptionFilter(value: unknown): value is ExceptionFilter;
90
+ /**
91
+ * Type guard to check if a value is a FilterFn
92
+ */
93
+ export declare function isFilterFn(value: unknown): value is FilterFn;
94
+ /**
95
+ * Execute a filter and return the response
96
+ */
97
+ export declare function executeFilter(filter: Filter, exception: Error, context: Context, resolveFilter?: (filter: Filter) => ExceptionFilter | null): Promise<Response>;
98
+ /**
99
+ * Options for executing filters
100
+ */
101
+ export interface ExecuteFiltersOptions {
102
+ globalFilters: Filter[];
103
+ classFilters: Filter[];
104
+ methodFilters: Filter[];
105
+ resolveFilter?: (filter: Filter) => ExceptionFilter | null;
106
+ }
107
+ /**
108
+ * Find and execute the appropriate filter for an exception
109
+ * Filters are checked in order: method → class → global
110
+ * The first filter that can handle the exception is used
111
+ */
112
+ export declare function findAndExecuteFilter(exception: Error, context: Context, options: ExecuteFiltersOptions): Promise<Response>;
113
+ /**
114
+ * HttpExceptionFilter - Handles BuenoError exceptions
115
+ * Returns appropriate HTTP status codes and error details
116
+ */
117
+ export declare class HttpExceptionFilter implements ExceptionFilter<BuenoError> {
118
+ catch(exception: BuenoError, context: Context): Response;
119
+ }
120
+ /**
121
+ * ValidationFilter - Handles ValidationError exceptions
122
+ * Returns validation error details with issues list
123
+ */
124
+ export declare class ValidationFilter implements ExceptionFilter<ValidationError> {
125
+ catch(exception: ValidationError, context: Context): Response;
126
+ }
127
+ /**
128
+ * NotFoundFilter - Handles NotFoundError exceptions
129
+ * Returns 404 response with resource not found message
130
+ */
131
+ export declare class NotFoundFilter implements ExceptionFilter<NotFoundError> {
132
+ catch(exception: NotFoundError, context: Context): Response;
133
+ }
134
+ /**
135
+ * AllExceptionsFilter - Catch-all filter for any Error
136
+ * This filter handles all unhandled exceptions
137
+ */
138
+ export declare class AllExceptionsFilter implements ExceptionFilter<Error> {
139
+ catch(exception: Error, context: Context): Response;
140
+ }
141
+ /**
142
+ * Create a default error response when no filter matches
143
+ */
144
+ export declare function createDefaultErrorResponse(exception: Error, context: Context): Response;
145
+ /**
146
+ * Create an internal error response
147
+ */
148
+ export declare function createInternalErrorResponse(exception: Error): Response;
149
+ export {};
150
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/modules/filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Guards System
3
+ *
4
+ * Guards determine whether a request should be allowed to proceed to the handler.
5
+ * They run before interceptors and pipes in the request pipeline.
6
+ *
7
+ * Execution Order:
8
+ * Incoming Request → Guards → Interceptors → Pipes → Handler
9
+ *
10
+ * If any guard returns false, the request is rejected with 403 Forbidden.
11
+ */
12
+ import type { Token } from "../container";
13
+ import type { Context } from "../context";
14
+ /**
15
+ * Guard interface for authorization checks
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * @Injectable()
20
+ * class AuthGuard implements CanActivate {
21
+ * canActivate(context: Context): boolean {
22
+ * return !!context.request.headers.get('Authorization');
23
+ * }
24
+ * }
25
+ * ```
26
+ */
27
+ export interface CanActivate {
28
+ canActivate(context: Context): boolean | Promise<boolean>;
29
+ }
30
+ /**
31
+ * Guard function type (for functional guards)
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const authGuard: GuardFn = (context) => {
36
+ * return !!context.request.headers.get('Authorization');
37
+ * };
38
+ * ```
39
+ */
40
+ export type GuardFn = (context: Context) => boolean | Promise<boolean>;
41
+ /**
42
+ * Guard type - can be:
43
+ * - A token for a guard class registered in the container
44
+ * - A guard class instance
45
+ * - A guard function
46
+ */
47
+ export type Guard = Token<CanActivate> | CanActivate | GuardFn;
48
+ type Constructor = new (...args: unknown[]) => unknown;
49
+ /**
50
+ * Get guards from a class constructor
51
+ */
52
+ export declare function getClassGuards(target: Constructor): Guard[] | undefined;
53
+ /**
54
+ * Get guards from a method
55
+ */
56
+ export declare function getMethodGuards(target: object, propertyKey: string | symbol): Guard[] | undefined;
57
+ /**
58
+ * Decorator to apply guards to a controller class or method.
59
+ * Guards are executed in the order they are provided.
60
+ *
61
+ * @param guards - Guards to apply
62
+ * @returns ClassDecorator & MethodDecorator
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * // Apply to all methods in controller
67
+ * @Controller('users')
68
+ * @UseGuards(AuthGuard)
69
+ * class UsersController {
70
+ * @Get()
71
+ * getUsers() {} // Protected by AuthGuard
72
+ *
73
+ * @Get(':id')
74
+ * @UseGuards(RolesGuard) // Additional guard
75
+ * getUser() {} // Protected by AuthGuard AND RolesGuard
76
+ * }
77
+ * ```
78
+ */
79
+ export declare function UseGuards(...guards: Guard[]): MethodDecorator & ClassDecorator;
80
+ /**
81
+ * AuthGuard - Checks for Authorization header
82
+ *
83
+ * This guard verifies that the request has an Authorization header.
84
+ * It does not validate the token - that should be done by a custom guard.
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * @Controller('api')
89
+ * @UseGuards(AuthGuard)
90
+ * class ApiController {
91
+ * @Get('protected')
92
+ * protectedRoute() {} // Requires Authorization header
93
+ * }
94
+ * ```
95
+ */
96
+ export declare class AuthGuard implements CanActivate {
97
+ canActivate(context: Context): boolean;
98
+ }
99
+ /**
100
+ * Get required roles from a method
101
+ */
102
+ export declare function getMethodRoles(target: object, propertyKey: string | symbol): string[] | undefined;
103
+ /**
104
+ * Decorator to specify required roles for a route
105
+ * Must be used in conjunction with RolesGuard
106
+ *
107
+ * @param roles - Required roles
108
+ * @returns MethodDecorator
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * @Controller('admin')
113
+ * @UseGuards(AuthGuard, RolesGuard)
114
+ * class AdminController {
115
+ * @Get('users')
116
+ * @Roles('admin', 'moderator')
117
+ * getUsers() {} // Requires 'admin' or 'moderator' role
118
+ * }
119
+ * ```
120
+ */
121
+ export declare function Roles(...roles: string[]): MethodDecorator;
122
+ /**
123
+ * User interface for type safety
124
+ * Applications should extend this interface with their user type
125
+ */
126
+ export interface User {
127
+ id: string | number;
128
+ roles?: string[];
129
+ }
130
+ /**
131
+ * Context extension for user data
132
+ * This extends the Context type to include user information
133
+ */
134
+ declare module "../context" {
135
+ interface Context {
136
+ user?: User;
137
+ }
138
+ }
139
+ /**
140
+ * RolesGuard - Checks user roles
141
+ *
142
+ * This guard checks if the authenticated user has the required roles.
143
+ * It should be used after AuthGuard in the guard chain.
144
+ *
145
+ * The user object must be set on the context before this guard runs.
146
+ * This is typically done by an authentication middleware or a previous guard.
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * @Controller('admin')
151
+ * @UseGuards(AuthGuard, RolesGuard)
152
+ * class AdminController {
153
+ * @Get('dashboard')
154
+ * @Roles('admin')
155
+ * getDashboard() {} // Requires 'admin' role
156
+ * }
157
+ * ```
158
+ */
159
+ export declare class RolesGuard implements CanActivate {
160
+ canActivate(context: Context): boolean;
161
+ }
162
+ /**
163
+ * Guard executor options
164
+ */
165
+ export interface GuardExecutorOptions {
166
+ /** Global guards applied to all routes */
167
+ globalGuards?: Guard[];
168
+ /** Guards from controller class */
169
+ classGuards?: Guard[];
170
+ /** Guards from method */
171
+ methodGuards?: Guard[];
172
+ /** Container for resolving guard instances */
173
+ resolveGuard?: (guard: Guard) => CanActivate | GuardFn | null;
174
+ }
175
+ /**
176
+ * Execute guards in order and return whether the request should proceed
177
+ *
178
+ * @param context - Request context
179
+ * @param options - Guard executor options
180
+ * @returns true if all guards pass, false otherwise
181
+ */
182
+ export declare function executeGuards(context: Context, options: GuardExecutorOptions): Promise<boolean>;
183
+ /**
184
+ * Create a 403 Forbidden response
185
+ */
186
+ export declare function createForbiddenResponse(): Response;
187
+ export {};
188
+ //# sourceMappingURL=guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../src/modules/guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW;IAC3B,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,OAAO,CAAC;AAU/D,KAAK,WAAW,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAkBvD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,GAAG,SAAS,CAEvE;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC1B,KAAK,EAAE,GAAG,SAAS,CAErB;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CACxB,GAAG,MAAM,EAAE,KAAK,EAAE,GAChB,eAAe,GAAG,cAAc,CAoBlC;AAID;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,SAAU,YAAW,WAAW;IAC5C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;CAItC;AA2BD;;GAEG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC1B,MAAM,EAAE,GAAG,SAAS,CAEtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,CAUzD;AAED;;;GAGG;AACH,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAU,OAAO;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACZ;CACD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,UAAW,YAAW,WAAW;IAC7C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;CAkBtC;AAID;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,0CAA0C;IAC1C,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,mCAAmC;IACnC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;IACtB,yBAAyB;IACzB,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;IACvB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC;CAC9D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAClC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAyElB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,QAAQ,CAclD"}