exisjs 0.7.5 → 0.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +12 -0
  3. package/dist/cli/commands/build.js.map +1 -1
  4. package/dist/cli/commands/clean.d.ts +5 -0
  5. package/dist/cli/commands/clean.d.ts.map +1 -0
  6. package/dist/cli/commands/clean.js +30 -0
  7. package/dist/cli/commands/clean.js.map +1 -0
  8. package/dist/cli/commands/dev.d.ts.map +1 -1
  9. package/dist/cli/commands/dev.js +171 -86
  10. package/dist/cli/commands/dev.js.map +1 -1
  11. package/dist/cli/commands/generate.d.ts +6 -1
  12. package/dist/cli/commands/generate.d.ts.map +1 -1
  13. package/dist/cli/commands/generate.js +57 -2
  14. package/dist/cli/commands/generate.js.map +1 -1
  15. package/dist/cli/commands/start.d.ts.map +1 -1
  16. package/dist/cli/commands/start.js +54 -16
  17. package/dist/cli/commands/start.js.map +1 -1
  18. package/dist/cli/index.js +26 -3
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/manifest.d.ts +1 -0
  21. package/dist/cli/manifest.d.ts.map +1 -1
  22. package/dist/cli/manifest.js +264 -33
  23. package/dist/cli/manifest.js.map +1 -1
  24. package/dist/cli/resolve-aliases.d.ts +1 -1
  25. package/dist/cli/resolve-aliases.d.ts.map +1 -1
  26. package/dist/cli/resolve-aliases.js +30 -13
  27. package/dist/cli/resolve-aliases.js.map +1 -1
  28. package/dist/config/config.d.ts +3 -1
  29. package/dist/config/config.d.ts.map +1 -1
  30. package/dist/config/config.js +9 -0
  31. package/dist/config/config.js.map +1 -1
  32. package/dist/config/types.d.ts +6 -0
  33. package/dist/config/types.d.ts.map +1 -1
  34. package/dist/cron/expressions.d.ts +45 -0
  35. package/dist/cron/expressions.d.ts.map +1 -0
  36. package/dist/cron/expressions.js +87 -0
  37. package/dist/cron/expressions.js.map +1 -0
  38. package/dist/cron/index.d.ts +6 -0
  39. package/dist/cron/index.d.ts.map +1 -0
  40. package/dist/cron/index.js +22 -0
  41. package/dist/cron/index.js.map +1 -0
  42. package/dist/cron/job.d.ts +50 -0
  43. package/dist/cron/job.d.ts.map +1 -0
  44. package/dist/cron/job.js +247 -0
  45. package/dist/cron/job.js.map +1 -0
  46. package/dist/cron/manager.d.ts +105 -0
  47. package/dist/cron/manager.d.ts.map +1 -0
  48. package/dist/cron/manager.js +245 -0
  49. package/dist/cron/manager.js.map +1 -0
  50. package/dist/cron/parser.d.ts +22 -0
  51. package/dist/cron/parser.d.ts.map +1 -0
  52. package/dist/cron/parser.js +269 -0
  53. package/dist/cron/parser.js.map +1 -0
  54. package/dist/cron/types.d.ts +76 -0
  55. package/dist/cron/types.d.ts.map +1 -0
  56. package/dist/cron/types.js +3 -0
  57. package/dist/cron/types.js.map +1 -0
  58. package/dist/decorators/constants.d.ts +2 -0
  59. package/dist/decorators/constants.d.ts.map +1 -1
  60. package/dist/decorators/constants.js +3 -1
  61. package/dist/decorators/constants.js.map +1 -1
  62. package/dist/decorators/core.d.ts +29 -11
  63. package/dist/decorators/core.d.ts.map +1 -1
  64. package/dist/decorators/core.js +49 -11
  65. package/dist/decorators/core.js.map +1 -1
  66. package/dist/decorators/cron.d.ts +57 -0
  67. package/dist/decorators/cron.d.ts.map +1 -0
  68. package/dist/decorators/cron.js +143 -0
  69. package/dist/decorators/cron.js.map +1 -0
  70. package/dist/decorators/index.d.ts +2 -0
  71. package/dist/decorators/index.d.ts.map +1 -1
  72. package/dist/decorators/index.js +2 -0
  73. package/dist/decorators/index.js.map +1 -1
  74. package/dist/decorators/middleware.d.ts +65 -2
  75. package/dist/decorators/middleware.d.ts.map +1 -1
  76. package/dist/decorators/middleware.js +148 -62
  77. package/dist/decorators/middleware.js.map +1 -1
  78. package/dist/decorators/params.d.ts +102 -2
  79. package/dist/decorators/params.d.ts.map +1 -1
  80. package/dist/decorators/params.js +105 -3
  81. package/dist/decorators/params.js.map +1 -1
  82. package/dist/decorators/response.d.ts.map +1 -1
  83. package/dist/decorators/response.js +32 -22
  84. package/dist/decorators/response.js.map +1 -1
  85. package/dist/decorators/routing.d.ts +81 -16
  86. package/dist/decorators/routing.d.ts.map +1 -1
  87. package/dist/decorators/routing.js +81 -16
  88. package/dist/decorators/routing.js.map +1 -1
  89. package/dist/di/container.d.ts.map +1 -1
  90. package/dist/di/container.js +6 -1
  91. package/dist/di/container.js.map +1 -1
  92. package/dist/docs/content/cli/commands.mdx +1 -1
  93. package/dist/docs/content/controllers.mdx +127 -10
  94. package/dist/docs/content/cron.mdx +196 -0
  95. package/dist/docs/content/decorators.mdx +22 -4
  96. package/dist/docs/content/errors.mdx +58 -9
  97. package/dist/docs/content/introduction.mdx +7 -7
  98. package/dist/docs/content/middleware.mdx +269 -6
  99. package/dist/docs/content/requests.mdx +180 -6
  100. package/dist/docs/content/responses.mdx +283 -32
  101. package/dist/docs/content/routing.mdx +46 -0
  102. package/dist/docs/content/swagger.mdx +228 -0
  103. package/dist/docs/content/validation.mdx +190 -11
  104. package/dist/docs/reference/context.mdx +11 -0
  105. package/dist/docs/reference/cron.mdx +300 -0
  106. package/dist/docs/reference/decorators.mdx +22 -4
  107. package/dist/docs/reference/error.mdx +88 -0
  108. package/dist/docs/reference/logger.mdx +175 -43
  109. package/dist/docs/reference/middleware.mdx +31 -0
  110. package/dist/docs/reference/router.mdx +22 -0
  111. package/dist/docs/reference/swagger.mdx +143 -0
  112. package/dist/docs/reference/validator.mdx +83 -23
  113. package/dist/error/errors.d.ts.map +1 -1
  114. package/dist/error/errors.js +95 -43
  115. package/dist/error/errors.js.map +1 -1
  116. package/dist/error/index.d.ts +1 -0
  117. package/dist/error/index.d.ts.map +1 -1
  118. package/dist/error/index.js +11 -1
  119. package/dist/error/index.js.map +1 -1
  120. package/dist/error/overlay.d.ts +42 -0
  121. package/dist/error/overlay.d.ts.map +1 -0
  122. package/dist/error/overlay.js +306 -0
  123. package/dist/error/overlay.js.map +1 -0
  124. package/dist/index.d.ts +1 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +22 -1
  127. package/dist/index.js.map +1 -1
  128. package/dist/lib/start-server.js +33 -7
  129. package/dist/lib/start-server.js.map +1 -1
  130. package/dist/logger/index.d.ts +1 -1
  131. package/dist/logger/index.d.ts.map +1 -1
  132. package/dist/logger/index.js +9 -1
  133. package/dist/logger/index.js.map +1 -1
  134. package/dist/middleware/guard.d.ts +2 -2
  135. package/dist/middleware/guard.d.ts.map +1 -1
  136. package/dist/middleware/guard.js.map +1 -1
  137. package/dist/middleware/ip-filter.d.ts +1 -0
  138. package/dist/middleware/ip-filter.d.ts.map +1 -1
  139. package/dist/middleware/ip-filter.js +2 -0
  140. package/dist/middleware/ip-filter.js.map +1 -1
  141. package/dist/middleware/middleware.d.ts +2 -2
  142. package/dist/middleware/middleware.d.ts.map +1 -1
  143. package/dist/middleware/middleware.js +20 -2
  144. package/dist/middleware/middleware.js.map +1 -1
  145. package/dist/middleware/security.d.ts +43 -1
  146. package/dist/middleware/security.d.ts.map +1 -1
  147. package/dist/middleware/security.js +101 -0
  148. package/dist/middleware/security.js.map +1 -1
  149. package/dist/response/index.d.ts +229 -6
  150. package/dist/response/index.d.ts.map +1 -1
  151. package/dist/response/index.js +272 -2
  152. package/dist/response/index.js.map +1 -1
  153. package/dist/router/boundary.d.ts +41 -11
  154. package/dist/router/boundary.d.ts.map +1 -1
  155. package/dist/router/boundary.js +24 -2
  156. package/dist/router/boundary.js.map +1 -1
  157. package/dist/router/controller-registrar.d.ts.map +1 -1
  158. package/dist/router/controller-registrar.js +108 -4
  159. package/dist/router/controller-registrar.js.map +1 -1
  160. package/dist/router/index.d.ts +2 -2
  161. package/dist/router/index.d.ts.map +1 -1
  162. package/dist/router/index.js +2 -1
  163. package/dist/router/index.js.map +1 -1
  164. package/dist/router/route-builder.d.ts +262 -65
  165. package/dist/router/route-builder.d.ts.map +1 -1
  166. package/dist/router/route-builder.js +181 -23
  167. package/dist/router/route-builder.js.map +1 -1
  168. package/dist/router/route-scanner.d.ts +6 -0
  169. package/dist/router/route-scanner.d.ts.map +1 -1
  170. package/dist/router/route-scanner.js +71 -792
  171. package/dist/router/route-scanner.js.map +1 -1
  172. package/dist/router/router.d.ts.map +1 -1
  173. package/dist/router/router.js +62 -17
  174. package/dist/router/router.js.map +1 -1
  175. package/dist/router/scanner/boundary-loader.d.ts +18 -0
  176. package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
  177. package/dist/router/scanner/boundary-loader.js +539 -0
  178. package/dist/router/scanner/boundary-loader.js.map +1 -0
  179. package/dist/router/scanner/cron-mounter.d.ts +15 -0
  180. package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
  181. package/dist/router/scanner/cron-mounter.js +216 -0
  182. package/dist/router/scanner/cron-mounter.js.map +1 -0
  183. package/dist/router/scanner/error-mounter.d.ts +14 -0
  184. package/dist/router/scanner/error-mounter.d.ts.map +1 -0
  185. package/dist/router/scanner/error-mounter.js +200 -0
  186. package/dist/router/scanner/error-mounter.js.map +1 -0
  187. package/dist/router/scanner/fs-scanner.d.ts +25 -0
  188. package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
  189. package/dist/router/scanner/fs-scanner.js +115 -0
  190. package/dist/router/scanner/fs-scanner.js.map +1 -0
  191. package/dist/router/scanner/functional-compiler.d.ts +9 -0
  192. package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
  193. package/dist/router/scanner/functional-compiler.js +233 -0
  194. package/dist/router/scanner/functional-compiler.js.map +1 -0
  195. package/dist/router/scanner/index.d.ts +9 -0
  196. package/dist/router/scanner/index.d.ts.map +1 -0
  197. package/dist/router/scanner/index.js +19 -0
  198. package/dist/router/scanner/index.js.map +1 -0
  199. package/dist/router/types.d.ts +23 -0
  200. package/dist/router/types.d.ts.map +1 -1
  201. package/dist/server/app.d.ts +3 -0
  202. package/dist/server/app.d.ts.map +1 -1
  203. package/dist/server/app.js +13 -0
  204. package/dist/server/app.js.map +1 -1
  205. package/dist/server/bootstrapper.d.ts.map +1 -1
  206. package/dist/server/bootstrapper.js +91 -30
  207. package/dist/server/bootstrapper.js.map +1 -1
  208. package/dist/server/cluster.d.ts.map +1 -1
  209. package/dist/server/cluster.js +13 -2
  210. package/dist/server/cluster.js.map +1 -1
  211. package/dist/server/context.d.ts +8 -0
  212. package/dist/server/context.d.ts.map +1 -1
  213. package/dist/server/context.js +50 -6
  214. package/dist/server/context.js.map +1 -1
  215. package/dist/server/helpers/body-parser.d.ts +18 -0
  216. package/dist/server/helpers/body-parser.d.ts.map +1 -0
  217. package/dist/server/helpers/body-parser.js +246 -0
  218. package/dist/server/helpers/body-parser.js.map +1 -0
  219. package/dist/server/helpers/cookie.d.ts +4 -0
  220. package/dist/server/helpers/cookie.d.ts.map +1 -0
  221. package/dist/server/helpers/cookie.js +61 -0
  222. package/dist/server/helpers/cookie.js.map +1 -0
  223. package/dist/server/helpers/etag.d.ts +3 -0
  224. package/dist/server/helpers/etag.d.ts.map +1 -0
  225. package/dist/server/helpers/etag.js +25 -0
  226. package/dist/server/helpers/etag.js.map +1 -0
  227. package/dist/server/helpers/index.d.ts +6 -0
  228. package/dist/server/helpers/index.d.ts.map +1 -0
  229. package/dist/server/helpers/index.js +21 -0
  230. package/dist/server/helpers/index.js.map +1 -0
  231. package/dist/server/helpers/ip.d.ts +9 -0
  232. package/dist/server/helpers/ip.d.ts.map +1 -0
  233. package/dist/server/helpers/ip.js +62 -0
  234. package/dist/server/helpers/ip.js.map +1 -0
  235. package/dist/server/helpers/stream.d.ts +4 -0
  236. package/dist/server/helpers/stream.d.ts.map +1 -0
  237. package/dist/server/helpers/stream.js +193 -0
  238. package/dist/server/helpers/stream.js.map +1 -0
  239. package/dist/server/lifecycle.d.ts +22 -0
  240. package/dist/server/lifecycle.d.ts.map +1 -0
  241. package/dist/server/lifecycle.js +106 -0
  242. package/dist/server/lifecycle.js.map +1 -0
  243. package/dist/server/request-handler.d.ts +1 -0
  244. package/dist/server/request-handler.d.ts.map +1 -1
  245. package/dist/server/request-handler.js +27 -17
  246. package/dist/server/request-handler.js.map +1 -1
  247. package/dist/server/request.d.ts +1 -139
  248. package/dist/server/request.d.ts.map +1 -1
  249. package/dist/server/request.js +37 -433
  250. package/dist/server/request.js.map +1 -1
  251. package/dist/server/response.d.ts +112 -156
  252. package/dist/server/response.d.ts.map +1 -1
  253. package/dist/server/response.js +129 -279
  254. package/dist/server/response.js.map +1 -1
  255. package/dist/swagger/decorators.d.ts +81 -0
  256. package/dist/swagger/decorators.d.ts.map +1 -0
  257. package/dist/swagger/decorators.js +172 -0
  258. package/dist/swagger/decorators.js.map +1 -0
  259. package/dist/swagger/generator.d.ts +19 -0
  260. package/dist/swagger/generator.d.ts.map +1 -0
  261. package/dist/swagger/generator.js +344 -0
  262. package/dist/swagger/generator.js.map +1 -0
  263. package/dist/swagger/index.d.ts +31 -0
  264. package/dist/swagger/index.d.ts.map +1 -0
  265. package/dist/swagger/index.js +53 -0
  266. package/dist/swagger/index.js.map +1 -0
  267. package/dist/swagger/mounter.d.ts +7 -0
  268. package/dist/swagger/mounter.d.ts.map +1 -0
  269. package/dist/swagger/mounter.js +56 -0
  270. package/dist/swagger/mounter.js.map +1 -0
  271. package/dist/swagger/types.d.ts +190 -0
  272. package/dist/swagger/types.d.ts.map +1 -0
  273. package/dist/swagger/types.js +3 -0
  274. package/dist/swagger/types.js.map +1 -0
  275. package/dist/swagger/ui.d.ts +6 -0
  276. package/dist/swagger/ui.d.ts.map +1 -0
  277. package/dist/swagger/ui.js +118 -0
  278. package/dist/swagger/ui.js.map +1 -0
  279. package/dist/testing/index.d.ts.map +1 -1
  280. package/dist/testing/index.js +6 -1
  281. package/dist/testing/index.js.map +1 -1
  282. package/dist/testing/mocks.d.ts.map +1 -1
  283. package/dist/testing/mocks.js +15 -3
  284. package/dist/testing/mocks.js.map +1 -1
  285. package/dist/utils/logger.d.ts +8 -0
  286. package/dist/utils/logger.d.ts.map +1 -1
  287. package/dist/utils/logger.js +184 -1
  288. package/dist/utils/logger.js.map +1 -1
  289. package/dist/validator/builder.d.ts +223 -0
  290. package/dist/validator/builder.d.ts.map +1 -0
  291. package/dist/validator/builder.js +517 -0
  292. package/dist/validator/builder.js.map +1 -0
  293. package/dist/validator/engine.d.ts +19 -0
  294. package/dist/validator/engine.d.ts.map +1 -0
  295. package/dist/validator/engine.js +568 -0
  296. package/dist/validator/engine.js.map +1 -0
  297. package/dist/validator/error.d.ts +12 -0
  298. package/dist/validator/error.d.ts.map +1 -0
  299. package/dist/validator/error.js +63 -0
  300. package/dist/validator/error.js.map +1 -0
  301. package/dist/validator/pagination.d.ts +40 -0
  302. package/dist/validator/pagination.d.ts.map +1 -0
  303. package/dist/validator/pagination.js +60 -0
  304. package/dist/validator/pagination.js.map +1 -0
  305. package/dist/validator/tex-types.d.ts +2 -1
  306. package/dist/validator/tex-types.d.ts.map +1 -1
  307. package/dist/validator/tex-types.js +2 -1
  308. package/dist/validator/tex-types.js.map +1 -1
  309. package/dist/validator/tex.d.ts +6 -142
  310. package/dist/validator/tex.d.ts.map +1 -1
  311. package/dist/validator/tex.js +14 -733
  312. package/dist/validator/tex.js.map +1 -1
  313. package/dist/validator/types.d.ts +83 -0
  314. package/dist/validator/types.d.ts.map +1 -0
  315. package/dist/validator/types.js +3 -0
  316. package/dist/validator/types.js.map +1 -0
  317. package/package.json +8 -4
  318. package/dist/dev/error-overlay.d.ts +0 -3
  319. package/dist/dev/error-overlay.d.ts.map +0 -1
  320. package/dist/dev/error-overlay.js +0 -118
  321. package/dist/dev/error-overlay.js.map +0 -1
