@buenojs/bueno 0.8.10 → 0.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/dist/cache/index.d.ts +187 -0
  2. package/dist/cache/index.d.ts.map +1 -0
  3. package/dist/cache/index.js +595 -0
  4. package/dist/cache/index.js.map +1 -0
  5. package/dist/cli/bin.d.ts +8 -0
  6. package/dist/cli/bin.d.ts.map +1 -0
  7. package/dist/cli/bin.js +9 -9
  8. package/dist/cli/bin.js.map +1 -0
  9. package/dist/cli/commands/add-frontend.d.ts +7 -0
  10. package/dist/cli/commands/add-frontend.d.ts.map +1 -0
  11. package/dist/cli/commands/add-frontend.js +376 -0
  12. package/dist/cli/commands/add-frontend.js.map +1 -0
  13. package/dist/cli/commands/build.d.ts +7 -0
  14. package/dist/cli/commands/build.d.ts.map +1 -0
  15. package/dist/cli/commands/build.js +347 -0
  16. package/dist/cli/commands/build.js.map +1 -0
  17. package/dist/cli/commands/dev.d.ts +7 -0
  18. package/dist/cli/commands/dev.d.ts.map +1 -0
  19. package/dist/cli/commands/dev.js +205 -0
  20. package/dist/cli/commands/dev.js.map +1 -0
  21. package/dist/cli/commands/generate.d.ts +7 -0
  22. package/dist/cli/commands/generate.d.ts.map +1 -0
  23. package/dist/cli/commands/generate.js +491 -0
  24. package/dist/cli/commands/generate.js.map +1 -0
  25. package/dist/cli/commands/help.d.ts +7 -0
  26. package/dist/cli/commands/help.d.ts.map +1 -0
  27. package/dist/cli/commands/help.js +51 -0
  28. package/dist/cli/commands/help.js.map +1 -0
  29. package/dist/cli/commands/index.d.ts +59 -0
  30. package/dist/cli/commands/index.d.ts.map +1 -0
  31. package/dist/cli/commands/index.js +77 -0
  32. package/dist/cli/commands/index.js.map +1 -0
  33. package/dist/cli/commands/migration.d.ts +7 -0
  34. package/dist/cli/commands/migration.d.ts.map +1 -0
  35. package/dist/cli/commands/migration.js +295 -0
  36. package/dist/cli/commands/migration.js.map +1 -0
  37. package/dist/cli/commands/new.d.ts +7 -0
  38. package/dist/cli/commands/new.d.ts.map +1 -0
  39. package/dist/cli/commands/new.js +641 -0
  40. package/dist/cli/commands/new.js.map +1 -0
  41. package/dist/cli/commands/start.d.ts +7 -0
  42. package/dist/cli/commands/start.d.ts.map +1 -0
  43. package/dist/cli/commands/start.js +171 -0
  44. package/dist/cli/commands/start.js.map +1 -0
  45. package/dist/cli/core/args.d.ts +61 -0
  46. package/dist/cli/core/args.d.ts.map +1 -0
  47. package/dist/cli/core/args.js +224 -0
  48. package/dist/cli/core/args.js.map +1 -0
  49. package/dist/cli/core/console.d.ts +135 -0
  50. package/dist/cli/core/console.d.ts.map +1 -0
  51. package/dist/cli/core/console.js +268 -0
  52. package/dist/cli/core/console.js.map +1 -0
  53. package/dist/cli/core/index.d.ts +10 -0
  54. package/dist/cli/core/index.d.ts.map +1 -0
  55. package/dist/cli/core/index.js +10 -0
  56. package/dist/cli/core/index.js.map +1 -0
  57. package/dist/cli/core/prompt.d.ts +63 -0
  58. package/dist/cli/core/prompt.d.ts.map +1 -0
  59. package/dist/cli/core/prompt.js +338 -0
  60. package/dist/cli/core/prompt.js.map +1 -0
  61. package/dist/cli/core/spinner.d.ts +111 -0
  62. package/dist/cli/core/spinner.d.ts.map +1 -0
  63. package/dist/cli/core/spinner.js +208 -0
  64. package/dist/cli/core/spinner.js.map +1 -0
  65. package/dist/cli/index.d.ts +47 -0
  66. package/dist/cli/index.d.ts.map +1 -0
  67. package/dist/cli/index.js +127 -0
  68. package/dist/cli/index.js.map +1 -0
  69. package/dist/cli/templates/database/index.d.ts +24 -0
  70. package/dist/cli/templates/database/index.d.ts.map +1 -0
  71. package/dist/cli/templates/database/index.js +49 -0
  72. package/dist/cli/templates/database/index.js.map +1 -0
  73. package/dist/cli/templates/database/mysql.d.ts +6 -0
  74. package/dist/cli/templates/database/mysql.d.ts.map +1 -0
  75. package/dist/cli/templates/database/mysql.js +12 -0
  76. package/dist/cli/templates/database/mysql.js.map +1 -0
  77. package/dist/cli/templates/database/none.d.ts +8 -0
  78. package/dist/cli/templates/database/none.d.ts.map +1 -0
  79. package/dist/cli/templates/database/none.js +14 -0
  80. package/dist/cli/templates/database/none.js.map +1 -0
  81. package/dist/cli/templates/database/postgresql.d.ts +6 -0
  82. package/dist/cli/templates/database/postgresql.d.ts.map +1 -0
  83. package/dist/cli/templates/database/postgresql.js +12 -0
  84. package/dist/cli/templates/database/postgresql.js.map +1 -0
  85. package/dist/cli/templates/database/sqlite.d.ts +6 -0
  86. package/dist/cli/templates/database/sqlite.d.ts.map +1 -0
  87. package/dist/cli/templates/database/sqlite.js +12 -0
  88. package/dist/cli/templates/database/sqlite.js.map +1 -0
  89. package/dist/cli/templates/deploy.d.ts +41 -0
  90. package/dist/cli/templates/deploy.d.ts.map +1 -0
  91. package/dist/cli/templates/deploy.js +278 -0
  92. package/dist/cli/templates/deploy.js.map +1 -0
  93. package/dist/cli/templates/docker.d.ts +30 -0
  94. package/dist/cli/templates/docker.d.ts.map +1 -0
  95. package/dist/cli/templates/docker.js +298 -0
  96. package/dist/cli/templates/docker.js.map +1 -0
  97. package/dist/cli/templates/frontend/index.d.ts +25 -0
  98. package/dist/cli/templates/frontend/index.d.ts.map +1 -0
  99. package/dist/cli/templates/frontend/index.js +40 -0
  100. package/dist/cli/templates/frontend/index.js.map +1 -0
  101. package/dist/cli/templates/frontend/none.d.ts +8 -0
  102. package/dist/cli/templates/frontend/none.d.ts.map +1 -0
  103. package/dist/cli/templates/frontend/none.js +15 -0
  104. package/dist/cli/templates/frontend/none.js.map +1 -0
  105. package/dist/cli/templates/frontend/react.d.ts +6 -0
  106. package/dist/cli/templates/frontend/react.d.ts.map +1 -0
  107. package/dist/cli/templates/frontend/react.js +139 -0
  108. package/dist/cli/templates/frontend/react.js.map +1 -0
  109. package/dist/cli/templates/frontend/solid.d.ts +6 -0
  110. package/dist/cli/templates/frontend/solid.d.ts.map +1 -0
  111. package/dist/cli/templates/frontend/solid.js +133 -0
  112. package/dist/cli/templates/frontend/solid.js.map +1 -0
  113. package/dist/cli/templates/frontend/svelte.d.ts +6 -0
  114. package/dist/cli/templates/frontend/svelte.d.ts.map +1 -0
  115. package/dist/cli/templates/frontend/svelte.js +130 -0
  116. package/dist/cli/templates/frontend/svelte.js.map +1 -0
  117. package/dist/cli/templates/frontend/vue.d.ts +6 -0
  118. package/dist/cli/templates/frontend/vue.d.ts.map +1 -0
  119. package/dist/cli/templates/frontend/vue.js +129 -0
  120. package/dist/cli/templates/frontend/vue.js.map +1 -0
  121. package/dist/cli/templates/generators/index.d.ts +29 -0
  122. package/dist/cli/templates/generators/index.d.ts.map +1 -0
  123. package/dist/cli/templates/generators/index.js +308 -0
  124. package/dist/cli/templates/generators/index.js.map +1 -0
  125. package/dist/cli/templates/generators/types.d.ts +32 -0
  126. package/dist/cli/templates/generators/types.d.ts.map +1 -0
  127. package/dist/cli/templates/generators/types.js +21 -0
  128. package/dist/cli/templates/generators/types.js.map +1 -0
  129. package/dist/cli/templates/index.d.ts +12 -0
  130. package/dist/cli/templates/index.d.ts.map +1 -0
  131. package/dist/cli/templates/index.js +18 -0
  132. package/dist/cli/templates/index.js.map +1 -0
  133. package/dist/cli/templates/project/api.d.ts +6 -0
  134. package/dist/cli/templates/project/api.d.ts.map +1 -0
  135. package/dist/cli/templates/project/api.js +79 -0
  136. package/dist/cli/templates/project/api.js.map +1 -0
  137. package/dist/cli/templates/project/default.d.ts +6 -0
  138. package/dist/cli/templates/project/default.d.ts.map +1 -0
  139. package/dist/cli/templates/project/default.js +136 -0
  140. package/dist/cli/templates/project/default.js.map +1 -0
  141. package/dist/cli/templates/project/fullstack.d.ts +14 -0
  142. package/dist/cli/templates/project/fullstack.d.ts.map +1 -0
  143. package/dist/cli/templates/project/fullstack.js +19 -0
  144. package/dist/cli/templates/project/fullstack.js.map +1 -0
  145. package/dist/cli/templates/project/index.d.ts +26 -0
  146. package/dist/cli/templates/project/index.d.ts.map +1 -0
  147. package/dist/cli/templates/project/index.js +60 -0
  148. package/dist/cli/templates/project/index.js.map +1 -0
  149. package/dist/cli/templates/project/minimal.d.ts +6 -0
  150. package/dist/cli/templates/project/minimal.d.ts.map +1 -0
  151. package/dist/cli/templates/project/minimal.js +43 -0
  152. package/dist/cli/templates/project/minimal.js.map +1 -0
  153. package/dist/cli/templates/project/types.d.ts +80 -0
  154. package/dist/cli/templates/project/types.d.ts.map +1 -0
  155. package/dist/cli/templates/project/types.js +7 -0
  156. package/dist/cli/templates/project/types.js.map +1 -0
  157. package/dist/cli/templates/project/website.d.ts +8 -0
  158. package/dist/cli/templates/project/website.d.ts.map +1 -0
  159. package/dist/cli/templates/project/website.js +312 -0
  160. package/dist/cli/templates/project/website.js.map +1 -0
  161. package/dist/cli/utils/fs.d.ts +137 -0
  162. package/dist/cli/utils/fs.d.ts.map +1 -0
  163. package/dist/cli/utils/fs.js +350 -0
  164. package/dist/cli/utils/fs.js.map +1 -0
  165. package/dist/cli/utils/index.d.ts +9 -0
  166. package/dist/cli/utils/index.d.ts.map +1 -0
  167. package/dist/cli/utils/index.js +9 -0
  168. package/dist/cli/utils/index.js.map +1 -0
  169. package/dist/cli/utils/strings.d.ts +86 -0
  170. package/dist/cli/utils/strings.d.ts.map +1 -0
  171. package/dist/cli/utils/strings.js +190 -0
  172. package/dist/cli/utils/strings.js.map +1 -0
  173. package/dist/cli/utils/version.d.ts +15 -0
  174. package/dist/cli/utils/version.d.ts.map +1 -0
  175. package/dist/cli/utils/version.js +38 -0
  176. package/dist/cli/utils/version.js.map +1 -0
  177. package/dist/config/env-validation.d.ts +49 -0
  178. package/dist/config/env-validation.d.ts.map +1 -0
  179. package/dist/config/env-validation.js +77 -0
  180. package/dist/config/env-validation.js.map +1 -0
  181. package/dist/config/env.d.ts +167 -0
  182. package/dist/config/env.d.ts.map +1 -0
  183. package/dist/config/env.js +392 -0
  184. package/dist/config/env.js.map +1 -0
  185. package/dist/config/index.d.ts +168 -0
  186. package/dist/config/index.d.ts.map +1 -0
  187. package/dist/config/index.js +329 -0
  188. package/dist/config/index.js.map +1 -0
  189. package/dist/config/loader.d.ts +81 -0
  190. package/dist/config/loader.d.ts.map +1 -0
  191. package/dist/config/loader.js +242 -0
  192. package/dist/config/loader.js.map +1 -0
  193. package/dist/config/merge.d.ts +66 -0
  194. package/dist/config/merge.d.ts.map +1 -0
  195. package/dist/config/merge.js +226 -0
  196. package/dist/config/merge.js.map +1 -0
  197. package/dist/config/types.d.ts +322 -0
  198. package/dist/config/types.d.ts.map +1 -0
  199. package/dist/config/types.js +443 -0
  200. package/dist/config/types.js.map +1 -0
  201. package/dist/config/validation.d.ts +100 -0
  202. package/dist/config/validation.d.ts.map +1 -0
  203. package/dist/config/validation.js +548 -0
  204. package/dist/config/validation.js.map +1 -0
  205. package/dist/container/forward-ref.d.ts +116 -0
  206. package/dist/container/forward-ref.d.ts.map +1 -0
  207. package/dist/container/forward-ref.js +105 -0
  208. package/dist/container/forward-ref.js.map +1 -0
  209. package/dist/container/index.d.ts +95 -0
  210. package/dist/container/index.d.ts.map +1 -0
  211. package/dist/container/index.js.map +1 -0
  212. package/dist/context/index.d.ts +143 -0
  213. package/dist/context/index.d.ts.map +1 -0
  214. package/dist/context/index.js.map +1 -0
  215. package/dist/database/index.d.ts +219 -0
  216. package/dist/database/index.d.ts.map +1 -0
  217. package/dist/database/index.js.map +1 -0
  218. package/dist/database/migrations/index.d.ts +151 -0
  219. package/dist/database/migrations/index.d.ts.map +1 -0
  220. package/dist/database/migrations/index.js +258 -0
  221. package/dist/database/migrations/index.js.map +1 -0
  222. package/dist/database/orm/builder.d.ts +122 -0
  223. package/dist/database/orm/builder.d.ts.map +1 -0
  224. package/dist/database/orm/builder.js +355 -0
  225. package/dist/database/orm/builder.js.map +1 -0
  226. package/dist/database/orm/casts/index.d.ts +16 -0
  227. package/dist/database/orm/casts/index.d.ts.map +1 -0
  228. package/dist/database/orm/casts/index.js +131 -0
  229. package/dist/database/orm/casts/index.js.map +1 -0
  230. package/dist/database/orm/casts/types.d.ts +16 -0
  231. package/dist/database/orm/casts/types.d.ts.map +1 -0
  232. package/dist/database/orm/casts/types.js +5 -0
  233. package/dist/database/orm/casts/types.js.map +1 -0
  234. package/dist/database/orm/compiler.d.ts +90 -0
  235. package/dist/database/orm/compiler.d.ts.map +1 -0
  236. package/dist/database/orm/compiler.js +218 -0
  237. package/dist/database/orm/compiler.js.map +1 -0
  238. package/dist/database/orm/hooks/index.d.ts +53 -0
  239. package/dist/database/orm/hooks/index.d.ts.map +1 -0
  240. package/dist/database/orm/hooks/index.js +81 -0
  241. package/dist/database/orm/hooks/index.js.map +1 -0
  242. package/dist/database/orm/index.d.ts +21 -0
  243. package/dist/database/orm/index.d.ts.map +1 -0
  244. package/dist/database/orm/index.js +23 -0
  245. package/dist/database/orm/index.js.map +1 -0
  246. package/dist/database/orm/model-registry.d.ts +33 -0
  247. package/dist/database/orm/model-registry.d.ts.map +1 -0
  248. package/dist/database/orm/model-registry.js +49 -0
  249. package/dist/database/orm/model-registry.js.map +1 -0
  250. package/dist/database/orm/model.d.ts +245 -0
  251. package/dist/database/orm/model.d.ts.map +1 -0
  252. package/dist/database/orm/model.js +599 -0
  253. package/dist/database/orm/model.js.map +1 -0
  254. package/dist/database/orm/relationships/base.d.ts +69 -0
  255. package/dist/database/orm/relationships/base.d.ts.map +1 -0
  256. package/dist/database/orm/relationships/base.js +84 -0
  257. package/dist/database/orm/relationships/base.js.map +1 -0
  258. package/dist/database/orm/relationships/belongs-to-many.d.ts +47 -0
  259. package/dist/database/orm/relationships/belongs-to-many.d.ts.map +1 -0
  260. package/dist/database/orm/relationships/belongs-to-many.js +136 -0
  261. package/dist/database/orm/relationships/belongs-to-many.js.map +1 -0
  262. package/dist/database/orm/relationships/belongs-to.d.ts +17 -0
  263. package/dist/database/orm/relationships/belongs-to.d.ts.map +1 -0
  264. package/dist/database/orm/relationships/belongs-to.js +38 -0
  265. package/dist/database/orm/relationships/belongs-to.js.map +1 -0
  266. package/dist/database/orm/relationships/has-many.d.ts +14 -0
  267. package/dist/database/orm/relationships/has-many.d.ts.map +1 -0
  268. package/dist/database/orm/relationships/has-many.js +35 -0
  269. package/dist/database/orm/relationships/has-many.js.map +1 -0
  270. package/dist/database/orm/relationships/has-one.d.ts +14 -0
  271. package/dist/database/orm/relationships/has-one.d.ts.map +1 -0
  272. package/dist/database/orm/relationships/has-one.js +32 -0
  273. package/dist/database/orm/relationships/has-one.js.map +1 -0
  274. package/dist/database/orm/relationships/index.d.ts +10 -0
  275. package/dist/database/orm/relationships/index.d.ts.map +1 -0
  276. package/dist/database/orm/relationships/index.js +9 -0
  277. package/dist/database/orm/relationships/index.js.map +1 -0
  278. package/dist/database/orm/scopes/index.d.ts +36 -0
  279. package/dist/database/orm/scopes/index.d.ts.map +1 -0
  280. package/dist/database/orm/scopes/index.js +47 -0
  281. package/dist/database/orm/scopes/index.js.map +1 -0
  282. package/dist/database/schema/index.d.ts +155 -0
  283. package/dist/database/schema/index.d.ts.map +1 -0
  284. package/dist/database/schema/index.js +401 -0
  285. package/dist/database/schema/index.js.map +1 -0
  286. package/dist/frontend/api-routes.d.ts +189 -0
  287. package/dist/frontend/api-routes.d.ts.map +1 -0
  288. package/dist/frontend/api-routes.js +548 -0
  289. package/dist/frontend/api-routes.js.map +1 -0
  290. package/dist/frontend/bundler.d.ts +99 -0
  291. package/dist/frontend/bundler.d.ts.map +1 -0
  292. package/dist/frontend/bundler.js +555 -0
  293. package/dist/frontend/bundler.js.map +1 -0
  294. package/dist/frontend/console-client.d.ts +11 -0
  295. package/dist/frontend/console-client.d.ts.map +1 -0
  296. package/dist/frontend/console-client.js +414 -0
  297. package/dist/frontend/console-client.js.map +1 -0
  298. package/dist/frontend/console-stream.d.ts +138 -0
  299. package/dist/frontend/console-stream.d.ts.map +1 -0
  300. package/dist/frontend/console-stream.js +535 -0
  301. package/dist/frontend/console-stream.js.map +1 -0
  302. package/dist/frontend/dev-server.d.ts +174 -0
  303. package/dist/frontend/dev-server.d.ts.map +1 -0
  304. package/dist/frontend/dev-server.js +735 -0
  305. package/dist/frontend/dev-server.js.map +1 -0
  306. package/dist/frontend/file-router.d.ts +170 -0
  307. package/dist/frontend/file-router.d.ts.map +1 -0
  308. package/dist/frontend/file-router.js +531 -0
  309. package/dist/frontend/file-router.js.map +1 -0
  310. package/dist/frontend/frameworks/index.d.ts +41 -0
  311. package/dist/frontend/frameworks/index.d.ts.map +1 -0
  312. package/dist/frontend/frameworks/index.js +87 -0
  313. package/dist/frontend/frameworks/index.js.map +1 -0
  314. package/dist/frontend/frameworks/react.d.ts +32 -0
  315. package/dist/frontend/frameworks/react.d.ts.map +1 -0
  316. package/dist/frontend/frameworks/react.js +66 -0
  317. package/dist/frontend/frameworks/react.js.map +1 -0
  318. package/dist/frontend/frameworks/solid.d.ts +42 -0
  319. package/dist/frontend/frameworks/solid.d.ts.map +1 -0
  320. package/dist/frontend/frameworks/solid.js +84 -0
  321. package/dist/frontend/frameworks/solid.js.map +1 -0
  322. package/dist/frontend/frameworks/svelte.d.ts +57 -0
  323. package/dist/frontend/frameworks/svelte.d.ts.map +1 -0
  324. package/dist/frontend/frameworks/svelte.js +90 -0
  325. package/dist/frontend/frameworks/svelte.js.map +1 -0
  326. package/dist/frontend/frameworks/vue.d.ts +36 -0
  327. package/dist/frontend/frameworks/vue.d.ts.map +1 -0
  328. package/dist/frontend/frameworks/vue.js +72 -0
  329. package/dist/frontend/frameworks/vue.js.map +1 -0
  330. package/dist/frontend/hmr-client.d.ts +22 -0
  331. package/dist/frontend/hmr-client.d.ts.map +1 -0
  332. package/dist/frontend/hmr-client.js +654 -0
  333. package/dist/frontend/hmr-client.js.map +1 -0
  334. package/dist/frontend/hmr.d.ts +185 -0
  335. package/dist/frontend/hmr.d.ts.map +1 -0
  336. package/dist/frontend/hmr.js +619 -0
  337. package/dist/frontend/hmr.js.map +1 -0
  338. package/dist/frontend/index.d.ts +34 -0
  339. package/dist/frontend/index.d.ts.map +1 -0
  340. package/dist/frontend/index.js.map +1 -0
  341. package/dist/frontend/islands.d.ts +135 -0
  342. package/dist/frontend/islands.d.ts.map +1 -0
  343. package/dist/frontend/islands.js +455 -0
  344. package/dist/frontend/islands.js.map +1 -0
  345. package/dist/frontend/isr.d.ts +143 -0
  346. package/dist/frontend/isr.d.ts.map +1 -0
  347. package/dist/frontend/isr.js +440 -0
  348. package/dist/frontend/isr.js.map +1 -0
  349. package/dist/frontend/layout.d.ts +140 -0
  350. package/dist/frontend/layout.d.ts.map +1 -0
  351. package/dist/frontend/layout.js +392 -0
  352. package/dist/frontend/layout.js.map +1 -0
  353. package/dist/frontend/ssr/react.d.ts +118 -0
  354. package/dist/frontend/ssr/react.d.ts.map +1 -0
  355. package/dist/frontend/ssr/react.js +373 -0
  356. package/dist/frontend/ssr/react.js.map +1 -0
  357. package/dist/frontend/ssr/solid.d.ts +141 -0
  358. package/dist/frontend/ssr/solid.d.ts.map +1 -0
  359. package/dist/frontend/ssr/solid.js +440 -0
  360. package/dist/frontend/ssr/solid.js.map +1 -0
  361. package/dist/frontend/ssr/svelte.d.ts +158 -0
  362. package/dist/frontend/ssr/svelte.d.ts.map +1 -0
  363. package/dist/frontend/ssr/svelte.js +439 -0
  364. package/dist/frontend/ssr/svelte.js.map +1 -0
  365. package/dist/frontend/ssr/vue.d.ts +161 -0
  366. package/dist/frontend/ssr/vue.d.ts.map +1 -0
  367. package/dist/frontend/ssr/vue.js +385 -0
  368. package/dist/frontend/ssr/vue.js.map +1 -0
  369. package/dist/frontend/ssr.d.ts +147 -0
  370. package/dist/frontend/ssr.d.ts.map +1 -0
  371. package/dist/frontend/ssr.js +609 -0
  372. package/dist/frontend/ssr.js.map +1 -0
  373. package/dist/frontend/types.d.ts +1902 -0
  374. package/dist/frontend/types.d.ts.map +1 -0
  375. package/dist/frontend/types.js +8 -0
  376. package/dist/frontend/types.js.map +1 -0
  377. package/dist/graphql/built-in-engine.d.ts +36 -0
  378. package/dist/graphql/built-in-engine.d.ts.map +1 -0
  379. package/dist/graphql/built-in-engine.js +443 -0
  380. package/dist/graphql/built-in-engine.js.map +1 -0
  381. package/dist/graphql/context-builder.d.ts +44 -0
  382. package/dist/graphql/context-builder.d.ts.map +1 -0
  383. package/dist/graphql/context-builder.js +91 -0
  384. package/dist/graphql/context-builder.js.map +1 -0
  385. package/dist/graphql/decorators.d.ts +162 -0
  386. package/dist/graphql/decorators.d.ts.map +1 -0
  387. package/dist/graphql/decorators.js +291 -0
  388. package/dist/graphql/decorators.js.map +1 -0
  389. package/dist/graphql/execution-pipeline.d.ts +67 -0
  390. package/dist/graphql/execution-pipeline.d.ts.map +1 -0
  391. package/dist/graphql/execution-pipeline.js +127 -0
  392. package/dist/graphql/execution-pipeline.js.map +1 -0
  393. package/dist/graphql/graphql-module.d.ts +70 -0
  394. package/dist/graphql/graphql-module.d.ts.map +1 -0
  395. package/dist/graphql/graphql-module.js +442 -0
  396. package/dist/graphql/graphql-module.js.map +1 -0
  397. package/dist/graphql/index.d.ts +48 -0
  398. package/dist/graphql/index.d.ts.map +1 -0
  399. package/dist/graphql/index.js.map +1 -0
  400. package/dist/graphql/metadata.d.ts +37 -0
  401. package/dist/graphql/metadata.d.ts.map +1 -0
  402. package/dist/graphql/metadata.js +130 -0
  403. package/dist/graphql/metadata.js.map +1 -0
  404. package/dist/graphql/schema-builder.d.ts +34 -0
  405. package/dist/graphql/schema-builder.d.ts.map +1 -0
  406. package/dist/graphql/schema-builder.js +251 -0
  407. package/dist/graphql/schema-builder.js.map +1 -0
  408. package/dist/graphql/subscription-handler.d.ts +47 -0
  409. package/dist/graphql/subscription-handler.d.ts.map +1 -0
  410. package/dist/graphql/subscription-handler.js +201 -0
  411. package/dist/graphql/subscription-handler.js.map +1 -0
  412. package/dist/graphql/types.d.ts +252 -0
  413. package/dist/graphql/types.d.ts.map +1 -0
  414. package/dist/graphql/types.js +28 -0
  415. package/dist/graphql/types.js.map +1 -0
  416. package/dist/health/index.d.ts +176 -0
  417. package/dist/health/index.d.ts.map +1 -0
  418. package/dist/health/index.js.map +1 -0
  419. package/dist/i18n/engine.d.ts +105 -0
  420. package/dist/i18n/engine.d.ts.map +1 -0
  421. package/dist/i18n/engine.js +248 -0
  422. package/dist/i18n/engine.js.map +1 -0
  423. package/dist/i18n/index.d.ts +13 -0
  424. package/dist/i18n/index.d.ts.map +1 -0
  425. package/dist/i18n/index.js.map +1 -0
  426. package/dist/i18n/loader.d.ts +79 -0
  427. package/dist/i18n/loader.d.ts.map +1 -0
  428. package/dist/i18n/loader.js +192 -0
  429. package/dist/i18n/loader.js.map +1 -0
  430. package/dist/i18n/middleware.d.ts +96 -0
  431. package/dist/i18n/middleware.d.ts.map +1 -0
  432. package/dist/i18n/middleware.js +126 -0
  433. package/dist/i18n/middleware.js.map +1 -0
  434. package/dist/i18n/negotiator.d.ts +84 -0
  435. package/dist/i18n/negotiator.d.ts.map +1 -0
  436. package/dist/i18n/negotiator.js +139 -0
  437. package/dist/i18n/negotiator.js.map +1 -0
  438. package/dist/i18n/types.d.ts +129 -0
  439. package/dist/i18n/types.d.ts.map +1 -0
  440. package/dist/i18n/types.js +8 -0
  441. package/dist/i18n/types.js.map +1 -0
  442. package/dist/index.d.ts +48 -0
  443. package/dist/index.d.ts.map +1 -0
  444. package/dist/index.js.map +1 -0
  445. package/dist/jobs/drivers/memory.d.ts +38 -0
  446. package/dist/jobs/drivers/memory.d.ts.map +1 -0
  447. package/dist/jobs/drivers/memory.js +246 -0
  448. package/dist/jobs/drivers/memory.js.map +1 -0
  449. package/dist/jobs/drivers/redis.d.ts +34 -0
  450. package/dist/jobs/drivers/redis.d.ts.map +1 -0
  451. package/dist/jobs/drivers/redis.js +355 -0
  452. package/dist/jobs/drivers/redis.js.map +1 -0
  453. package/dist/jobs/index.d.ts +12 -0
  454. package/dist/jobs/index.d.ts.map +1 -0
  455. package/dist/jobs/index.js.map +1 -0
  456. package/dist/jobs/queue.d.ts +93 -0
  457. package/dist/jobs/queue.d.ts.map +1 -0
  458. package/dist/jobs/queue.js +233 -0
  459. package/dist/jobs/queue.js.map +1 -0
  460. package/dist/jobs/types.d.ts +193 -0
  461. package/dist/jobs/types.d.ts.map +1 -0
  462. package/dist/jobs/types.js +8 -0
  463. package/dist/jobs/types.js.map +1 -0
  464. package/dist/jobs/worker.d.ts +91 -0
  465. package/dist/jobs/worker.d.ts.map +1 -0
  466. package/dist/jobs/worker.js +300 -0
  467. package/dist/jobs/worker.js.map +1 -0
  468. package/dist/lock/index.d.ts +141 -0
  469. package/dist/lock/index.d.ts.map +1 -0
  470. package/dist/lock/index.js.map +1 -0
  471. package/dist/logger/index.d.ts +156 -0
  472. package/dist/logger/index.d.ts.map +1 -0
  473. package/dist/logger/index.js.map +1 -0
  474. package/dist/logger/transports/index.d.ts +371 -0
  475. package/dist/logger/transports/index.d.ts.map +1 -0
  476. package/dist/logger/transports/index.js +740 -0
  477. package/dist/logger/transports/index.js.map +1 -0
  478. package/dist/metrics/index.d.ts +163 -0
  479. package/dist/metrics/index.d.ts.map +1 -0
  480. package/dist/metrics/index.js.map +1 -0
  481. package/dist/middleware/built-in.d.ts +50 -0
  482. package/dist/middleware/built-in.d.ts.map +1 -0
  483. package/dist/middleware/built-in.js +220 -0
  484. package/dist/middleware/built-in.js.map +1 -0
  485. package/dist/middleware/index.d.ts +40 -0
  486. package/dist/middleware/index.d.ts.map +1 -0
  487. package/dist/middleware/index.js.map +1 -0
  488. package/dist/migrations/index.d.ts +48 -0
  489. package/dist/migrations/index.d.ts.map +1 -0
  490. package/dist/migrations/index.js +3 -0
  491. package/dist/migrations/index.js.map +1 -0
  492. package/dist/modules/filters.d.ts +150 -0
  493. package/dist/modules/filters.d.ts.map +1 -0
  494. package/dist/modules/filters.js +338 -0
  495. package/dist/modules/filters.js.map +1 -0
  496. package/dist/modules/guards.d.ts +188 -0
  497. package/dist/modules/guards.d.ts.map +1 -0
  498. package/dist/modules/guards.js +278 -0
  499. package/dist/modules/guards.js.map +1 -0
  500. package/dist/modules/index.d.ts +266 -0
  501. package/dist/modules/index.d.ts.map +1 -0
  502. package/dist/modules/index.js.map +1 -0
  503. package/dist/modules/interceptors.d.ts +242 -0
  504. package/dist/modules/interceptors.d.ts.map +1 -0
  505. package/dist/modules/interceptors.js +407 -0
  506. package/dist/modules/interceptors.js.map +1 -0
  507. package/dist/modules/lazy.d.ts +187 -0
  508. package/dist/modules/lazy.d.ts.map +1 -0
  509. package/dist/modules/lazy.js +305 -0
  510. package/dist/modules/lazy.js.map +1 -0
  511. package/dist/modules/lifecycle.d.ts +221 -0
  512. package/dist/modules/lifecycle.d.ts.map +1 -0
  513. package/dist/modules/lifecycle.js +314 -0
  514. package/dist/modules/lifecycle.js.map +1 -0
  515. package/dist/modules/metadata.d.ts +32 -0
  516. package/dist/modules/metadata.d.ts.map +1 -0
  517. package/dist/modules/metadata.js +59 -0
  518. package/dist/modules/metadata.js.map +1 -0
  519. package/dist/modules/pipes.d.ts +287 -0
  520. package/dist/modules/pipes.d.ts.map +1 -0
  521. package/dist/modules/pipes.js +443 -0
  522. package/dist/modules/pipes.js.map +1 -0
  523. package/dist/notification/channels/base.d.ts +32 -0
  524. package/dist/notification/channels/base.d.ts.map +1 -0
  525. package/dist/notification/channels/base.js +37 -0
  526. package/dist/notification/channels/base.js.map +1 -0
  527. package/dist/notification/channels/email.d.ts +37 -0
  528. package/dist/notification/channels/email.d.ts.map +1 -0
  529. package/dist/notification/channels/email.js +85 -0
  530. package/dist/notification/channels/email.js.map +1 -0
  531. package/dist/notification/channels/push.d.ts +37 -0
  532. package/dist/notification/channels/push.d.ts.map +1 -0
  533. package/dist/notification/channels/push.js +84 -0
  534. package/dist/notification/channels/push.js.map +1 -0
  535. package/dist/notification/channels/sms.d.ts +37 -0
  536. package/dist/notification/channels/sms.d.ts.map +1 -0
  537. package/dist/notification/channels/sms.js +83 -0
  538. package/dist/notification/channels/sms.js.map +1 -0
  539. package/dist/notification/channels/whatsapp.d.ts +37 -0
  540. package/dist/notification/channels/whatsapp.d.ts.map +1 -0
  541. package/dist/notification/channels/whatsapp.js +81 -0
  542. package/dist/notification/channels/whatsapp.js.map +1 -0
  543. package/dist/notification/index.d.ts +15 -0
  544. package/dist/notification/index.d.ts.map +1 -0
  545. package/dist/notification/index.js.map +1 -0
  546. package/dist/notification/service.d.ts +100 -0
  547. package/dist/notification/service.d.ts.map +1 -0
  548. package/dist/notification/service.js +279 -0
  549. package/dist/notification/service.js.map +1 -0
  550. package/dist/notification/types.d.ts +253 -0
  551. package/dist/notification/types.d.ts.map +1 -0
  552. package/dist/notification/types.js +14 -0
  553. package/dist/notification/types.js.map +1 -0
  554. package/dist/observability/__tests__/observability.test.d.ts +2 -0
  555. package/dist/observability/__tests__/observability.test.d.ts.map +1 -0
  556. package/dist/observability/__tests__/observability.test.js +404 -0
  557. package/dist/observability/__tests__/observability.test.js.map +1 -0
  558. package/dist/observability/breadcrumbs.d.ts +48 -0
  559. package/dist/observability/breadcrumbs.d.ts.map +1 -0
  560. package/dist/observability/breadcrumbs.js +97 -0
  561. package/dist/observability/breadcrumbs.js.map +1 -0
  562. package/dist/observability/index.d.ts +95 -0
  563. package/dist/observability/index.d.ts.map +1 -0
  564. package/dist/observability/index.js.map +1 -0
  565. package/dist/observability/interceptor.d.ts +19 -0
  566. package/dist/observability/interceptor.d.ts.map +1 -0
  567. package/dist/observability/interceptor.js +67 -0
  568. package/dist/observability/interceptor.js.map +1 -0
  569. package/dist/observability/service.d.ts +101 -0
  570. package/dist/observability/service.d.ts.map +1 -0
  571. package/dist/observability/service.js +249 -0
  572. package/dist/observability/service.js.map +1 -0
  573. package/dist/observability/trace.d.ts +21 -0
  574. package/dist/observability/trace.d.ts.map +1 -0
  575. package/dist/observability/trace.js +35 -0
  576. package/dist/observability/trace.js.map +1 -0
  577. package/dist/observability/types.d.ts +172 -0
  578. package/dist/observability/types.d.ts.map +1 -0
  579. package/dist/observability/types.js +8 -0
  580. package/dist/observability/types.js.map +1 -0
  581. package/dist/openapi/decorators.d.ts +173 -0
  582. package/dist/openapi/decorators.d.ts.map +1 -0
  583. package/dist/openapi/decorators.js +276 -0
  584. package/dist/openapi/decorators.js.map +1 -0
  585. package/dist/openapi/document-builder.d.ts +82 -0
  586. package/dist/openapi/document-builder.d.ts.map +1 -0
  587. package/dist/openapi/document-builder.js +228 -0
  588. package/dist/openapi/document-builder.js.map +1 -0
  589. package/dist/openapi/index.d.ts +48 -0
  590. package/dist/openapi/index.d.ts.map +1 -0
  591. package/dist/openapi/index.js.map +1 -0
  592. package/dist/openapi/metadata.d.ts +36 -0
  593. package/dist/openapi/metadata.d.ts.map +1 -0
  594. package/dist/openapi/metadata.js +78 -0
  595. package/dist/openapi/metadata.js.map +1 -0
  596. package/dist/openapi/route-scanner.d.ts +34 -0
  597. package/dist/openapi/route-scanner.d.ts.map +1 -0
  598. package/dist/openapi/route-scanner.js +174 -0
  599. package/dist/openapi/route-scanner.js.map +1 -0
  600. package/dist/openapi/schema-generator.d.ts +53 -0
  601. package/dist/openapi/schema-generator.d.ts.map +1 -0
  602. package/dist/openapi/schema-generator.js +236 -0
  603. package/dist/openapi/schema-generator.js.map +1 -0
  604. package/dist/openapi/swagger-module.d.ts +57 -0
  605. package/dist/openapi/swagger-module.d.ts.map +1 -0
  606. package/dist/openapi/swagger-module.js +143 -0
  607. package/dist/openapi/swagger-module.js.map +1 -0
  608. package/dist/openapi/types.d.ts +344 -0
  609. package/dist/openapi/types.d.ts.map +1 -0
  610. package/dist/openapi/types.js +7 -0
  611. package/dist/openapi/types.js.map +1 -0
  612. package/dist/orm/index.d.ts +10 -0
  613. package/dist/orm/index.d.ts.map +1 -0
  614. package/dist/orm/index.js.map +1 -0
  615. package/dist/router/index.d.ts +73 -0
  616. package/dist/router/index.d.ts.map +1 -0
  617. package/dist/router/index.js.map +1 -0
  618. package/dist/router/linear.d.ts +54 -0
  619. package/dist/router/linear.d.ts.map +1 -0
  620. package/dist/router/linear.js +261 -0
  621. package/dist/router/linear.js.map +1 -0
  622. package/dist/router/regex.d.ts +49 -0
  623. package/dist/router/regex.d.ts.map +1 -0
  624. package/dist/router/regex.js +201 -0
  625. package/dist/router/regex.js.map +1 -0
  626. package/dist/router/tree.d.ts +112 -0
  627. package/dist/router/tree.d.ts.map +1 -0
  628. package/dist/router/tree.js +360 -0
  629. package/dist/router/tree.js.map +1 -0
  630. package/dist/rpc/index.d.ts +321 -0
  631. package/dist/rpc/index.d.ts.map +1 -0
  632. package/dist/rpc/index.js.map +1 -0
  633. package/dist/schema/index.d.ts +10 -0
  634. package/dist/schema/index.d.ts.map +1 -0
  635. package/dist/schema/index.js.map +1 -0
  636. package/dist/security/index.d.ts +126 -0
  637. package/dist/security/index.d.ts.map +1 -0
  638. package/dist/security/index.js +309 -0
  639. package/dist/security/index.js.map +1 -0
  640. package/dist/ssg/index.d.ts +73 -0
  641. package/dist/ssg/index.d.ts.map +1 -0
  642. package/dist/ssg/index.js +464 -0
  643. package/dist/ssg/index.js.map +1 -0
  644. package/dist/storage/index.d.ts +99 -0
  645. package/dist/storage/index.d.ts.map +1 -0
  646. package/dist/storage/index.js +338 -0
  647. package/dist/storage/index.js.map +1 -0
  648. package/dist/telemetry/index.d.ts +376 -0
  649. package/dist/telemetry/index.d.ts.map +1 -0
  650. package/dist/telemetry/index.js.map +1 -0
  651. package/dist/template/index.d.ts +7 -0
  652. package/dist/template/index.d.ts.map +1 -0
  653. package/dist/template/index.js.map +1 -0
  654. package/dist/templates/engine.d.ts +60 -0
  655. package/dist/templates/engine.d.ts.map +1 -0
  656. package/dist/templates/engine.js +177 -0
  657. package/dist/templates/engine.js.map +1 -0
  658. package/dist/templates/index.d.ts +9 -0
  659. package/dist/templates/index.d.ts.map +1 -0
  660. package/dist/templates/index.js.map +1 -0
  661. package/dist/templates/loader.d.ts +45 -0
  662. package/dist/templates/loader.d.ts.map +1 -0
  663. package/dist/templates/loader.js +274 -0
  664. package/dist/templates/loader.js.map +1 -0
  665. package/dist/templates/renderers/markdown.d.ts +46 -0
  666. package/dist/templates/renderers/markdown.d.ts.map +1 -0
  667. package/dist/templates/renderers/markdown.js +181 -0
  668. package/dist/templates/renderers/markdown.js.map +1 -0
  669. package/dist/templates/renderers/simple.d.ts +35 -0
  670. package/dist/templates/renderers/simple.d.ts.map +1 -0
  671. package/dist/templates/renderers/simple.js +245 -0
  672. package/dist/templates/renderers/simple.js.map +1 -0
  673. package/dist/templates/types.d.ts +138 -0
  674. package/dist/templates/types.d.ts.map +1 -0
  675. package/dist/templates/types.js +8 -0
  676. package/dist/templates/types.js.map +1 -0
  677. package/dist/testing/index.d.ts +539 -0
  678. package/dist/testing/index.d.ts.map +1 -0
  679. package/dist/testing/index.js.map +1 -0
  680. package/dist/types/index.d.ts +116 -0
  681. package/dist/types/index.d.ts.map +1 -0
  682. package/dist/types/index.js.map +1 -0
  683. package/dist/validation/index.d.ts +89 -0
  684. package/dist/validation/index.d.ts.map +1 -0
  685. package/dist/validation/index.js +276 -0
  686. package/dist/validation/index.js.map +1 -0
  687. package/dist/validation/schemas.d.ts +283 -0
  688. package/dist/validation/schemas.d.ts.map +1 -0
  689. package/dist/validation/schemas.js +407 -0
  690. package/dist/validation/schemas.js.map +1 -0
  691. package/dist/websocket/index.d.ts +252 -0
  692. package/dist/websocket/index.d.ts.map +1 -0
  693. package/dist/websocket/index.js +749 -0
  694. package/dist/websocket/index.js.map +1 -0
  695. package/package.json +3 -3
  696. package/src/database/migrations/index.ts +8 -0
  697. package/src/migrations/index.ts +40 -1
  698. package/src/types/index.ts +1 -1
  699. package/tsconfig.json +2 -6
