@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,32 @@
1
+ /**
2
+ * Metadata Storage
3
+ *
4
+ * Isolated metadata storage and decorators to avoid circular dependencies.
5
+ * This module has no dependencies on other module files.
6
+ */
7
+ import type { Provider, Token } from "../container";
8
+ type Constructor = new (...args: unknown[]) => unknown;
9
+ export interface ModuleMetadata {
10
+ imports?: Constructor[];
11
+ providers?: Provider[];
12
+ controllers?: Constructor[];
13
+ exports?: Token[];
14
+ }
15
+ export declare function setMetadata(target: Constructor, key: string, value: unknown): void;
16
+ export declare function getMetadata<T>(target: Constructor, key: string): T | undefined;
17
+ export declare function setPrototypeMetadata(target: object, key: string, value: unknown): void;
18
+ export declare function getPrototypeMetadata<T>(target: object, key: string): T | undefined;
19
+ /**
20
+ * Mark a class as injectable
21
+ */
22
+ export declare function Injectable(): ClassDecorator;
23
+ /**
24
+ * Mark a class as a controller with a base path
25
+ */
26
+ export declare function Controller(path?: string): ClassDecorator;
27
+ /**
28
+ * Define a module with metadata
29
+ */
30
+ export declare function Module(metadata: ModuleMetadata): ClassDecorator;
31
+ export type { Constructor };
32
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/modules/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGpD,KAAK,WAAW,GAAG,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAIvD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;CAClB;AAOD,wBAAgB,WAAW,CAC1B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACZ,IAAI,CAKN;AAED,wBAAgB,WAAW,CAAC,CAAC,EAC5B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,GACT,CAAC,GAAG,SAAS,CAEf;AAKD,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,GACZ,IAAI,CAKN;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACT,CAAC,GAAG,SAAS,CAEf;AAID;;GAEG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAK3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,SAAK,GAAG,cAAc,CAMpD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAK/D;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,287 @@
1
+ /**
2
+ * Pipes System
3
+ *
4
+ * Pipes run after guards in the request pipeline and can transform/validate
5
+ * data before it reaches the handler.
6
+ *
7
+ * Execution Order:
8
+ * Incoming Request → Guards → Pipes → Handler
9
+ *
10
+ * Pipes can:
11
+ * - Transform data (e.g., string to number)
12
+ * - Validate data (e.g., using Standard Schema)
13
+ * - Provide default values
14
+ */
15
+ import type { Token } from "../container";
16
+ import type { Context } from "../context";
17
+ import type { StandardSchema } from "../types";
18
+ /**
19
+ * Parameter metadata available to pipes
20
+ */
21
+ export interface ParameterMetadata {
22
+ /** Parameter index */
23
+ index: number;
24
+ /** Parameter name if available */
25
+ name?: string;
26
+ /** Decorator type (body, query, param, etc.) */
27
+ decorator?: string;
28
+ }
29
+ /**
30
+ * Context available to pipes during transformation
31
+ */
32
+ export interface PipeContext {
33
+ /** The request context */
34
+ context: Context;
35
+ /** Parameter metadata */
36
+ metadata?: ParameterMetadata;
37
+ /** Target type information */
38
+ type?: unknown;
39
+ }
40
+ /**
41
+ * Pipe interface for data transformation
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * class ParseIntPipe implements PipeTransform<string, number> {
46
+ * transform(value: string, context: PipeContext): number {
47
+ * const parsed = parseInt(value, 10);
48
+ * if (isNaN(parsed)) {
49
+ * throw new Error('Validation failed');
50
+ * }
51
+ * return parsed;
52
+ * }
53
+ * }
54
+ * ```
55
+ */
56
+ export interface PipeTransform<T = unknown, R = unknown> {
57
+ transform(value: T, context: PipeContext): R | Promise<R>;
58
+ }
59
+ /**
60
+ * Pipe function type (for functional pipes)
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * const trimPipe: PipeFn<string, string> = (value) => value.trim();
65
+ * ```
66
+ */
67
+ export type PipeFn<T = unknown, R = unknown> = (value: T, context: PipeContext) => R | Promise<R>;
68
+ /**
69
+ * Pipe type - can be:
70
+ * - A token for a pipe class registered in the container
71
+ * - A pipe class instance
72
+ * - A pipe function
73
+ */
74
+ export type Pipe<T = unknown, R = unknown> = Token<PipeTransform<T, R>> | PipeTransform<T, R> | PipeFn<T, R>;
75
+ /**
76
+ * Metadata for a parameter with pipes
77
+ */
78
+ export interface ParameterPipeMetadata {
79
+ /** Parameter index */
80
+ index: number;
81
+ /** Parameter decorator type */
82
+ decorator: "body" | "query" | "param" | "custom";
83
+ /** Key for query/param decorators */
84
+ key?: string;
85
+ /** Schema for validation */
86
+ schema?: StandardSchema;
87
+ /** Pipes to apply */
88
+ pipes: Pipe[];
89
+ }
90
+ /**
91
+ * Get pipes metadata from a method
92
+ */
93
+ export declare function getMethodPipes(target: object, propertyKey: string | symbol): ParameterPipeMetadata[] | undefined;
94
+ /**
95
+ * Decorator to apply pipes to a parameter.
96
+ * Pipes are executed in the order they are provided.
97
+ *
98
+ * @param pipes - Pipes to apply
99
+ * @returns ParameterDecorator
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * @Get(':id')
104
+ * getUser(@Param('id', ParseIntPipe) id: number) {}
105
+ * ```
106
+ */
107
+ export declare function UsePipes(...pipes: Pipe[]): ParameterDecorator;
108
+ /**
109
+ * Extract and optionally validate request body.
110
+ *
111
+ * @param schema - Optional Standard Schema for validation
112
+ * @returns ParameterDecorator
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * @Post()
117
+ * createUser(@Body(userSchema) body: User) {}
118
+ * ```
119
+ */
120
+ export declare function Body(schema?: StandardSchema): ParameterDecorator;
121
+ /**
122
+ * Extract and optionally validate query parameter.
123
+ *
124
+ * @param key - Query parameter key (optional, if omitted returns all query params)
125
+ * @param schema - Optional Standard Schema for validation
126
+ * @returns ParameterDecorator
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * @Get()
131
+ * search(@Query('q') query: string) {}
132
+ *
133
+ * @Get()
134
+ * search(@Query('limit', limitSchema) limit: number) {}
135
+ * ```
136
+ */
137
+ export declare function Query(key?: string, schema?: StandardSchema): ParameterDecorator;
138
+ /**
139
+ * Extract and transform route parameter.
140
+ *
141
+ * @param key - Route parameter key (optional, if omitted returns all params)
142
+ * @param pipes - Pipes to apply for transformation
143
+ * @returns ParameterDecorator
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * @Get(':id')
148
+ * getUser(@Param('id', ParseIntPipe) id: number) {}
149
+ * ```
150
+ */
151
+ export declare function Param(key?: string, ...pipes: Pipe[]): ParameterDecorator;
152
+ /**
153
+ * ValidationPipe - Validates using Standard Schema
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * @Body(userSchema) body: User
158
+ * // or explicitly
159
+ * @UsePipes(new ValidationPipe(userSchema))
160
+ * ```
161
+ */
162
+ export declare class ValidationPipe<T = unknown> implements PipeTransform<unknown, T> {
163
+ private schema;
164
+ constructor(schema: StandardSchema<unknown, T>);
165
+ transform(value: unknown, context: PipeContext): Promise<T>;
166
+ }
167
+ /**
168
+ * ParseIntPipe - Transforms string to integer
169
+ *
170
+ * @example
171
+ * ```typescript
172
+ * @Param('id', ParseIntPipe) id: number
173
+ * ```
174
+ */
175
+ export declare class ParseIntPipe implements PipeTransform<string, number> {
176
+ transform(value: string, context: PipeContext): number;
177
+ }
178
+ /**
179
+ * ParseFloatPipe - Transforms string to float
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * @Param('price', ParseFloatPipe) price: number
184
+ * ```
185
+ */
186
+ export declare class ParseFloatPipe implements PipeTransform<string, number> {
187
+ transform(value: string, context: PipeContext): number;
188
+ }
189
+ /**
190
+ * ParseBoolPipe - Transforms string to boolean
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * @Query('active', ParseBoolPipe) active: boolean
195
+ * ```
196
+ */
197
+ export declare class ParseBoolPipe implements PipeTransform<string, boolean> {
198
+ private readonly truthyValues;
199
+ private readonly falsyValues;
200
+ transform(value: string, context: PipeContext): boolean;
201
+ }
202
+ /**
203
+ * DefaultValuePipe - Provides default value when input is undefined or null
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number
208
+ * ```
209
+ */
210
+ export declare class DefaultValuePipe<T> implements PipeTransform<unknown, T> {
211
+ private defaultValue;
212
+ constructor(defaultValue: T);
213
+ transform(value: unknown, context: PipeContext): T;
214
+ }
215
+ /**
216
+ * TrimPipe - Trims string whitespace
217
+ *
218
+ * @example
219
+ * ```typescript
220
+ * @Query('name', TrimPipe) name: string
221
+ * ```
222
+ */
223
+ export declare class TrimPipe implements PipeTransform<string, string> {
224
+ transform(value: string, context: PipeContext): string;
225
+ }
226
+ /**
227
+ * ParseJsonPipe - Parses JSON string to object
228
+ *
229
+ * @example
230
+ * ```typescript
231
+ * @Query('data', ParseJsonPipe) data: MyObject
232
+ * ```
233
+ */
234
+ export declare class ParseJsonPipe<T = unknown> implements PipeTransform<string, T> {
235
+ transform(value: string, context: PipeContext): T;
236
+ }
237
+ /**
238
+ * ParseArrayPipe - Transforms comma-separated string to array
239
+ *
240
+ * @example
241
+ * ```typescript
242
+ * @Query('tags', ParseArrayPipe) tags: string[]
243
+ * ```
244
+ */
245
+ export declare class ParseArrayPipe implements PipeTransform<string, string[]> {
246
+ private separator;
247
+ constructor(separator?: string);
248
+ transform(value: string, context: PipeContext): string[];
249
+ }
250
+ /**
251
+ * Pipe executor options
252
+ */
253
+ export interface PipeExecutorOptions {
254
+ /** Global pipes applied to all parameters */
255
+ globalPipes?: Pipe[];
256
+ /** Pipes from parameter decorator */
257
+ parameterPipes?: Pipe[];
258
+ /** Container for resolving pipe instances */
259
+ resolvePipe?: (pipe: Pipe) => PipeTransform | PipeFn | null;
260
+ }
261
+ /**
262
+ * Execute pipes in order and return the transformed value
263
+ *
264
+ * @param value - Initial value to transform
265
+ * @param context - Pipe context
266
+ * @param options - Pipe executor options
267
+ * @returns Transformed value
268
+ * @throws Error if any pipe fails
269
+ */
270
+ export declare function executePipes<T = unknown>(value: unknown, context: PipeContext, options: PipeExecutorOptions): Promise<T>;
271
+ /**
272
+ * Extract parameter value from context based on decorator type
273
+ */
274
+ export declare function extractParameterValue(context: Context, metadata: ParameterPipeMetadata): Promise<unknown>;
275
+ /**
276
+ * Create a 400 Bad Request response for pipe errors
277
+ */
278
+ export declare function createBadRequestResponse(error: Error): Response;
279
+ /**
280
+ * Check if a value is a PipeTransform instance
281
+ */
282
+ export declare function isPipeTransform(value: unknown): value is PipeTransform;
283
+ /**
284
+ * Check if a value is a pipe function
285
+ */
286
+ export declare function isPipeFn(value: unknown): value is PipeFn;
287
+ //# sourceMappingURL=pipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipes.d.ts","sourceRoot":"","sources":["../../src/modules/pipes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAS/C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACtD,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAC9C,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,WAAW,KAChB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IACtC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GACnB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAahB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjD,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,qBAAqB;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACd;AAgBD;;GAEG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,MAAM,GAC1B,qBAAqB,EAAE,GAAG,SAAS,CAErC;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CA2B7D;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,kBAAkB,CAsBhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,KAAK,CACpB,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,cAAc,GACrB,kBAAkB,CAuBpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAsBxE;AAID;;;;;;;;;GASG;AACH,qBAAa,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAgBjE;AAED;;;;;;;GAOG;AACH,qBAAa,YAAa,YAAW,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;IACjE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM;CAStD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;IACnE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM;CAStD;AAED;;;;;;;GAOG;AACH,qBAAa,aAAc,YAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAE3D,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO;CAavD;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAgB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,CAAC;IAEnC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC;CAMlD;AAED;;;;;;;GAOG;AACH,qBAAa,QAAS,YAAW,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;IAC7D,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM;CAMtD;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,CAAC;CAOjD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IACzD,OAAO,CAAC,SAAS;gBAAT,SAAS,SAAM;IAEnC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE;CASxD;AAID;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IACrB,qCAAqC;IACrC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;IACxB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,OAAO,EAC7C,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,CAAC,CAAC,CA4DZ;AAID;;GAEG;AACH,wBAAsB,qBAAqB,CAC1C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,qBAAqB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAID;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAiB/D;AAID;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAOtE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Base Channel Service
3
+ *
4
+ * Abstract base class for all channel implementations
5
+ */
6
+ import type { ChannelHealth, ChannelService, NotificationMessage } from "../types";
7
+ export declare abstract class BaseChannelService<T extends NotificationMessage = NotificationMessage> implements ChannelService<T> {
8
+ abstract readonly name: string;
9
+ readonly configSchema?: unknown;
10
+ /**
11
+ * Validate message structure
12
+ * Should throw if message is invalid
13
+ */
14
+ abstract validate(message: unknown): asserts message is T;
15
+ /**
16
+ * Send a notification message
17
+ */
18
+ abstract send(message: T): Promise<string | undefined>;
19
+ /**
20
+ * Get health status
21
+ */
22
+ getHealth(): Promise<ChannelHealth>;
23
+ /**
24
+ * Validate that value matches expected type
25
+ */
26
+ protected validateField(value: unknown, expectedType: string, fieldName: string): void;
27
+ /**
28
+ * Validate that required field exists
29
+ */
30
+ protected validateRequired(value: unknown, fieldName: string): void;
31
+ }
32
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,MAAM,UAAU,CAAC;AAIlB,8BAAsB,kBAAkB,CACvC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CAClD,YAAW,cAAc,CAAC,CAAC,CAAC;IAE7B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC;IAEzD;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAEtD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAQzC;;OAEG;IACH,SAAS,CAAC,aAAa,CACtB,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GACf,IAAI;IASP;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAKnE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Email Channel Service
3
+ *
4
+ * Sends notifications via email through various drivers
5
+ * (SMTP, Sendgrid, Brevo, Resend)
6
+ */
7
+ import type { EmailChannelConfig, EmailMessage } from "../types";
8
+ import { BaseChannelService } from "./base";
9
+ export declare class EmailChannelService extends BaseChannelService<EmailMessage> {
10
+ readonly name = "email";
11
+ private config;
12
+ private sentCount;
13
+ private failureCount;
14
+ constructor(config: EmailChannelConfig);
15
+ /**
16
+ * Validate email message structure
17
+ */
18
+ validate(message: unknown): asserts message is EmailMessage;
19
+ /**
20
+ * Send email message
21
+ */
22
+ send(message: EmailMessage): Promise<string | undefined>;
23
+ /**
24
+ * Get email channel metrics
25
+ */
26
+ getMetrics(): {
27
+ sent: number;
28
+ failed: number;
29
+ total: number;
30
+ successRate: number;
31
+ };
32
+ /**
33
+ * Generate a message ID
34
+ */
35
+ private _generateMessageId;
36
+ }
37
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/email.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,mBAAoB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;IACxE,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,kBAAkB;IAKtC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,YAAY;IA4B3D;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0B9D;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Push Notification Channel Service
3
+ *
4
+ * Sends notifications via push through various drivers
5
+ * (Firebase, APNS, custom)
6
+ */
7
+ import type { PushChannelConfig, PushNotificationMessage } from "../types";
8
+ import { BaseChannelService } from "./base";
9
+ export declare class PushNotificationChannelService extends BaseChannelService<PushNotificationMessage> {
10
+ readonly name = "push";
11
+ private config;
12
+ private sentCount;
13
+ private failureCount;
14
+ constructor(config: PushChannelConfig);
15
+ /**
16
+ * Validate push notification message structure
17
+ */
18
+ validate(message: unknown): asserts message is PushNotificationMessage;
19
+ /**
20
+ * Send push notification message
21
+ */
22
+ send(message: PushNotificationMessage): Promise<string | undefined>;
23
+ /**
24
+ * Get push channel metrics
25
+ */
26
+ getMetrics(): {
27
+ sent: number;
28
+ failed: number;
29
+ total: number;
30
+ successRate: number;
31
+ };
32
+ /**
33
+ * Generate a message ID
34
+ */
35
+ private _generateMessageId;
36
+ }
37
+ //# sourceMappingURL=push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/push.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,8BAA+B,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IAC9F,QAAQ,CAAC,IAAI,UAAU;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,iBAAiB;IAKrC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,uBAAuB;IA0BtE;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2BzE;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * SMS Channel Service
3
+ *
4
+ * Sends notifications via SMS through various drivers
5
+ * (Twilio, AWS SNS, custom)
6
+ */
7
+ import type { SMSChannelConfig, SMSMessage } from "../types";
8
+ import { BaseChannelService } from "./base";
9
+ export declare class SMSChannelService extends BaseChannelService<SMSMessage> {
10
+ readonly name = "sms";
11
+ private config;
12
+ private sentCount;
13
+ private failureCount;
14
+ constructor(config: SMSChannelConfig);
15
+ /**
16
+ * Validate SMS message structure
17
+ */
18
+ validate(message: unknown): asserts message is SMSMessage;
19
+ /**
20
+ * Send SMS message
21
+ */
22
+ send(message: SMSMessage): Promise<string | undefined>;
23
+ /**
24
+ * Get SMS channel metrics
25
+ */
26
+ getMetrics(): {
27
+ sent: number;
28
+ failed: number;
29
+ total: number;
30
+ successRate: number;
31
+ };
32
+ /**
33
+ * Generate a message ID
34
+ */
35
+ private _generateMessageId;
36
+ }
37
+ //# sourceMappingURL=sms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/sms.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,iBAAkB,SAAQ,kBAAkB,CAAC,UAAU,CAAC;IACpE,QAAQ,CAAC,IAAI,SAAS;IACtB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,gBAAgB;IAKpC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU;IA4BzD;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA0B5D;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * WhatsApp Channel Service
3
+ *
4
+ * Sends notifications via WhatsApp through various drivers
5
+ * (Twilio, custom)
6
+ */
7
+ import type { WhatsAppChannelConfig, WhatsAppMessage } from "../types";
8
+ import { BaseChannelService } from "./base";
9
+ export declare class WhatsAppChannelService extends BaseChannelService<WhatsAppMessage> {
10
+ readonly name = "whatsapp";
11
+ private config;
12
+ private sentCount;
13
+ private failureCount;
14
+ constructor(config: WhatsAppChannelConfig);
15
+ /**
16
+ * Validate WhatsApp message structure
17
+ */
18
+ validate(message: unknown): asserts message is WhatsAppMessage;
19
+ /**
20
+ * Send WhatsApp message
21
+ */
22
+ send(message: WhatsAppMessage): Promise<string | undefined>;
23
+ /**
24
+ * Get WhatsApp channel metrics
25
+ */
26
+ getMetrics(): {
27
+ sent: number;
28
+ failed: number;
29
+ total: number;
30
+ successRate: number;
31
+ };
32
+ /**
33
+ * Generate a message ID
34
+ */
35
+ private _generateMessageId;
36
+ }
37
+ //# sourceMappingURL=whatsapp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.d.ts","sourceRoot":"","sources":["../../../src/notification/channels/whatsapp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IAC9E,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,qBAAqB;IAKzC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe;IAsB9D;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA+BjE;;OAEG;IACH,UAAU;;;;;;IAUV;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAK1B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Notification Module
3
+ *
4
+ * Multi-channel notification system with support for email, SMS, WhatsApp,
5
+ * push notifications, and custom channels. Uses registry pattern for
6
+ * dynamic channel registration.
7
+ */
8
+ export type { NotificationChannel, NotificationMessage, EmailRecipient, EmailRecipients, EmailAttachment, EmailMessage, SMSMessage, WhatsAppMessage, PushNotificationMessage, BuiltInNotification, Notifiable, ChannelHealth, ChannelService, BaseChannelConfig, EmailChannelConfig, SMSChannelConfig, WhatsAppChannelConfig, PushChannelConfig, ChannelConfig, NotificationServiceConfig, ChannelMetrics, NotificationEvent, NotificationEventType, NotificationValidationResult, StandardSchema, } from "./types";
9
+ export { NotificationService, createNotificationService } from "./service";
10
+ export { BaseChannelService } from "./channels/base";
11
+ export { EmailChannelService } from "./channels/email";
12
+ export { SMSChannelService } from "./channels/sms";
13
+ export { WhatsAppChannelService } from "./channels/whatsapp";
14
+ export { PushNotificationChannelService } from "./channels/push";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/notification/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,GACd,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAG3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Notification Service
3
+ *
4
+ * Core notification service with registry-based channel management.
5
+ * Supports dynamic channel registration and multi-channel notification sending.
6
+ */
7
+ import type { ChannelHealth, ChannelMetrics, ChannelService, Notifiable, NotificationChannel, NotificationMessage, NotificationServiceConfig } from "./types";
8
+ export declare class NotificationService {
9
+ private channels;
10
+ private config;
11
+ private metrics;
12
+ constructor(config?: NotificationServiceConfig);
13
+ /**
14
+ * Register a channel service
15
+ * @param service Channel service to register
16
+ * @throws Error if channel is already registered
17
+ */
18
+ registerChannel<T extends NotificationMessage>(service: ChannelService<T>): void;
19
+ /**
20
+ * Unregister a channel service
21
+ * @param channelName Name of the channel to unregister
22
+ */
23
+ unregisterChannel(channelName: NotificationChannel): void;
24
+ /**
25
+ * Get a registered channel service
26
+ * @param channelName Name of the channel
27
+ * @returns Channel service or null if not found
28
+ */
29
+ getChannel(channelName: NotificationChannel): ChannelService | null;
30
+ /**
31
+ * Get all registered channel names
32
+ */
33
+ getChannels(): NotificationChannel[];
34
+ /**
35
+ * Check if a channel is registered
36
+ */
37
+ hasChannel(channelName: NotificationChannel): boolean;
38
+ /**
39
+ * Send a notification via specified channel
40
+ * @param message Notification message
41
+ * @returns Message ID or undefined
42
+ * @throws Error if channel not found or message invalid
43
+ */
44
+ send(message: NotificationMessage): Promise<string | undefined>;
45
+ /**
46
+ * Send multiple notifications (potentially different channels)
47
+ * @param messages Array of notification messages
48
+ * @returns Array of message IDs
49
+ */
50
+ sendBatch(messages: NotificationMessage[]): Promise<(string | undefined)[]>;
51
+ /**
52
+ * Send a notification from a Notifiable
53
+ * @param notifiable Notifiable instance
54
+ * @param channel Optional specific channel (otherwise uses buildAll or default)
55
+ * @returns Message ID(s)
56
+ */
57
+ sendNotifiable(notifiable: Notifiable, channel?: NotificationChannel): Promise<string | undefined>;
58
+ /**
59
+ * Queue a notification for async sending (requires job queue integration)
60
+ * @param message Notification message
61
+ * @returns Job ID or undefined
62
+ */
63
+ queue(message: NotificationMessage): Promise<string | undefined>;
64
+ /**
65
+ * Get health status for a channel
66
+ * @param channelName Name of the channel
67
+ */
68
+ getChannelHealth(channelName: NotificationChannel): Promise<ChannelHealth | null>;
69
+ /**
70
+ * Get health status for all channels
71
+ */
72
+ getHealthStatus(): Promise<Record<NotificationChannel, ChannelHealth>>;
73
+ /**
74
+ * Get metrics for a specific channel
75
+ * @param channelName Name of the channel
76
+ */
77
+ getChannelMetrics(channelName: NotificationChannel): ChannelMetrics | null;
78
+ /**
79
+ * Get metrics for all channels
80
+ */
81
+ getAllMetrics(): Record<NotificationChannel, ChannelMetrics>;
82
+ /**
83
+ * Resolve TemplateRef objects in message fields to rendered strings
84
+ */
85
+ private _resolveTemplates;
86
+ /**
87
+ * Assert that no TemplateRef fields exist in the message
88
+ * Throws if a TemplateRef is found but no templateEngine is configured
89
+ */
90
+ private _assertNoTemplateRefs;
91
+ /**
92
+ * Update metrics for a channel
93
+ */
94
+ private _updateMetrics;
95
+ }
96
+ /**
97
+ * Factory function to create notification service
98
+ */
99
+ export declare function createNotificationService(config?: NotificationServiceConfig): NotificationService;
100
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/notification/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EAEzB,MAAM,SAAS,CAAC;AAKjB,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAuD;IACvE,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,OAAO,CAAuD;gBAE1D,MAAM,GAAE,yBAA8B;IAIlD;;;;OAIG;IACH,eAAe,CAAC,CAAC,SAAS,mBAAmB,EAC5C,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GACxB,IAAI;IAmBP;;;OAGG;IACH,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAKzD;;;;OAIG;IACH,UAAU,CAAC,WAAW,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI;IAInE;;OAEG;IACH,WAAW,IAAI,mBAAmB,EAAE;IAIpC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO;IAIrD;;;;;OAKG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAkCrE;;;;OAIG;IACG,SAAS,CACd,QAAQ,EAAE,mBAAmB,EAAE,GAC7B,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAelC;;;;;OAKG;IACG,cAAc,CACnB,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAuB9B;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMtE;;;OAGG;IACG,gBAAgB,CACrB,WAAW,EAAE,mBAAmB,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAahC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;IAa5E;;;OAGG;IACH,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI;IAI1E;;OAEG;IACH,aAAa,IAAI,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC;IAU5D;;OAEG;YACW,iBAAiB;IAsD/B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,OAAO,CAAC,cAAc;CAqBtB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,CAAC,EAAE,yBAAyB,GAChC,mBAAmB,CAErB"}