@@ -55,38 +55,48 @@ function Returns(schema) {
55
55
  };
56
56
  }
57
57
  const Redirect = (url, statusCode = 302) => {
58
- return function (target, propertyKey) {
59
- const fn = target[propertyKey];
60
- fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
61
- fn[constants_1.ROUTE_METADATA_PROP].redirect = { url, statusCode };
58
+ return function (target, propertyKey, descriptor) {
59
+ const isStandard = typeof propertyKey === 'object' && propertyKey !== null;
60
+ const fn = isStandard
61
+ ? target
62
+ : (descriptor?.value ?? (propertyKey ? target[propertyKey] : target));
63
+ if (fn) {
64
+ fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
65
+ fn[constants_1.ROUTE_METADATA_PROP].redirect = { url, statusCode };
66
+ }
62
67
  };
63
68
  };
64
69
  exports.Redirect = Redirect;
65
70
  const Permissions = (...permissions) => {
66
- return function (target, propertyKey) {
67
- if (propertyKey) {
68
- const fn = target[propertyKey];
69
- fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
70
- fn[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
71
- }
72
- else {
73
- const proto = typeof target === 'function' ? target.prototype : target;
74
- proto[constants_1.ROUTE_METADATA_PROP] = proto[constants_1.ROUTE_METADATA_PROP] || {};
75
- proto[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
71
+ return function (target, propertyKey, descriptor) {
72
+ const isStandard = typeof propertyKey === 'object' && propertyKey !== null;
73
+ if (propertyKey && !isStandard) {
74
+ const fn = descriptor?.value ?? target[propertyKey];
75
+ if (fn) {
76
+ fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
77
+ fn[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
78
+ return;
79
+ }
76
80
  }
81
+ const proto = typeof target === 'function' ? target.prototype : target;
82
+ proto[constants_1.ROUTE_METADATA_PROP] = proto[constants_1.ROUTE_METADATA_PROP] || {};
83
+ proto[constants_1.ROUTE_METADATA_PROP].permissions = permissions;
77
84
  };
78
85
  };
79
86
  exports.Permissions = Permissions;
80
87
  const Hosts = (...hosts) => {
81
- return function (target, propertyKey) {
82
- if (propertyKey) {
83
- const fn = target[propertyKey];
84
- fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
85
- fn[constants_1.ROUTE_METADATA_PROP].hosts = hosts;
86
- }
87
- else {
88
- target.prototype[constants_1.CONTROLLER_HOST] = hosts;
88
+ return function (target, propertyKey, descriptor) {
89
+ const isStandard = typeof propertyKey === 'object' && propertyKey !== null;
90
+ if (propertyKey && !isStandard) {
91
+ const fn = descriptor?.value ?? target[propertyKey];
92
+ if (fn) {
93
+ fn[constants_1.ROUTE_METADATA_PROP] = fn[constants_1.ROUTE_METADATA_PROP] || {};
94
+ fn[constants_1.ROUTE_METADATA_PROP].hosts = hosts;
95
+ return;
96
+ }
89
97
  }
98
+ const proto = typeof target === 'function' ? target.prototype : target;
99
+ proto[constants_1.CONTROLLER_HOST] = hosts;
90
100
  };
91
101
  };
92
102
  exports.Hosts = Hosts;
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/decorators/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/decorators/response.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,102 @@
1
1
  import type { HttpMethod, RouteSchema } from '../types';
2
2
  export declare function createMethodDecorator(method: HttpMethod): (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
3
3
  /**
4
- * Marks a method as a GET route handler.
4
+ * Marks a controller method as an HTTP GET route handler.
5
5
  *
6
- * Example:
6
+ * @param path Optional route path relative to controller prefix
7
+ * @param schema Optional validation schema
7
8
  *
8
- * @Get('/:id')
9
- * getUser(@Param('id') id: string) { return { id }; }
10
- *
11
- * @param {string} [path] The route path
12
- * @param {RouteSchema} [schema] Optional validation schema
13
- * @public
9
+ * @example
10
+ * ```ts
11
+ * @Controller('/users')
12
+ * export class UserController {
13
+ * @Get('/:id')
14
+ * getUser(@Param('id') id: string) {
15
+ * return { id }
16
+ * }
17
+ * }
18
+ * ```
14
19
  */
15
20
  export declare const Get: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
16
21
  /**
17
- * Marks a method as a POST route handler.
18
- *
19
- * Example:
22
+ * Marks a controller method as an HTTP POST route handler.
20
23
  *
21
- * @Post('/', { body: tex.object({ name: tex.string() }) })
22
- * createUser(@Body() body: any) { return body; }
24
+ * @param path Optional route path relative to controller prefix
25
+ * @param schema Optional validation schema
23
26
  *
24
- * @param {string} [path] The route path
25
- * @param {RouteSchema} [schema] Optional validation schema
26
- * @public
27
+ * @example
28
+ * ```ts
29
+ * @Controller('/users')
30
+ * export class UserController {
31
+ * @Post('/')
32
+ * createUser(@Body() body: CreateUserDto) {
33
+ * return { created: body.name }
34
+ * }
35
+ * }
36
+ * ```
27
37
  */
28
38
  export declare const Post: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
39
+ /**
40
+ * Marks a controller method as an HTTP PUT route handler.
41
+ *
42
+ * @param path Optional route path relative to controller prefix
43
+ * @param schema Optional validation schema
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * @Controller('/users')
48
+ * export class UserController {
49
+ * @Put('/:id')
50
+ * updateUser(@Param('id') id: string, @Body() body: UpdateUserDto) {
51
+ * return { updated: id }
52
+ * }
53
+ * }
54
+ * ```
55
+ */
29
56
  export declare const Put: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
57
+ /**
58
+ * Marks a controller method as an HTTP PATCH route handler.
59
+ *
60
+ * @param path Optional route path relative to controller prefix
61
+ * @param schema Optional validation schema
62
+ */
30
63
  export declare const Patch: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
64
+ /**
65
+ * Marks a controller method as an HTTP DELETE route handler.
66
+ *
67
+ * @param path Optional route path relative to controller prefix
68
+ * @param schema Optional validation schema
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * @Controller('/users')
73
+ * export class UserController {
74
+ * @Delete('/:id')
75
+ * deleteUser(@Param('id') id: string) {
76
+ * return { deleted: true }
77
+ * }
78
+ * }
79
+ * ```
80
+ */
31
81
  export declare const Delete: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
82
+ /**
83
+ * Marks a controller method as an HTTP OPTIONS route handler.
84
+ */
32
85
  export declare const Options: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
86
+ /**
87
+ * Marks a controller method as an HTTP HEAD route handler.
88
+ */
33
89
  export declare const Head: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
90
+ /**
91
+ * Marks a controller method to handle any HTTP method (GET, POST, PUT, DELETE, PATCH, etc.).
92
+ */
34
93
  export declare const All: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
94
+ /**
95
+ * Marks a controller method as an HTTP CONNECT route handler.
96
+ */
35
97
  export declare const Connect: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
98
+ /**
99
+ * Marks a controller method as an HTTP TRACE route handler.
100
+ */
36
101
  export declare const Trace: (path?: string, schema?: RouteSchema<any, any, any, any>) => any;
37
102
  //# sourceMappingURL=routing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKvD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,IACrC,aAAS,EAAE,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAAG,CAoC3E;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,GAAG,2BAlDuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAkD1B,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,2BAhEsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAgExB,CAAA;AACjD,eAAO,MAAM,GAAG,2BAjEuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAiE1B,CAAA;AAC/C,eAAO,MAAM,KAAK,2BAlEqB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAkEtB,CAAA;AACnD,eAAO,MAAM,MAAM,2BAnEoB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAmEpB,CAAA;AACrD,eAAO,MAAM,OAAO,2BApEmB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAoElB,CAAA;AACvD,eAAO,MAAM,IAAI,2BArEsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAqExB,CAAA;AACjD,eAAO,MAAM,GAAG,2BAtEuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAsE1B,CAAA;AAC/C,eAAO,MAAM,OAAO,2BAvEmB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAuElB,CAAA;AACvD,eAAO,MAAM,KAAK,2BAxEqB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAwEtB,CAAA"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKvD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,IACrC,aAAS,EAAE,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAAG,CAoC3E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,2BAvDuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAuD1B,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,IAAI,2BA1EsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA0ExB,CAAA;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,2BA7FuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA6F1B,CAAA;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,KAAK,2BArGqB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAqGtB,CAAA;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,MAAM,2BAxHoB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAwHpB,CAAA;AAErD;;GAEG;AACH,eAAO,MAAM,OAAO,2BA7HmB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA6HlB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,IAAI,2BAlIsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAkIxB,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,GAAG,2BAvIuB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAuI1B,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,OAAO,2BA5ImB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GA4IlB,CAAA;AAEvD;;GAEG;AACH,eAAO,MAAM,KAAK,2BAjJqB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAG,GAiJtB,CAAA"}
@@ -36,37 +36,102 @@ function createMethodDecorator(method) {
36
36
  };
37
37
  }
38
38
  /**
39
- * Marks a method as a GET route handler.
39
+ * Marks a controller method as an HTTP GET route handler.
40
40
  *
41
- * Example:
41
+ * @param path Optional route path relative to controller prefix
42
+ * @param schema Optional validation schema
42
43
  *
43
- * @Get('/:id')
44
- * getUser(@Param('id') id: string) { return { id }; }
45
- *
46
- * @param {string} [path] The route path
47
- * @param {RouteSchema} [schema] Optional validation schema
48
- * @public
44
+ * @example
45
+ * ```ts
46
+ * @Controller('/users')
47
+ * export class UserController {
48
+ * @Get('/:id')
49
+ * getUser(@Param('id') id: string) {
50
+ * return { id }
51
+ * }
52
+ * }
53
+ * ```
49
54
  */
50
55
  exports.Get = createMethodDecorator('GET');
51
56
  /**
52
- * Marks a method as a POST route handler.
53
- *
54
- * Example:
57
+ * Marks a controller method as an HTTP POST route handler.
55
58
  *
56
- * @Post('/', { body: tex.object({ name: tex.string() }) })
57
- * createUser(@Body() body: any) { return body; }
59
+ * @param path Optional route path relative to controller prefix
60
+ * @param schema Optional validation schema
58
61
  *
59
- * @param {string} [path] The route path
60
- * @param {RouteSchema} [schema] Optional validation schema
61
- * @public
62
+ * @example
63
+ * ```ts
64
+ * @Controller('/users')
65
+ * export class UserController {
66
+ * @Post('/')
67
+ * createUser(@Body() body: CreateUserDto) {
68
+ * return { created: body.name }
69
+ * }
70
+ * }
71
+ * ```
62
72
  */
63
73
  exports.Post = createMethodDecorator('POST');
74
+ /**
75
+ * Marks a controller method as an HTTP PUT route handler.
76
+ *
77
+ * @param path Optional route path relative to controller prefix
78
+ * @param schema Optional validation schema
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * @Controller('/users')
83
+ * export class UserController {
84
+ * @Put('/:id')
85
+ * updateUser(@Param('id') id: string, @Body() body: UpdateUserDto) {
86
+ * return { updated: id }
87
+ * }
88
+ * }
89
+ * ```
90
+ */
64
91
  exports.Put = createMethodDecorator('PUT');
92
+ /**
93
+ * Marks a controller method as an HTTP PATCH route handler.
94
+ *
95
+ * @param path Optional route path relative to controller prefix
96
+ * @param schema Optional validation schema
97
+ */
65
98
  exports.Patch = createMethodDecorator('PATCH');
99
+ /**
100
+ * Marks a controller method as an HTTP DELETE route handler.
101
+ *
102
+ * @param path Optional route path relative to controller prefix
103
+ * @param schema Optional validation schema
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * @Controller('/users')
108
+ * export class UserController {
109
+ * @Delete('/:id')
110
+ * deleteUser(@Param('id') id: string) {
111
+ * return { deleted: true }
112
+ * }
113
+ * }
114
+ * ```
115
+ */
66
116
  exports.Delete = createMethodDecorator('DELETE');
117
+ /**
118
+ * Marks a controller method as an HTTP OPTIONS route handler.
119
+ */
67
120
  exports.Options = createMethodDecorator('OPTIONS');
121
+ /**
122
+ * Marks a controller method as an HTTP HEAD route handler.
123
+ */
68
124
  exports.Head = createMethodDecorator('HEAD');
125
+ /**
126
+ * Marks a controller method to handle any HTTP method (GET, POST, PUT, DELETE, PATCH, etc.).
127
+ */
69
128
  exports.All = createMethodDecorator('ALL');
129
+ /**
130
+ * Marks a controller method as an HTTP CONNECT route handler.
131
+ */
70
132
  exports.Connect = createMethodDecorator('CONNECT');
133
+ /**
134
+ * Marks a controller method as an HTTP TRACE route handler.
135
+ */
71
136
  exports.Trace = createMethodDecorator('TRACE');
72
137
  //# sourceMappingURL=routing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":";;;AAKA,sDAqCC;AAzCD,2CAAwD;AACxD,8CAAgD;AAChD,sCAAkC;AAElC,SAAgB,qBAAqB,CAAC,MAAkB;IACtD,OAAO,UAAU,IAAI,GAAG,EAAE,EAAE,MAAwC;QAClE,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CACT,cAAc,IAAI,+DAA+D,CAClF,CAAA;QACH,CAAC;QAED,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;YAErC,IACE,OAAO,oBAAoB,KAAK,QAAQ;gBACxC,oBAAoB,KAAK,IAAI;gBAC7B,MAAM,IAAI,oBAAoB,EAC9B,CAAC;gBACD,mCAAmC;gBACnC,yBAAc,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAU,EAAE;oBACrC,MAAM;oBACN,IAAI;oBACJ,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;gBACtE,MAAM,IAAI,GAAG,oBAAoB,IAAI,UAAU,EAAE,IAAI,CAAA;gBACrD,yBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,0BAAc,EAAE;oBACzC,MAAM;oBACN,IAAI;oBACJ,MAAM;oBACN,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;;;;;;;;;;GAWG;AACU,QAAA,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACpC,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAClC,QAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;AACtC,QAAA,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;AACxC,QAAA,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAC1C,QAAA,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACpC,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAClC,QAAA,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAC1C,QAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/decorators/routing.ts"],"names":[],"mappings":";;;AAKA,sDAqCC;AAzCD,2CAAwD;AACxD,8CAAgD;AAChD,sCAAkC;AAElC,SAAgB,qBAAqB,CAAC,MAAkB;IACtD,OAAO,UAAU,IAAI,GAAG,EAAE,EAAE,MAAwC;QAClE,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACrC,eAAM,CAAC,IAAI,CACT,cAAc,IAAI,+DAA+D,CAClF,CAAA;QACH,CAAC;QAED,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,UAAqC;YAErC,IACE,OAAO,oBAAoB,KAAK,QAAQ;gBACxC,oBAAoB,KAAK,IAAI;gBAC7B,MAAM,IAAI,oBAAoB,EAC9B,CAAC;gBACD,mCAAmC;gBACnC,yBAAc,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAU,EAAE;oBACrC,MAAM;oBACN,IAAI;oBACJ,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,yCAAyC;gBACzC,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;gBACtE,MAAM,IAAI,GAAG,oBAAoB,IAAI,UAAU,EAAE,IAAI,CAAA;gBACrD,yBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,0BAAc,EAAE;oBACzC,MAAM;oBACN,IAAI;oBACJ,MAAM;oBACN,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAA;IACH,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;;;;GAKG;AACU,QAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;AAEnD;;;;;;;;;;;;;;;;GAgBG;AACU,QAAA,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;AAErD;;GAEG;AACU,QAAA,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAEvD;;GAEG;AACU,QAAA,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAEjD;;GAEG;AACU,QAAA,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;AAE/C;;GAEG;AACU,QAAA,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAEvD;;GAEG;AACU,QAAA,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAC/B,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,CAAC,CAAA;CACZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY;IACtD,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9D,eAAO,MAAM,eAAe,eAAqC,CAAA;AACjE,eAAO,MAAM,iBAAiB,eAAuC,CAAA;AACrE,eAAO,MAAM,cAAc,eAA6B,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,cAAc,CAAgC;IAEtD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1E,UAAU,IAAI,IAAI;IAIlB,gBAAgB,CAAC,CAAC,EAChB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACtC,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;IAmDJ,OAAO,CAAC,CAAC,EACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;CA6FL"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAC/B,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;CAC9C;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,CAAC,CAAA;CACZ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,YAAY;IACtD,UAAU,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,CAAE,SAAQ,YAAY;IACpD,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAE9D,eAAO,MAAM,eAAe,eAAqC,CAAA;AACjE,eAAO,MAAM,iBAAiB,eAAuC,CAAA;AACrE,eAAO,MAAM,cAAc,eAA6B,CAAA;AAExD,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,cAAc,CAAgC;IAEtD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAK1E,UAAU,IAAI,IAAI;IAIlB,gBAAgB,CAAC,CAAC,EAChB,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EACtC,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;IAmDJ,OAAO,CAAC,CAAC,EACP,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,GACrC,CAAC;CAkGL"}
@@ -96,7 +96,12 @@ class Container {
96
96
  }
97
97
  let resolvedValue;
98
98
  let scope = 'singleton';
99
- if (provider && typeof provider === 'object') {
99
+ if (typeof provider === 'function') {
100
+ const classScope = provider.prototype?.[exports.SCOPE_METADATA] || 'singleton';
101
+ scope = classScope;
102
+ resolvedValue = this.instantiateClass(provider, requestCache);
103
+ }
104
+ else if (provider && typeof provider === 'object') {
100
105
  if ('scope' in provider && provider.scope) {
101
106
  scope = provider.scope;
102
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"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"}
@@ -132,7 +132,7 @@ $ npx exisjs routes [options]
132
132
 
133
133
  ### `exisjs init`
134
134
 
135
- Initializes a new ExisJS project in the current directory using `@exisjs/create`.
135
+ Initializes a new ExisJS project in the current directory using `create-exisjs`.
136
136
 
137
137
  ```bash
138
138
  $ npx exisjs init
@@ -101,13 +101,29 @@ In most cases, you don't need to manually access the entire request object. Inst
101
101
  <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>Ip()</td>
102
102
  <td className="px-4 py-3 text-muted-foreground">The client's IP address</td>
103
103
  </tr>
104
+ <tr className="bg-background hover:bg-muted/30 transition-colors">
105
+ <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>Cookies(name?) / <span className="text-primary">@</span>Cookie(name?)</td>
106
+ <td className="px-4 py-3 text-muted-foreground">Incoming parsed cookies or specific cookie value</td>
107
+ </tr>
108
+ <tr className="bg-background hover:bg-muted/30 transition-colors">
109
+ <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>State(key?)</td>
110
+ <td className="px-4 py-3 text-muted-foreground">Request state from execution context or middleware</td>
111
+ </tr>
112
+ <tr className="bg-background hover:bg-muted/30 transition-colors">
113
+ <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>AppCtx()</td>
114
+ <td className="px-4 py-3 text-muted-foreground">The root ExisJS Application instance</td>
115
+ </tr>
116
+ <tr className="bg-background hover:bg-muted/30 transition-colors">
117
+ <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>Fields(name?)</td>
118
+ <td className="px-4 py-3 text-muted-foreground">Non-file multipart form fields</td>
119
+ </tr>
104
120
  <tr className="bg-background hover:bg-muted/30 transition-colors">
105
121
  <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>UploadedFile()</td>
106
122
  <td className="px-4 py-3 text-muted-foreground">A single uploaded file (multipart/form-data)</td>
107
123
  </tr>
108
124
  <tr className="bg-background hover:bg-muted/30 transition-colors">
109
125
  <td className="px-4 py-3 font-mono text-xs"><span className="text-primary">@</span>UploadedFiles()</td>
110
- <td className="px-4 py-3 text-muted-foreground">Array of uploaded files</td>
126
+ <td className="px-4 py-3 text-muted-foreground">Array or dictionary of uploaded files</td>
111
127
  </tr>
112
128
  </tbody>
113
129
  </table>
@@ -115,22 +131,123 @@ In most cases, you don't need to manually access the entire request object. Inst
115
131
 
116
132
  ## Payloads & Validation
117
133
 
118
- For POST and PUT endpoints, you need to read the incoming JSON payload. Use the `@Body()` decorator to inject it.
134
+ For POST, PUT, and PATCH endpoints, you can validate and read incoming payloads using either method-level schemas or parameter-level `@Body(Schema)` decorators:
119
135
 
120
136
  ```typescript filename="src/http/users/route.ts"
121
- import { Controller, Post, Body } from 'exisjs/decorators'
137
+ import { Controller, Post, Body, HttpCode } from 'exisjs/decorators'
138
+ import { tex } from 'exisjs/validator'
139
+ import type { ResolveSchema } from 'exisjs/validator'
140
+
141
+ export const CreateUserSchema = tex.object({
142
+ name: tex.string({ min: 2 }),
143
+ email: tex.email(),
144
+ role: tex.enum(['admin', 'user'], { default: 'user' }),
145
+ })
122
146
 
123
- export class CreateUserDto {
124
- name: string;
125
- email: string;
126
- role: string;
147
+ export type CreateUserDto = ResolveSchema<typeof CreateUserSchema>
148
+
149
+ @Controller('users')
150
+ export default class UsersController {
151
+ // 1. Parameter-level validation schema
152
+ @Post('/')
153
+ @HttpCode(201)
154
+ async create(@Body(CreateUserSchema) dto: CreateUserDto) {
155
+ return { id: 3, ...dto }
156
+ }
157
+
158
+ // 2. Or method-level schema object
159
+ @Post('/raw', { body: CreateUserSchema })
160
+ async createWithMethodSchema(@Body() dto: CreateUserDto) {
161
+ return { id: 4, ...dto }
162
+ }
127
163
  }
164
+ ```
165
+
166
+ ## Dependency Injection in Controllers
167
+
168
+ Controllers can inject services using either the ergonomic `inject()` helper or standard constructor injection:
169
+
170
+ ```typescript filename="src/http/users/route.ts"
171
+ import { Controller, Get, Param } from 'exisjs/decorators'
172
+ import { inject, Inject, Optional } from 'exisjs/di'
173
+ import { UsersService } from './service'
128
174
 
129
175
  @Controller('users')
130
176
  export default class UsersController {
131
- @Post()
132
- async create(@Body() createUserDto: CreateUserDto) {
133
- return { id: 3, ...createUserDto }
177
+ // Approach A: Property-level injection (Recommended)
178
+ private usersService = inject(UsersService)
179
+
180
+ // Approach B: Constructor injection
181
+ constructor(
182
+ @Inject('DATABASE_URL') private dbUrl: string,
183
+ @Optional() @Inject('METRICS') private metrics?: any
184
+ ) {}
185
+
186
+ @Get('/:id')
187
+ async getUser(@Param('id') id: string) {
188
+ return this.usersService.findById(id)
189
+ }
190
+ }
191
+ ```
192
+
193
+ ## File Uploads
194
+
195
+ You can process file uploads in OOP controllers using `@UseUpload` or `@Upload` decorators alongside `@UploadedFile()` and `@UploadedFiles()`:
196
+
197
+ ```typescript filename="src/http/users/route.ts"
198
+ import { Controller, Post, UseUpload, UploadedFile, Body } from 'exisjs/decorators'
199
+ import type { UploadedFile as IUploadedFile } from 'exisjs/router'
200
+
201
+ @Controller('users')
202
+ export default class UsersController {
203
+ @Post('/avatar')
204
+ @UseUpload({
205
+ field: 'avatar',
206
+ maxBytes: 5 * 1024 * 1024,
207
+ mimeTypes: ['image/jpeg', 'image/png', 'image/webp'],
208
+ })
209
+ async uploadAvatar(
210
+ @UploadedFile() file: IUploadedFile,
211
+ @Body() body: { caption?: string }
212
+ ) {
213
+ return {
214
+ success: true,
215
+ filename: file.filename,
216
+ size: file.size,
217
+ caption: body.caption,
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ ## Streaming & Downloads
224
+
225
+ OOP controllers support all streaming features including Node.js `Readable` streams, Web `ReadableStream`, async generators, and file downloads:
226
+
227
+ ```typescript filename="src/http/files/route.ts"
228
+ import { Controller, Get, Res } from 'exisjs/decorators'
229
+ import type { Response } from 'exisjs/router'
230
+ import fs from 'node:fs'
231
+
232
+ @Controller('files')
233
+ export default class FilesController {
234
+ // 1. Force file download
235
+ @Get('/download')
236
+ download(@Res() res: Response) {
237
+ res.download('./reports/annual.pdf', 'Annual-Report.pdf')
238
+ }
239
+
240
+ // 2. Stream Node.js Readable or auto-pipe return value
241
+ @Get('/stream')
242
+ streamCsv() {
243
+ return fs.createReadStream('./data/export.csv')
244
+ }
245
+
246
+ // 3. Server-Sent Events (SSE)
247
+ @Get('/events')
248
+ events(@Res() res: Response) {
249
+ const sse = res.sse()
250
+ sse.send({ event: 'ping', data: { time: Date.now() } })
134
251
  }
135
252
  }
136
253
  ```