@@ -0,0 +1,443 @@
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 { validate, } from "../validation";
16
+ // WeakMap for storing pipes metadata on method prototypes
17
+ const pipesMethodMetadata = new WeakMap();
18
+ /**
19
+ * Set pipes metadata on a method
20
+ */
21
+ function setMethodPipes(target, propertyKey, metadata) {
22
+ if (!pipesMethodMetadata.has(target)) {
23
+ pipesMethodMetadata.set(target, new Map());
24
+ }
25
+ pipesMethodMetadata.get(target)?.set(propertyKey, metadata);
26
+ }
27
+ /**
28
+ * Get pipes metadata from a method
29
+ */
30
+ export function getMethodPipes(target, propertyKey) {
31
+ return pipesMethodMetadata.get(target)?.get(propertyKey);
32
+ }
33
+ // ============= Pipe Decorator =============
34
+ /**
35
+ * Decorator to apply pipes to a parameter.
36
+ * Pipes are executed in the order they are provided.
37
+ *
38
+ * @param pipes - Pipes to apply
39
+ * @returns ParameterDecorator
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * @Get(':id')
44
+ * getUser(@Param('id', ParseIntPipe) id: number) {}
45
+ * ```
46
+ */
47
+ export function UsePipes(...pipes) {
48
+ return (target, propertyKey, parameterIndex) => {
49
+ if (propertyKey === undefined) {
50
+ throw new Error("UsePipes can only be used on method parameters");
51
+ }
52
+ const targetObj = target;
53
+ const existing = getMethodPipes(targetObj, propertyKey) ?? [];
54
+ // Find existing metadata for this parameter or create new
55
+ const existingParam = existing.find((p) => p.index === parameterIndex);
56
+ if (existingParam) {
57
+ existingParam.pipes.push(...pipes);
58
+ }
59
+ else {
60
+ existing.push({
61
+ index: parameterIndex,
62
+ decorator: "custom",
63
+ pipes: [...pipes],
64
+ });
65
+ }
66
+ setMethodPipes(targetObj, propertyKey, existing);
67
+ };
68
+ }
69
+ // ============= Parameter Decorators =============
70
+ /**
71
+ * Extract and optionally validate request body.
72
+ *
73
+ * @param schema - Optional Standard Schema for validation
74
+ * @returns ParameterDecorator
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * @Post()
79
+ * createUser(@Body(userSchema) body: User) {}
80
+ * ```
81
+ */
82
+ export function Body(schema) {
83
+ return (target, propertyKey, parameterIndex) => {
84
+ if (propertyKey === undefined) {
85
+ throw new Error("Body can only be used on method parameters");
86
+ }
87
+ const targetObj = target;
88
+ const existing = getMethodPipes(targetObj, propertyKey) ?? [];
89
+ existing.push({
90
+ index: parameterIndex,
91
+ decorator: "body",
92
+ schema,
93
+ pipes: schema ? [new ValidationPipe(schema)] : [],
94
+ });
95
+ setMethodPipes(targetObj, propertyKey, existing);
96
+ };
97
+ }
98
+ /**
99
+ * Extract and optionally validate query parameter.
100
+ *
101
+ * @param key - Query parameter key (optional, if omitted returns all query params)
102
+ * @param schema - Optional Standard Schema for validation
103
+ * @returns ParameterDecorator
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * @Get()
108
+ * search(@Query('q') query: string) {}
109
+ *
110
+ * @Get()
111
+ * search(@Query('limit', limitSchema) limit: number) {}
112
+ * ```
113
+ */
114
+ export function Query(key, schema) {
115
+ return (target, propertyKey, parameterIndex) => {
116
+ if (propertyKey === undefined) {
117
+ throw new Error("Query can only be used on method parameters");
118
+ }
119
+ const targetObj = target;
120
+ const existing = getMethodPipes(targetObj, propertyKey) ?? [];
121
+ existing.push({
122
+ index: parameterIndex,
123
+ decorator: "query",
124
+ key,
125
+ schema,
126
+ pipes: schema ? [new ValidationPipe(schema)] : [],
127
+ });
128
+ setMethodPipes(targetObj, propertyKey, existing);
129
+ };
130
+ }
131
+ /**
132
+ * Extract and transform route parameter.
133
+ *
134
+ * @param key - Route parameter key (optional, if omitted returns all params)
135
+ * @param pipes - Pipes to apply for transformation
136
+ * @returns ParameterDecorator
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * @Get(':id')
141
+ * getUser(@Param('id', ParseIntPipe) id: number) {}
142
+ * ```
143
+ */
144
+ export function Param(key, ...pipes) {
145
+ return (target, propertyKey, parameterIndex) => {
146
+ if (propertyKey === undefined) {
147
+ throw new Error("Param can only be used on method parameters");
148
+ }
149
+ const targetObj = target;
150
+ const existing = getMethodPipes(targetObj, propertyKey) ?? [];
151
+ existing.push({
152
+ index: parameterIndex,
153
+ decorator: "param",
154
+ key,
155
+ pipes: [...pipes],
156
+ });
157
+ setMethodPipes(targetObj, propertyKey, existing);
158
+ };
159
+ }
160
+ // ============= Built-in Pipes =============
161
+ /**
162
+ * ValidationPipe - Validates using Standard Schema
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * @Body(userSchema) body: User
167
+ * // or explicitly
168
+ * @UsePipes(new ValidationPipe(userSchema))
169
+ * ```
170
+ */
171
+ export class ValidationPipe {
172
+ schema;
173
+ constructor(schema) {
174
+ this.schema = schema;
175
+ }
176
+ async transform(value, context) {
177
+ const result = await validate(this.schema, value);
178
+ if (result.success) {
179
+ return result.data;
180
+ }
181
+ // Validation failed
182
+ const failedResult = result;
183
+ const error = new Error("Validation failed");
184
+ error.issues = [...failedResult.issues];
185
+ throw error;
186
+ }
187
+ }
188
+ /**
189
+ * ParseIntPipe - Transforms string to integer
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * @Param('id', ParseIntPipe) id: number
194
+ * ```
195
+ */
196
+ export class ParseIntPipe {
197
+ transform(value, context) {
198
+ const parsed = Number.parseInt(value, 10);
199
+ if (isNaN(parsed)) {
200
+ throw new Error(`Validation failed: "${value}" is not a valid integer`);
201
+ }
202
+ return parsed;
203
+ }
204
+ }
205
+ /**
206
+ * ParseFloatPipe - Transforms string to float
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * @Param('price', ParseFloatPipe) price: number
211
+ * ```
212
+ */
213
+ export class ParseFloatPipe {
214
+ transform(value, context) {
215
+ const parsed = Number.parseFloat(value);
216
+ if (isNaN(parsed)) {
217
+ throw new Error(`Validation failed: "${value}" is not a valid number`);
218
+ }
219
+ return parsed;
220
+ }
221
+ }
222
+ /**
223
+ * ParseBoolPipe - Transforms string to boolean
224
+ *
225
+ * @example
226
+ * ```typescript
227
+ * @Query('active', ParseBoolPipe) active: boolean
228
+ * ```
229
+ */
230
+ export class ParseBoolPipe {
231
+ truthyValues = ["true", "1", "yes", "on"];
232
+ falsyValues = ["false", "0", "no", "off"];
233
+ transform(value, context) {
234
+ const lower = value.toLowerCase();
235
+ if (this.truthyValues.includes(lower)) {
236
+ return true;
237
+ }
238
+ if (this.falsyValues.includes(lower)) {
239
+ return false;
240
+ }
241
+ throw new Error(`Validation failed: "${value}" is not a valid boolean`);
242
+ }
243
+ }
244
+ /**
245
+ * DefaultValuePipe - Provides default value when input is undefined or null
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * @Query('limit', new DefaultValuePipe(10), ParseIntPipe) limit: number
250
+ * ```
251
+ */
252
+ export class DefaultValuePipe {
253
+ defaultValue;
254
+ constructor(defaultValue) {
255
+ this.defaultValue = defaultValue;
256
+ }
257
+ transform(value, context) {
258
+ if (value === undefined || value === null) {
259
+ return this.defaultValue;
260
+ }
261
+ return value;
262
+ }
263
+ }
264
+ /**
265
+ * TrimPipe - Trims string whitespace
266
+ *
267
+ * @example
268
+ * ```typescript
269
+ * @Query('name', TrimPipe) name: string
270
+ * ```
271
+ */
272
+ export class TrimPipe {
273
+ transform(value, context) {
274
+ if (typeof value !== "string") {
275
+ throw new Error("Value must be a string");
276
+ }
277
+ return value.trim();
278
+ }
279
+ }
280
+ /**
281
+ * ParseJsonPipe - Parses JSON string to object
282
+ *
283
+ * @example
284
+ * ```typescript
285
+ * @Query('data', ParseJsonPipe) data: MyObject
286
+ * ```
287
+ */
288
+ export class ParseJsonPipe {
289
+ transform(value, context) {
290
+ try {
291
+ return JSON.parse(value);
292
+ }
293
+ catch {
294
+ throw new Error(`Validation failed: "${value}" is not valid JSON`);
295
+ }
296
+ }
297
+ }
298
+ /**
299
+ * ParseArrayPipe - Transforms comma-separated string to array
300
+ *
301
+ * @example
302
+ * ```typescript
303
+ * @Query('tags', ParseArrayPipe) tags: string[]
304
+ * ```
305
+ */
306
+ export class ParseArrayPipe {
307
+ separator;
308
+ constructor(separator = ",") {
309
+ this.separator = separator;
310
+ }
311
+ transform(value, context) {
312
+ if (typeof value !== "string") {
313
+ throw new Error("Value must be a string");
314
+ }
315
+ return value
316
+ .split(this.separator)
317
+ .map((s) => s.trim())
318
+ .filter((s) => s.length > 0);
319
+ }
320
+ }
321
+ /**
322
+ * Execute pipes in order and return the transformed value
323
+ *
324
+ * @param value - Initial value to transform
325
+ * @param context - Pipe context
326
+ * @param options - Pipe executor options
327
+ * @returns Transformed value
328
+ * @throws Error if any pipe fails
329
+ */
330
+ export async function executePipes(value, context, options) {
331
+ const { globalPipes = [], parameterPipes = [], resolvePipe } = options;
332
+ // Combine all pipes in execution order
333
+ const allPipes = [...globalPipes, ...parameterPipes];
334
+ let currentValue = value;
335
+ // Execute each pipe in order
336
+ for (const pipe of allPipes) {
337
+ let pipeInstance = null;
338
+ // Resolve the pipe
339
+ if (typeof pipe === "function") {
340
+ // Check if it's a pipe function or a class constructor
341
+ const funcPipe = pipe;
342
+ if (funcPipe.prototype &&
343
+ typeof funcPipe.prototype === "object" &&
344
+ "transform" in funcPipe.prototype) {
345
+ // It's a class constructor - try to resolve from container or create instance
346
+ pipeInstance = resolvePipe ? resolvePipe(pipe) : null;
347
+ if (!pipeInstance) {
348
+ // Create a new instance if not in container
349
+ const PipeClass = pipe;
350
+ pipeInstance = new PipeClass();
351
+ }
352
+ }
353
+ else {
354
+ // It's a pipe function
355
+ pipeInstance = pipe;
356
+ }
357
+ }
358
+ else if (typeof pipe === "object" && pipe !== null) {
359
+ // It's a token or already an instance
360
+ const objPipe = pipe;
361
+ if ("transform" in objPipe && typeof objPipe.transform === "function") {
362
+ // It's already a PipeTransform instance
363
+ pipeInstance = pipe;
364
+ }
365
+ else {
366
+ // It's a token - try to resolve
367
+ pipeInstance = resolvePipe ? resolvePipe(pipe) : null;
368
+ }
369
+ }
370
+ if (!pipeInstance) {
371
+ console.warn("Pipe could not be resolved:", pipe);
372
+ continue;
373
+ }
374
+ // Execute the pipe
375
+ if (typeof pipeInstance === "function") {
376
+ // Pipe function
377
+ currentValue = await pipeInstance(currentValue, context);
378
+ }
379
+ else {
380
+ // PipeTransform instance
381
+ currentValue = await pipeInstance.transform(currentValue, context);
382
+ }
383
+ }
384
+ return currentValue;
385
+ }
386
+ // ============= Parameter Value Extractor =============
387
+ /**
388
+ * Extract parameter value from context based on decorator type
389
+ */
390
+ export async function extractParameterValue(context, metadata) {
391
+ switch (metadata.decorator) {
392
+ case "body":
393
+ return await context.body();
394
+ case "query":
395
+ if (metadata.key) {
396
+ return context.query[metadata.key];
397
+ }
398
+ return context.query;
399
+ case "param":
400
+ if (metadata.key) {
401
+ return context.params[metadata.key];
402
+ }
403
+ return context.params;
404
+ case "custom":
405
+ default:
406
+ return undefined;
407
+ }
408
+ }
409
+ // ============= Error Response =============
410
+ /**
411
+ * Create a 400 Bad Request response for pipe errors
412
+ */
413
+ export function createBadRequestResponse(error) {
414
+ const issues = error.issues;
415
+ return new Response(JSON.stringify({
416
+ statusCode: 400,
417
+ error: "Bad Request",
418
+ message: error.message,
419
+ ...(issues && { issues }),
420
+ }), {
421
+ status: 400,
422
+ headers: {
423
+ "Content-Type": "application/json",
424
+ },
425
+ });
426
+ }
427
+ // ============= Type Guards =============
428
+ /**
429
+ * Check if a value is a PipeTransform instance
430
+ */
431
+ export function isPipeTransform(value) {
432
+ return (typeof value === "object" &&
433
+ value !== null &&
434
+ "transform" in value &&
435
+ typeof value.transform === "function");
436
+ }
437
+ /**
438
+ * Check if a value is a pipe function
439
+ */
440
+ export function isPipeFn(value) {
441
+ return typeof value === "function" && !isPipeTransform(value);
442
+ }
443
+ //# sourceMappingURL=pipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipes.js","sourceRoot":"","sources":["../../src/modules/pipes.ts"],"names":[],"mappings":"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"}
@@ -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
+ * Base Channel Service
3
+ *
4
+ * Abstract base class for all channel implementations
5
+ */
6
+ // ============= Abstract Base Channel Service =============
7
+ export class BaseChannelService {
8
+ configSchema;
9
+ /**
10
+ * Get health status
11
+ */
12
+ async getHealth() {
13
+ return {
14
+ status: "healthy",
15
+ message: "Channel is operational",
16
+ checkedAt: new Date(),
17
+ };
18
+ }
19
+ /**
20
+ * Validate that value matches expected type
21
+ */
22
+ validateField(value, expectedType, fieldName) {
23
+ const actualType = typeof value;
24
+ if (actualType !== expectedType) {
25
+ throw new Error(`Invalid ${this.name} message: ${fieldName} must be ${expectedType}, got ${actualType}`);
26
+ }
27
+ }
28
+ /**
29
+ * Validate that required field exists
30
+ */
31
+ validateRequired(value, fieldName) {
32
+ if (value === undefined || value === null) {
33
+ throw new Error(`Invalid ${this.name} message: ${fieldName} is required`);
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/notification/channels/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,4DAA4D;AAE5D,MAAM,OAAgB,kBAAkB;IAK9B,YAAY,CAAW;IAahC;;OAEG;IACH,KAAK,CAAC,SAAS;QACd,OAAO;YACN,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,wBAAwB;YACjC,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACO,aAAa,CACtB,KAAc,EACd,YAAoB,EACpB,SAAiB;QAEjB,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC;QAChC,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CACd,WAAW,IAAI,CAAC,IAAI,aAAa,SAAS,YAAY,YAAY,SAAS,UAAU,EAAE,CACvF,CAAC;QACH,CAAC;IACF,CAAC;IAED;;OAEG;IACO,gBAAgB,CAAC,KAAc,EAAE,SAAiB;QAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,aAAa,SAAS,cAAc,CAAC,CAAC;QAC3E,CAAC;IACF,CAAC;CACD"}
@@ -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,85 @@
1
+ /**
2
+ * Email Channel Service
3
+ *
4
+ * Sends notifications via email through various drivers
5
+ * (SMTP, Sendgrid, Brevo, Resend)
6
+ */
7
+ import { BaseChannelService } from "./base";
8
+ // ============= Email Channel Service =============
9
+ export class EmailChannelService extends BaseChannelService {
10
+ name = "email";
11
+ config;
12
+ sentCount = 0;
13
+ failureCount = 0;
14
+ constructor(config) {
15
+ super();
16
+ this.config = config;
17
+ }
18
+ /**
19
+ * Validate email message structure
20
+ */
21
+ validate(message) {
22
+ if (typeof message !== "object" || message === null) {
23
+ throw new Error("Invalid email message: must be an object");
24
+ }
25
+ const msg = message;
26
+ // Check required fields
27
+ if (msg.channel !== "email") {
28
+ throw new Error('Invalid email message: channel must be "email"');
29
+ }
30
+ if (typeof msg.recipient !== "string" || !msg.recipient.includes("@")) {
31
+ throw new Error("Invalid email message: recipient must be a valid email");
32
+ }
33
+ if (typeof msg.subject !== "string" || msg.subject.length === 0) {
34
+ throw new Error("Invalid email message: subject is required");
35
+ }
36
+ // Check that at least one of html or text is present
37
+ if (!msg.html && !msg.text) {
38
+ throw new Error("Invalid email message: either html or text must be provided");
39
+ }
40
+ }
41
+ /**
42
+ * Send email message
43
+ */
44
+ async send(message) {
45
+ try {
46
+ if (this.config.dryRun) {
47
+ console.log(`[EmailChannel] Would send email to: ${message.recipient}`);
48
+ console.log(` Subject: ${message.subject}`);
49
+ this.sentCount++;
50
+ return this._generateMessageId();
51
+ }
52
+ // In a real implementation, delegate to appropriate driver
53
+ // For now, simulate sending
54
+ const messageId = this._generateMessageId();
55
+ console.log(`[EmailChannel] Email sent: ${messageId} to ${message.recipient}`);
56
+ this.sentCount++;
57
+ return messageId;
58
+ }
59
+ catch (error) {
60
+ this.failureCount++;
61
+ throw new Error(`Failed to send email: ${error instanceof Error ? error.message : String(error)}`);
62
+ }
63
+ }
64
+ /**
65
+ * Get email channel metrics
66
+ */
67
+ getMetrics() {
68
+ const total = this.sentCount + this.failureCount;
69
+ return {
70
+ sent: this.sentCount,
71
+ failed: this.failureCount,
72
+ total,
73
+ successRate: total > 0 ? this.sentCount / total : 0,
74
+ };
75
+ }
76
+ /**
77
+ * Generate a message ID
78
+ */
79
+ _generateMessageId() {
80
+ const timestamp = Date.now();
81
+ const random = Math.random().toString(36).substring(2, 15);
82
+ return `${timestamp}.${random}@bueno.local`;
83
+ }
84
+ }
85
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../src/notification/channels/email.ts"],"names":[],"mappings":"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"}