adorn-api 1.0.0 → 1.0.2

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 (529) hide show
  1. package/README.md +54 -249
  2. package/dist/adapters/express/createApp.d.ts +158 -0
  3. package/dist/adapters/express/createApp.d.ts.map +1 -0
  4. package/dist/adapters/express/createApp.js +141 -0
  5. package/dist/adapters/express/createApp.js.map +1 -0
  6. package/dist/adapters/express/index.d.ts +7 -0
  7. package/dist/adapters/express/index.d.ts.map +1 -0
  8. package/dist/adapters/express/index.js +7 -0
  9. package/dist/adapters/express/index.js.map +1 -0
  10. package/dist/adapters/express/middleware/errorHandler.d.ts +194 -0
  11. package/dist/adapters/express/middleware/errorHandler.d.ts.map +1 -0
  12. package/dist/adapters/express/middleware/errorHandler.js +167 -0
  13. package/dist/adapters/express/middleware/errorHandler.js.map +1 -0
  14. package/dist/adapters/express/middleware/requestContext.d.ts +2 -0
  15. package/dist/adapters/express/middleware/requestContext.d.ts.map +1 -0
  16. package/dist/adapters/express/middleware/requestContext.js +3 -0
  17. package/dist/adapters/express/middleware/requestContext.js.map +1 -0
  18. package/dist/adapters/express/router.d.ts +10 -0
  19. package/dist/adapters/express/router.d.ts.map +1 -0
  20. package/dist/adapters/express/router.js +105 -0
  21. package/dist/adapters/express/router.js.map +1 -0
  22. package/dist/adapters/express/swagger/index.d.ts +2 -0
  23. package/dist/adapters/express/swagger/index.d.ts.map +1 -0
  24. package/dist/adapters/express/swagger/index.js +2 -0
  25. package/dist/adapters/express/swagger/index.js.map +1 -0
  26. package/dist/adapters/express/swagger/serve.d.ts +12 -0
  27. package/dist/adapters/express/swagger/serve.d.ts.map +1 -0
  28. package/dist/adapters/express/swagger/serve.js +72 -0
  29. package/dist/adapters/express/swagger/serve.js.map +1 -0
  30. package/dist/adapters/express/transport/request.d.ts +4 -0
  31. package/dist/adapters/express/transport/request.d.ts.map +1 -0
  32. package/dist/adapters/express/transport/request.js +12 -0
  33. package/dist/adapters/express/transport/request.js.map +1 -0
  34. package/dist/adapters/express/transport/response.d.ts +5 -0
  35. package/dist/adapters/express/transport/response.d.ts.map +1 -0
  36. package/dist/adapters/express/transport/response.js +36 -0
  37. package/dist/adapters/express/transport/response.js.map +1 -0
  38. package/dist/cli/commands/dev.d.ts +2 -0
  39. package/dist/cli/commands/dev.d.ts.map +1 -0
  40. package/dist/cli/commands/dev.js +3 -0
  41. package/dist/cli/commands/dev.js.map +1 -0
  42. package/dist/cli/commands/gen.d.ts +2 -0
  43. package/dist/cli/commands/gen.d.ts.map +1 -0
  44. package/dist/cli/commands/gen.js +3 -0
  45. package/dist/cli/commands/gen.js.map +1 -0
  46. package/dist/cli/main.d.ts +2 -0
  47. package/dist/cli/main.d.ts.map +1 -0
  48. package/dist/cli/main.js +3 -0
  49. package/dist/cli/main.js.map +1 -0
  50. package/dist/cli.d.ts +2 -0
  51. package/dist/cli.d.ts.map +1 -0
  52. package/dist/cli.js +3 -0
  53. package/dist/cli.js.map +1 -0
  54. package/dist/compiler/config/defaults.d.ts +2 -0
  55. package/dist/compiler/config/defaults.d.ts.map +1 -0
  56. package/dist/compiler/config/defaults.js +3 -0
  57. package/dist/compiler/config/defaults.js.map +1 -0
  58. package/dist/compiler/config/loadConfig.d.ts +2 -0
  59. package/dist/compiler/config/loadConfig.d.ts.map +1 -0
  60. package/dist/compiler/config/loadConfig.js +3 -0
  61. package/dist/compiler/config/loadConfig.js.map +1 -0
  62. package/dist/compiler/diagnostics/errors.d.ts +2 -0
  63. package/dist/compiler/diagnostics/errors.d.ts.map +1 -0
  64. package/dist/compiler/diagnostics/errors.js +3 -0
  65. package/dist/compiler/diagnostics/errors.js.map +1 -0
  66. package/dist/compiler/emit/openapi.d.ts +2 -0
  67. package/dist/compiler/emit/openapi.d.ts.map +1 -0
  68. package/dist/compiler/emit/openapi.js +3 -0
  69. package/dist/compiler/emit/openapi.js.map +1 -0
  70. package/dist/compiler/emit/routes.d.ts +2 -0
  71. package/dist/compiler/emit/routes.d.ts.map +1 -0
  72. package/dist/compiler/emit/routes.js +3 -0
  73. package/dist/compiler/emit/routes.js.map +1 -0
  74. package/dist/compiler/program/loadTsProgram.d.ts +2 -0
  75. package/dist/compiler/program/loadTsProgram.d.ts.map +1 -0
  76. package/dist/compiler/program/loadTsProgram.js +3 -0
  77. package/dist/compiler/program/loadTsProgram.js.map +1 -0
  78. package/dist/compiler/scan/actions.d.ts +2 -0
  79. package/dist/compiler/scan/actions.d.ts.map +1 -0
  80. package/dist/compiler/scan/actions.js +3 -0
  81. package/dist/compiler/scan/actions.js.map +1 -0
  82. package/dist/compiler/scan/controllers.d.ts +2 -0
  83. package/dist/compiler/scan/controllers.d.ts.map +1 -0
  84. package/dist/compiler/scan/controllers.js +3 -0
  85. package/dist/compiler/scan/controllers.js.map +1 -0
  86. package/dist/compiler/scan/types.d.ts +2 -0
  87. package/dist/compiler/scan/types.d.ts.map +1 -0
  88. package/dist/compiler/scan/types.js +3 -0
  89. package/dist/compiler/scan/types.js.map +1 -0
  90. package/dist/contracts/context.d.ts +10 -0
  91. package/dist/contracts/context.d.ts.map +1 -0
  92. package/dist/contracts/context.js +2 -0
  93. package/dist/contracts/context.js.map +1 -0
  94. package/dist/contracts/errors.d.ts +22 -0
  95. package/dist/contracts/errors.d.ts.map +1 -0
  96. package/dist/contracts/errors.js +2 -0
  97. package/dist/contracts/errors.js.map +1 -0
  98. package/dist/contracts/http.d.ts +2 -0
  99. package/dist/contracts/http.d.ts.map +1 -0
  100. package/dist/contracts/http.js +3 -0
  101. package/dist/contracts/http.js.map +1 -0
  102. package/dist/contracts/middleware.d.ts +2 -0
  103. package/dist/contracts/middleware.d.ts.map +1 -0
  104. package/dist/contracts/middleware.js +3 -0
  105. package/dist/contracts/middleware.js.map +1 -0
  106. package/dist/contracts/openapi-v3.d.ts +538 -0
  107. package/dist/contracts/openapi-v3.d.ts.map +1 -0
  108. package/dist/contracts/openapi-v3.js +2 -0
  109. package/dist/contracts/openapi-v3.js.map +1 -0
  110. package/dist/contracts/openapi.d.ts +2 -0
  111. package/dist/contracts/openapi.d.ts.map +1 -0
  112. package/dist/contracts/openapi.js +2 -0
  113. package/dist/contracts/openapi.js.map +1 -0
  114. package/dist/contracts/reply.d.ts +119 -0
  115. package/dist/contracts/reply.d.ts.map +1 -0
  116. package/dist/contracts/reply.js +43 -0
  117. package/dist/contracts/reply.js.map +1 -0
  118. package/dist/contracts/response-types.d.ts +40 -0
  119. package/dist/contracts/response-types.d.ts.map +1 -0
  120. package/dist/contracts/response-types.js +2 -0
  121. package/dist/contracts/response-types.js.map +1 -0
  122. package/dist/contracts/responses.d.ts +98 -0
  123. package/dist/contracts/responses.d.ts.map +1 -0
  124. package/dist/contracts/responses.js +2 -0
  125. package/dist/contracts/responses.js.map +1 -0
  126. package/dist/contracts/route-options.d.ts +155 -0
  127. package/dist/contracts/route-options.d.ts.map +1 -0
  128. package/dist/contracts/route-options.js +2 -0
  129. package/dist/contracts/route-options.js.map +1 -0
  130. package/dist/contracts/route-typing.d.ts +25 -0
  131. package/dist/contracts/route-typing.d.ts.map +1 -0
  132. package/dist/contracts/route-typing.js +2 -0
  133. package/dist/contracts/route-typing.js.map +1 -0
  134. package/dist/contracts/validator.d.ts +146 -0
  135. package/dist/contracts/validator.d.ts.map +1 -0
  136. package/dist/contracts/validator.js +2 -0
  137. package/dist/contracts/validator.js.map +1 -0
  138. package/dist/core/binding/binder.d.ts +74 -0
  139. package/dist/core/binding/binder.d.ts.map +1 -0
  140. package/dist/core/binding/binder.js +161 -0
  141. package/dist/core/binding/binder.js.map +1 -0
  142. package/dist/core/binding/coerce/arrays.d.ts +7 -0
  143. package/dist/core/binding/coerce/arrays.d.ts.map +1 -0
  144. package/dist/core/binding/coerce/arrays.js +28 -0
  145. package/dist/core/binding/coerce/arrays.js.map +1 -0
  146. package/dist/core/binding/coerce/csv.d.ts +2 -0
  147. package/dist/core/binding/coerce/csv.d.ts.map +1 -0
  148. package/dist/core/binding/coerce/csv.js +7 -0
  149. package/dist/core/binding/coerce/csv.js.map +1 -0
  150. package/dist/core/binding/coerce/objects.d.ts +2 -0
  151. package/dist/core/binding/coerce/objects.d.ts.map +1 -0
  152. package/dist/core/binding/coerce/objects.js +3 -0
  153. package/dist/core/binding/coerce/objects.js.map +1 -0
  154. package/dist/core/binding/coerce/primitives.d.ts +70 -0
  155. package/dist/core/binding/coerce/primitives.d.ts.map +1 -0
  156. package/dist/core/binding/coerce/primitives.js +88 -0
  157. package/dist/core/binding/coerce/primitives.js.map +1 -0
  158. package/dist/core/binding/index.d.ts +2 -0
  159. package/dist/core/binding/index.d.ts.map +1 -0
  160. package/dist/core/binding/index.js +2 -0
  161. package/dist/core/binding/index.js.map +1 -0
  162. package/dist/core/binding/rules/inferFromHttpMethod.d.ts +6 -0
  163. package/dist/core/binding/rules/inferFromHttpMethod.d.ts.map +1 -0
  164. package/dist/core/binding/rules/inferFromHttpMethod.js +11 -0
  165. package/dist/core/binding/rules/inferFromHttpMethod.js.map +1 -0
  166. package/dist/core/binding/rules/inferFromPath.d.ts +2 -0
  167. package/dist/core/binding/rules/inferFromPath.d.ts.map +1 -0
  168. package/dist/core/binding/rules/inferFromPath.js +9 -0
  169. package/dist/core/binding/rules/inferFromPath.js.map +1 -0
  170. package/dist/core/binding/rules/wrappers.d.ts +2 -0
  171. package/dist/core/binding/rules/wrappers.d.ts.map +1 -0
  172. package/dist/core/binding/rules/wrappers.js +3 -0
  173. package/dist/core/binding/rules/wrappers.js.map +1 -0
  174. package/dist/core/errors/http-error.d.ts +63 -0
  175. package/dist/core/errors/http-error.d.ts.map +1 -0
  176. package/dist/core/errors/http-error.js +71 -0
  177. package/dist/core/errors/http-error.js.map +1 -0
  178. package/dist/core/errors/index.d.ts +4 -0
  179. package/dist/core/errors/index.d.ts.map +1 -0
  180. package/dist/core/errors/index.js +4 -0
  181. package/dist/core/errors/index.js.map +1 -0
  182. package/dist/core/errors/problem.d.ts +3 -0
  183. package/dist/core/errors/problem.d.ts.map +1 -0
  184. package/dist/core/errors/problem.js +33 -0
  185. package/dist/core/errors/problem.js.map +1 -0
  186. package/dist/core/errors/validation-error.d.ts +73 -0
  187. package/dist/core/errors/validation-error.d.ts.map +1 -0
  188. package/dist/core/errors/validation-error.js +82 -0
  189. package/dist/core/errors/validation-error.js.map +1 -0
  190. package/dist/core/openapi/buildOpenApi.d.ts +79 -0
  191. package/dist/core/openapi/buildOpenApi.d.ts.map +1 -0
  192. package/dist/core/openapi/buildOpenApi.js +196 -0
  193. package/dist/core/openapi/buildOpenApi.js.map +1 -0
  194. package/dist/core/openapi/index.d.ts +2 -0
  195. package/dist/core/openapi/index.d.ts.map +1 -0
  196. package/dist/core/openapi/index.js +2 -0
  197. package/dist/core/openapi/index.js.map +1 -0
  198. package/dist/core/openapi/schema/formats.d.ts +2 -0
  199. package/dist/core/openapi/schema/formats.d.ts.map +1 -0
  200. package/dist/core/openapi/schema/formats.js +3 -0
  201. package/dist/core/openapi/schema/formats.js.map +1 -0
  202. package/dist/core/openapi/schema/registry.d.ts +9 -0
  203. package/dist/core/openapi/schema/registry.d.ts.map +1 -0
  204. package/dist/core/openapi/schema/registry.js +21 -0
  205. package/dist/core/openapi/schema/registry.js.map +1 -0
  206. package/dist/core/openapi/schema/schemaModel.d.ts +2 -0
  207. package/dist/core/openapi/schema/schemaModel.d.ts.map +1 -0
  208. package/dist/core/openapi/schema/schemaModel.js +3 -0
  209. package/dist/core/openapi/schema/schemaModel.js.map +1 -0
  210. package/dist/core/openapi/schema/schemaRegistry.d.ts +2 -0
  211. package/dist/core/openapi/schema/schemaRegistry.d.ts.map +1 -0
  212. package/dist/core/openapi/schema/schemaRegistry.js +3 -0
  213. package/dist/core/openapi/schema/schemaRegistry.js.map +1 -0
  214. package/dist/core/openapi/schema/toOpenApi.d.ts +4 -0
  215. package/dist/core/openapi/schema/toOpenApi.d.ts.map +1 -0
  216. package/dist/core/openapi/schema/toOpenApi.js +82 -0
  217. package/dist/core/openapi/schema/toOpenApi.js.map +1 -0
  218. package/dist/core/pipeline/compose.d.ts +2 -0
  219. package/dist/core/pipeline/compose.d.ts.map +1 -0
  220. package/dist/core/pipeline/compose.js +3 -0
  221. package/dist/core/pipeline/compose.js.map +1 -0
  222. package/dist/core/pipeline/errorMap.d.ts +2 -0
  223. package/dist/core/pipeline/errorMap.d.ts.map +1 -0
  224. package/dist/core/pipeline/errorMap.js +3 -0
  225. package/dist/core/pipeline/errorMap.js.map +1 -0
  226. package/dist/core/pipeline/invoke.d.ts +2 -0
  227. package/dist/core/pipeline/invoke.d.ts.map +1 -0
  228. package/dist/core/pipeline/invoke.js +3 -0
  229. package/dist/core/pipeline/invoke.js.map +1 -0
  230. package/dist/core/pipeline/result.d.ts +2 -0
  231. package/dist/core/pipeline/result.d.ts.map +1 -0
  232. package/dist/core/pipeline/result.js +3 -0
  233. package/dist/core/pipeline/result.js.map +1 -0
  234. package/dist/core/registry/buildRegistry.d.ts +3 -0
  235. package/dist/core/registry/buildRegistry.d.ts.map +1 -0
  236. package/dist/core/registry/buildRegistry.js +105 -0
  237. package/dist/core/registry/buildRegistry.js.map +1 -0
  238. package/dist/core/registry/conflicts.d.ts +6 -0
  239. package/dist/core/registry/conflicts.d.ts.map +1 -0
  240. package/dist/core/registry/conflicts.js +21 -0
  241. package/dist/core/registry/conflicts.js.map +1 -0
  242. package/dist/core/registry/index.d.ts +5 -0
  243. package/dist/core/registry/index.d.ts.map +1 -0
  244. package/dist/core/registry/index.js +5 -0
  245. package/dist/core/registry/index.js.map +1 -0
  246. package/dist/core/registry/normalize.d.ts +3 -0
  247. package/dist/core/registry/normalize.d.ts.map +1 -0
  248. package/dist/core/registry/normalize.js +24 -0
  249. package/dist/core/registry/normalize.js.map +1 -0
  250. package/dist/core/registry/types.d.ts +225 -0
  251. package/dist/core/registry/types.d.ts.map +1 -0
  252. package/dist/core/registry/types.js +2 -0
  253. package/dist/core/registry/types.js.map +1 -0
  254. package/dist/core/reply/index.d.ts +3 -0
  255. package/dist/core/reply/index.d.ts.map +1 -0
  256. package/dist/core/reply/index.js +3 -0
  257. package/dist/core/reply/index.js.map +1 -0
  258. package/dist/core/reply/reply.d.ts +102 -0
  259. package/dist/core/reply/reply.d.ts.map +1 -0
  260. package/dist/core/reply/reply.js +105 -0
  261. package/dist/core/reply/reply.js.map +1 -0
  262. package/dist/core/reply/typed.d.ts +161 -0
  263. package/dist/core/reply/typed.d.ts.map +1 -0
  264. package/dist/core/reply/typed.js +154 -0
  265. package/dist/core/reply/typed.js.map +1 -0
  266. package/dist/core/responses/helpers.d.ts +10 -0
  267. package/dist/core/responses/helpers.d.ts.map +1 -0
  268. package/dist/core/responses/helpers.js +8 -0
  269. package/dist/core/responses/helpers.js.map +1 -0
  270. package/dist/core/responses/index.d.ts +4 -0
  271. package/dist/core/responses/index.d.ts.map +1 -0
  272. package/dist/core/responses/index.js +4 -0
  273. package/dist/core/responses/index.js.map +1 -0
  274. package/dist/core/responses/normalize.d.ts +3 -0
  275. package/dist/core/responses/normalize.d.ts.map +1 -0
  276. package/dist/core/responses/normalize.js +33 -0
  277. package/dist/core/responses/normalize.js.map +1 -0
  278. package/dist/core/responses/pickStatus.d.ts +3 -0
  279. package/dist/core/responses/pickStatus.d.ts.map +1 -0
  280. package/dist/core/responses/pickStatus.js +27 -0
  281. package/dist/core/responses/pickStatus.js.map +1 -0
  282. package/dist/core/route/defineRoute.d.ts +74 -0
  283. package/dist/core/route/defineRoute.d.ts.map +1 -0
  284. package/dist/core/route/defineRoute.js +59 -0
  285. package/dist/core/route/defineRoute.js.map +1 -0
  286. package/dist/core/route/index.d.ts +2 -0
  287. package/dist/core/route/index.d.ts.map +1 -0
  288. package/dist/core/route/index.js +2 -0
  289. package/dist/core/route/index.js.map +1 -0
  290. package/dist/core/serialization/json.d.ts +2 -0
  291. package/dist/core/serialization/json.d.ts.map +1 -0
  292. package/dist/core/serialization/json.js +3 -0
  293. package/dist/core/serialization/json.js.map +1 -0
  294. package/dist/core/typing/path-params.d.ts +2 -0
  295. package/dist/core/typing/path-params.d.ts.map +1 -0
  296. package/dist/core/typing/path-params.js +2 -0
  297. package/dist/core/typing/path-params.js.map +1 -0
  298. package/dist/decorators/binding.d.ts +9 -0
  299. package/dist/decorators/binding.d.ts.map +1 -0
  300. package/dist/decorators/binding.js +18 -0
  301. package/dist/decorators/binding.js.map +1 -0
  302. package/dist/decorators/controller.d.ts +6 -0
  303. package/dist/decorators/controller.d.ts.map +1 -0
  304. package/dist/decorators/controller.js +26 -0
  305. package/dist/decorators/controller.js.map +1 -0
  306. package/dist/decorators/db.d.ts +2 -0
  307. package/dist/decorators/db.d.ts.map +1 -0
  308. package/dist/decorators/db.js +3 -0
  309. package/dist/decorators/db.js.map +1 -0
  310. package/dist/decorators/docs.d.ts +8 -0
  311. package/dist/decorators/docs.d.ts.map +1 -0
  312. package/dist/decorators/docs.js +46 -0
  313. package/dist/decorators/docs.js.map +1 -0
  314. package/dist/decorators/index.d.ts +7 -0
  315. package/dist/decorators/index.d.ts.map +1 -0
  316. package/dist/decorators/index.js +7 -0
  317. package/dist/decorators/index.js.map +1 -0
  318. package/dist/decorators/methods.d.ts +146 -0
  319. package/dist/decorators/methods.d.ts.map +1 -0
  320. package/dist/decorators/methods.js +170 -0
  321. package/dist/decorators/methods.js.map +1 -0
  322. package/dist/decorators/middleware.d.ts +2 -0
  323. package/dist/decorators/middleware.d.ts.map +1 -0
  324. package/dist/decorators/middleware.js +3 -0
  325. package/dist/decorators/middleware.js.map +1 -0
  326. package/dist/decorators/responses.d.ts +7 -0
  327. package/dist/decorators/responses.d.ts.map +1 -0
  328. package/dist/decorators/responses.js +44 -0
  329. package/dist/decorators/responses.js.map +1 -0
  330. package/dist/decorators/security.d.ts +8 -0
  331. package/dist/decorators/security.d.ts.map +1 -0
  332. package/dist/decorators/security.js +39 -0
  333. package/dist/decorators/security.js.map +1 -0
  334. package/dist/express.d.ts +2 -0
  335. package/dist/express.d.ts.map +1 -0
  336. package/dist/express.js +2 -0
  337. package/dist/express.js.map +1 -0
  338. package/dist/index.d.ts +13 -0
  339. package/dist/index.d.ts.map +1 -0
  340. package/dist/index.js +13 -2
  341. package/dist/index.js.map +1 -0
  342. package/dist/integrations/metal-orm/index.d.ts +2 -0
  343. package/dist/integrations/metal-orm/index.d.ts.map +1 -0
  344. package/dist/integrations/metal-orm/index.js +2 -0
  345. package/dist/integrations/metal-orm/index.js.map +1 -0
  346. package/dist/integrations/metal-orm/pagination/executePaged.d.ts +2 -0
  347. package/dist/integrations/metal-orm/pagination/executePaged.d.ts.map +1 -0
  348. package/dist/integrations/metal-orm/pagination/executePaged.js +3 -0
  349. package/dist/integrations/metal-orm/pagination/executePaged.js.map +1 -0
  350. package/dist/integrations/metal-orm/pagination/page.d.ts +2 -0
  351. package/dist/integrations/metal-orm/pagination/page.d.ts.map +1 -0
  352. package/dist/integrations/metal-orm/pagination/page.js +3 -0
  353. package/dist/integrations/metal-orm/pagination/page.js.map +1 -0
  354. package/dist/integrations/metal-orm/query/filters.d.ts +2 -0
  355. package/dist/integrations/metal-orm/query/filters.d.ts.map +1 -0
  356. package/dist/integrations/metal-orm/query/filters.js +3 -0
  357. package/dist/integrations/metal-orm/query/filters.js.map +1 -0
  358. package/dist/integrations/metal-orm/query/search.d.ts +2 -0
  359. package/dist/integrations/metal-orm/query/search.d.ts.map +1 -0
  360. package/dist/integrations/metal-orm/query/search.js +3 -0
  361. package/dist/integrations/metal-orm/query/search.js.map +1 -0
  362. package/dist/integrations/metal-orm/query/sort.d.ts +2 -0
  363. package/dist/integrations/metal-orm/query/sort.d.ts.map +1 -0
  364. package/dist/integrations/metal-orm/query/sort.js +3 -0
  365. package/dist/integrations/metal-orm/query/sort.js.map +1 -0
  366. package/dist/integrations/metal-orm/save-graph/helpers.d.ts +2 -0
  367. package/dist/integrations/metal-orm/save-graph/helpers.d.ts.map +1 -0
  368. package/dist/integrations/metal-orm/save-graph/helpers.js +3 -0
  369. package/dist/integrations/metal-orm/save-graph/helpers.js.map +1 -0
  370. package/dist/integrations/metal-orm/save-graph/types.d.ts +2 -0
  371. package/dist/integrations/metal-orm/save-graph/types.d.ts.map +1 -0
  372. package/dist/integrations/metal-orm/save-graph/types.js +3 -0
  373. package/dist/integrations/metal-orm/save-graph/types.js.map +1 -0
  374. package/dist/integrations/metal-orm/schema/column-map.d.ts +96 -0
  375. package/dist/integrations/metal-orm/schema/column-map.d.ts.map +1 -0
  376. package/dist/integrations/metal-orm/schema/column-map.js +207 -0
  377. package/dist/integrations/metal-orm/schema/column-map.js.map +1 -0
  378. package/dist/integrations/metal-orm/schema/ddl.d.ts +2 -0
  379. package/dist/integrations/metal-orm/schema/ddl.d.ts.map +1 -0
  380. package/dist/integrations/metal-orm/schema/ddl.js +3 -0
  381. package/dist/integrations/metal-orm/schema/ddl.js.map +1 -0
  382. package/dist/integrations/metal-orm/schema/dto.d.ts +7 -0
  383. package/dist/integrations/metal-orm/schema/dto.d.ts.map +1 -0
  384. package/dist/integrations/metal-orm/schema/dto.js +34 -0
  385. package/dist/integrations/metal-orm/schema/dto.js.map +1 -0
  386. package/dist/integrations/metal-orm/schema/entity.d.ts +99 -0
  387. package/dist/integrations/metal-orm/schema/entity.d.ts.map +1 -0
  388. package/dist/integrations/metal-orm/schema/entity.js +99 -0
  389. package/dist/integrations/metal-orm/schema/entity.js.map +1 -0
  390. package/dist/integrations/metal-orm/schema/filters.d.ts +11 -0
  391. package/dist/integrations/metal-orm/schema/filters.d.ts.map +1 -0
  392. package/dist/integrations/metal-orm/schema/filters.js +21 -0
  393. package/dist/integrations/metal-orm/schema/filters.js.map +1 -0
  394. package/dist/integrations/metal-orm/schema/index.d.ts +5 -0
  395. package/dist/integrations/metal-orm/schema/index.d.ts.map +1 -0
  396. package/dist/integrations/metal-orm/schema/index.js +5 -0
  397. package/dist/integrations/metal-orm/schema/index.js.map +1 -0
  398. package/dist/integrations/metal-orm/schema/openapi/entityToSchema.d.ts +2 -0
  399. package/dist/integrations/metal-orm/schema/openapi/entityToSchema.d.ts.map +1 -0
  400. package/dist/integrations/metal-orm/schema/openapi/entityToSchema.js +3 -0
  401. package/dist/integrations/metal-orm/schema/openapi/entityToSchema.js.map +1 -0
  402. package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.d.ts +2 -0
  403. package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.d.ts.map +1 -0
  404. package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.js +3 -0
  405. package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.js.map +1 -0
  406. package/dist/integrations/metal-orm/schema/sqlite.d.ts +2 -0
  407. package/dist/integrations/metal-orm/schema/sqlite.d.ts.map +1 -0
  408. package/dist/integrations/metal-orm/schema/sqlite.js +3 -0
  409. package/dist/integrations/metal-orm/schema/sqlite.js.map +1 -0
  410. package/dist/integrations/metal-orm/schema/tabledef.d.ts +4 -0
  411. package/dist/integrations/metal-orm/schema/tabledef.d.ts.map +1 -0
  412. package/dist/integrations/metal-orm/schema/tabledef.js +10 -0
  413. package/dist/integrations/metal-orm/schema/tabledef.js.map +1 -0
  414. package/dist/integrations/metal-orm/schema/types.d.ts +7 -0
  415. package/dist/integrations/metal-orm/schema/types.d.ts.map +1 -0
  416. package/dist/integrations/metal-orm/schema/types.js +2 -0
  417. package/dist/integrations/metal-orm/schema/types.js.map +1 -0
  418. package/dist/integrations/metal-orm/serialization/entitySerializer.d.ts +2 -0
  419. package/dist/integrations/metal-orm/serialization/entitySerializer.d.ts.map +1 -0
  420. package/dist/integrations/metal-orm/serialization/entitySerializer.js +3 -0
  421. package/dist/integrations/metal-orm/serialization/entitySerializer.js.map +1 -0
  422. package/dist/integrations/metal-orm/serialization/relationPolicy.d.ts +2 -0
  423. package/dist/integrations/metal-orm/serialization/relationPolicy.d.ts.map +1 -0
  424. package/dist/integrations/metal-orm/serialization/relationPolicy.js +3 -0
  425. package/dist/integrations/metal-orm/serialization/relationPolicy.js.map +1 -0
  426. package/dist/integrations/metal-orm/session/context.d.ts +2 -0
  427. package/dist/integrations/metal-orm/session/context.d.ts.map +1 -0
  428. package/dist/integrations/metal-orm/session/context.js +3 -0
  429. package/dist/integrations/metal-orm/session/context.js.map +1 -0
  430. package/dist/integrations/metal-orm/session/middleware.d.ts +2 -0
  431. package/dist/integrations/metal-orm/session/middleware.d.ts.map +1 -0
  432. package/dist/integrations/metal-orm/session/middleware.js +3 -0
  433. package/dist/integrations/metal-orm/session/middleware.js.map +1 -0
  434. package/dist/integrations/metal-orm/session/transaction.d.ts +2 -0
  435. package/dist/integrations/metal-orm/session/transaction.d.ts.map +1 -0
  436. package/dist/integrations/metal-orm/session/transaction.js +3 -0
  437. package/dist/integrations/metal-orm/session/transaction.js.map +1 -0
  438. package/dist/integrations/metal-orm/testing/setupSchema.d.ts +2 -0
  439. package/dist/integrations/metal-orm/testing/setupSchema.d.ts.map +1 -0
  440. package/dist/integrations/metal-orm/testing/setupSchema.js +3 -0
  441. package/dist/integrations/metal-orm/testing/setupSchema.js.map +1 -0
  442. package/dist/integrations/metal-orm/testing/sqliteMemory.d.ts +2 -0
  443. package/dist/integrations/metal-orm/testing/sqliteMemory.d.ts.map +1 -0
  444. package/dist/integrations/metal-orm/testing/sqliteMemory.js +3 -0
  445. package/dist/integrations/metal-orm/testing/sqliteMemory.js.map +1 -0
  446. package/dist/metadata/bag.d.ts +18 -0
  447. package/dist/metadata/bag.d.ts.map +1 -0
  448. package/dist/metadata/bag.js +39 -0
  449. package/dist/metadata/bag.js.map +1 -0
  450. package/dist/metadata/index.d.ts +4 -0
  451. package/dist/metadata/index.d.ts.map +1 -0
  452. package/dist/metadata/index.js +4 -0
  453. package/dist/metadata/index.js.map +1 -0
  454. package/dist/metadata/keys.d.ts +254 -0
  455. package/dist/metadata/keys.d.ts.map +1 -0
  456. package/dist/metadata/keys.js +23 -0
  457. package/dist/metadata/keys.js.map +1 -0
  458. package/dist/metadata/merge.d.ts +9 -0
  459. package/dist/metadata/merge.d.ts.map +1 -0
  460. package/dist/metadata/merge.js +30 -0
  461. package/dist/metadata/merge.js.map +1 -0
  462. package/dist/metal-orm.d.ts +2 -0
  463. package/dist/metal-orm.d.ts.map +1 -0
  464. package/dist/metal-orm.js +2 -0
  465. package/dist/metal-orm.js.map +1 -0
  466. package/dist/validation/native/index.d.ts +3 -0
  467. package/dist/validation/native/index.d.ts.map +1 -0
  468. package/dist/validation/native/index.js +3 -0
  469. package/dist/validation/native/index.js.map +1 -0
  470. package/dist/validation/native/ir.d.ts +38 -0
  471. package/dist/validation/native/ir.d.ts.map +1 -0
  472. package/dist/validation/native/ir.js +2 -0
  473. package/dist/validation/native/ir.js.map +1 -0
  474. package/dist/validation/native/schema.d.ts +63 -0
  475. package/dist/validation/native/schema.d.ts.map +1 -0
  476. package/dist/validation/native/schema.js +271 -0
  477. package/dist/validation/native/schema.js.map +1 -0
  478. package/dist/validation/native/validator.d.ts +21 -0
  479. package/dist/validation/native/validator.d.ts.map +1 -0
  480. package/dist/validation/native/validator.js +48 -0
  481. package/dist/validation/native/validator.js.map +1 -0
  482. package/package.json +57 -34
  483. package/dist/cli/generate-routes.js +0 -101
  484. package/dist/cli/generate-swagger.js +0 -197
  485. package/dist/controllers/advanced.controller.js +0 -131
  486. package/dist/controllers/user.controller.js +0 -121
  487. package/dist/entities/user.entity.js +0 -1
  488. package/dist/lib/common.js +0 -62
  489. package/dist/lib/decorators.js +0 -116
  490. package/dist/middleware/auth.middleware.js +0 -13
  491. package/dist/routes.js +0 -80
  492. package/dist/server.js +0 -18
  493. package/dist/src/cli/generate-routes.js +0 -105
  494. package/dist/src/cli/generate-swagger.js +0 -197
  495. package/dist/src/index.js +0 -4
  496. package/dist/src/lib/common.js +0 -62
  497. package/dist/src/lib/decorators.js +0 -116
  498. package/dist/src/routes.js +0 -80
  499. package/dist/src/server.js +0 -18
  500. package/dist/tests/example-app/controllers/advanced.controller.js +0 -130
  501. package/dist/tests/example-app/controllers/controllers/advanced.controller.js +0 -131
  502. package/dist/tests/example-app/controllers/controllers/user.controller.js +0 -121
  503. package/dist/tests/example-app/controllers/user.controller.js +0 -121
  504. package/dist/tests/example-app/entities/entities/user.entity.js +0 -1
  505. package/dist/tests/example-app/entities/user.entity.js +0 -1
  506. package/dist/tests/example-app/middleware/auth.middleware.js +0 -13
  507. package/dist/tests/example-app/middleware/middleware/auth.middleware.js +0 -13
  508. package/dist/tests/example-app/routes.js +0 -80
  509. package/dist/tests/example-app/server.js +0 -23
  510. package/scripts/run-example.js +0 -32
  511. package/src/cli/generate-routes.ts +0 -123
  512. package/src/cli/generate-swagger.ts +0 -216
  513. package/src/index.js +0 -20
  514. package/src/index.ts +0 -4
  515. package/src/lib/common.js +0 -68
  516. package/src/lib/common.ts +0 -35
  517. package/src/lib/decorators.js +0 -128
  518. package/src/lib/decorators.ts +0 -136
  519. package/swagger.json +0 -238
  520. package/tests/e2e.test.ts +0 -72
  521. package/tests/example-app/controllers/advanced.controller.ts +0 -52
  522. package/tests/example-app/controllers/user.controller.ts +0 -35
  523. package/tests/example-app/entities/user.entity.ts +0 -8
  524. package/tests/example-app/middleware/auth.middleware.ts +0 -16
  525. package/tests/example-app/routes.ts +0 -102
  526. package/tests/example-app/server.ts +0 -30
  527. package/tests/generators.test.ts +0 -48
  528. package/tests/utils.ts +0 -46
  529. package/tsconfig.json +0 -20
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Type guard function to check if an object is an Adorn Reply.
3
+ *
4
+ * This function is used to safely check if an object conforms to
5
+ * the Reply type structure.
6
+ *
7
+ * @param x - Object to check
8
+ * @returns true if the object is a Reply, false otherwise
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * function handleResponse(response: unknown) {
13
+ * if (isReply(response)) {
14
+ * // TypeScript now knows response is a Reply
15
+ * console.log('Status:', response.status);
16
+ * console.log('Body:', response.body);
17
+ * } else {
18
+ * console.log('Not a reply object');
19
+ * }
20
+ * }
21
+ * ```
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // In middleware or error handling
26
+ * if (isReply(error)) {
27
+ * // It's a reply object, can be sent directly to client
28
+ * res.status(error.status).json(error.body);
29
+ * } else {
30
+ * // Handle non-reply errors
31
+ * res.status(500).json({ error: 'Internal Server Error' });
32
+ * }
33
+ * ```
34
+ *
35
+ * @see Reply for the reply object type
36
+ */
37
+ export function isReply(x) {
38
+ if (!x || typeof x !== 'object')
39
+ return false;
40
+ const candidate = x;
41
+ return candidate.__adornReply === true && typeof candidate.status === 'number';
42
+ }
43
+ //# sourceMappingURL=reply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reply.js","sourceRoot":"","sources":["../../src/contracts/reply.ts"],"names":[],"mappings":"AAoFA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,SAAS,GAAG,CAA2B,CAAC;IAC9C,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC;AACjF,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { Schema } from '../validation/native/schema.js';
2
+ import type { ResponseSpec, ResponsesSpec } from './responses.js';
3
+ export type StatusKey<R extends ResponsesSpec> = Extract<keyof R, `${number}`>;
4
+ export type StatusNum<K extends string> = K extends `${infer N extends number}` ? N : never;
5
+ export type AllowedStatus<R extends ResponsesSpec> = StatusNum<StatusKey<R>> | (R extends {
6
+ default: unknown;
7
+ } ? number : never);
8
+ export type ResAt<R extends ResponsesSpec, S extends number> = `${S}` extends keyof R ? R[`${S}`] : R extends {
9
+ default: infer D;
10
+ } ? D : never;
11
+ export type NormalizeRes<X> = X extends Schema<unknown> ? {
12
+ content: {
13
+ 'application/json': {
14
+ schema: X;
15
+ };
16
+ };
17
+ } : X extends ResponseSpec ? X : never;
18
+ export type ContentOf<X> = NormalizeRes<X> extends {
19
+ content: infer C;
20
+ } ? C : never;
21
+ export type SchemaFromContent<C> = C extends Record<PropertyKey, unknown> ? ('application/json' extends keyof C ? C['application/json'] extends {
22
+ schema: infer S extends Schema<unknown>;
23
+ } ? S : never : C[keyof C] extends {
24
+ schema: infer S extends Schema<unknown>;
25
+ } ? S : never) : never;
26
+ export type BodySchemaFor<R extends ResponsesSpec, S extends number> = SchemaFromContent<ContentOf<ResAt<R, S>>>;
27
+ export type HeadersDefFor<R extends ResponsesSpec, S extends number> = NormalizeRes<ResAt<R, S>> extends {
28
+ headers?: infer H;
29
+ } ? H : undefined;
30
+ export type StatusesWithBody<R extends ResponsesSpec> = {
31
+ [K in StatusKey<R>]: BodySchemaFor<R, StatusNum<K>> extends never ? never : StatusNum<K>;
32
+ }[StatusKey<R>];
33
+ export type StatusesNoBody<R extends ResponsesSpec> = {
34
+ [K in StatusKey<R>]: BodySchemaFor<R, StatusNum<K>> extends never ? StatusNum<K> : never;
35
+ }[StatusKey<R>];
36
+ export type SuccessStatusKeys<R extends ResponsesSpec> = Extract<StatusKey<R>, `2${string}`>;
37
+ export type SuccessStatusNumbers<R extends ResponsesSpec> = SuccessStatusKeys<R> extends `${infer N extends number}` ? N : never;
38
+ export type SuccessStatusesWithBody<R extends ResponsesSpec> = Extract<StatusesWithBody<R>, SuccessStatusNumbers<R>>;
39
+ export type SuccessStatusesNoBody<R extends ResponsesSpec> = Extract<StatusesNoBody<R>, SuccessStatusNumbers<R>>;
40
+ //# sourceMappingURL=response-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-types.d.ts","sourceRoot":"","sources":["../../src/contracts/response-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=response-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-types.js","sourceRoot":"","sources":["../../src/contracts/response-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import type { Schema } from '../validation/native/schema.js';
2
+ /**
3
+ * Specification for response content including schema and example.
4
+ *
5
+ * @template T - The type that the schema validates
6
+ */
7
+ export type ResponseContentSpec = {
8
+ /** Schema defining the structure and validation rules for the response content */
9
+ schema: Schema<unknown>;
10
+ /** Example value that matches the schema */
11
+ example?: unknown;
12
+ };
13
+ /**
14
+ * Specification for HTTP response headers.
15
+ *
16
+ * @template T - The type that the schema validates
17
+ */
18
+ export type HeaderSpec = {
19
+ /** Schema defining the structure and validation rules for the header */
20
+ schema: Schema<unknown>;
21
+ /** Human-readable description of the header */
22
+ description?: string;
23
+ /** Whether the header is required */
24
+ required?: boolean;
25
+ };
26
+ /**
27
+ * Complete specification for an HTTP response.
28
+ *
29
+ * This type defines all aspects of an HTTP response including status codes,
30
+ * content types, headers, and schemas. It's used to document and validate
31
+ * API responses.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const successResponse: ResponseSpec = {
36
+ * description: 'User created successfully',
37
+ * headers: {
38
+ * 'X-Request-ID': {
39
+ * schema: Schema.String(),
40
+ * description: 'Unique request identifier',
41
+ * required: true
42
+ * }
43
+ * },
44
+ * content: {
45
+ * 'application/json': {
46
+ * schema: userSchema,
47
+ * example: { id: '123', name: 'John Doe', email: 'john@example.com' }
48
+ * }
49
+ * }
50
+ * };
51
+ * ```
52
+ *
53
+ * @see Schema for schema definition
54
+ */
55
+ export type ResponseSpec = {
56
+ /** Human-readable description of the response */
57
+ description?: string;
58
+ /** Response headers specification */
59
+ headers?: Record<string, HeaderSpec>;
60
+ /** Response content by media type */
61
+ content?: Record<string, ResponseContentSpec>;
62
+ /** Legacy schema property (use content instead for proper media type handling) */
63
+ schema?: Schema<unknown>;
64
+ };
65
+ /**
66
+ * Collection of response specifications keyed by HTTP status code.
67
+ *
68
+ * This type represents all possible responses for a given endpoint,
69
+ * with status codes as keys and ResponseSpec objects as values.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * const userResponses: ResponsesSpec = {
74
+ * '200': {
75
+ * description: 'User found',
76
+ * content: {
77
+ * 'application/json': {
78
+ * schema: userSchema,
79
+ * example: { id: '123', name: 'John Doe' }
80
+ * }
81
+ * }
82
+ * },
83
+ * '404': {
84
+ * description: 'User not found',
85
+ * content: {
86
+ * 'application/json': {
87
+ * schema: errorSchema,
88
+ * example: { error: 'User not found', code: 'USER_NOT_FOUND' }
89
+ * }
90
+ * }
91
+ * }
92
+ * };
93
+ * ```
94
+ *
95
+ * @see ResponseSpec for individual response specification
96
+ */
97
+ export type ResponsesSpec = Record<string, ResponseSpec | Schema<unknown>>;
98
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/contracts/responses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC9C,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/contracts/responses.ts"],"names":[],"mappings":""}
@@ -0,0 +1,155 @@
1
+ import type { ResponsesSpec } from './responses.js';
2
+ import type { Schema } from '../validation/native/schema.js';
3
+ import type { ExtractPathParams } from '../core/typing/path-params.js';
4
+ import type { SecurityRequirementObject } from './openapi-v3.js';
5
+ /**
6
+ * Type hints for path parameter coercion.
7
+ *
8
+ * These hints are used to automatically convert path parameters
9
+ * to specific types during request processing.
10
+ */
11
+ export type ScalarHint = 'string' | 'int' | 'number' | 'boolean' | 'uuid';
12
+ /**
13
+ * Validation configuration for route parameters.
14
+ *
15
+ * Specifies schemas for validating different parts of the request.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const routeValidation: RouteValidate = {
20
+ * params: Schema.Object({
21
+ * id: Schema.String().format('uuid')
22
+ * }),
23
+ * query: Schema.Object({
24
+ * limit: Schema.Number().min(1).max(100),
25
+ * offset: Schema.Number().min(0)
26
+ * }),
27
+ * body: Schema.Object({
28
+ * title: Schema.String().minLength(3),
29
+ * content: Schema.String().minLength(10)
30
+ * })
31
+ * };
32
+ * ```
33
+ *
34
+ * @see Schema for schema definition
35
+ */
36
+ export type RouteValidate = {
37
+ /** Schema for validating path parameters */
38
+ params?: Schema<unknown>;
39
+ /** Schema for validating query parameters */
40
+ query?: Schema<unknown>;
41
+ /** Schema for validating request body */
42
+ body?: Schema<unknown>;
43
+ };
44
+ /**
45
+ * Parameter binding configuration for routes.
46
+ *
47
+ * Specifies how path parameters should be coerced to specific types.
48
+ *
49
+ * @template Path - The route path as a string literal
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // For route '/users/:id/:status'
54
+ * const routeBindings: RouteBindings<'/users/:id/:status'> = {
55
+ * path: {
56
+ * id: 'uuid', // Coerce to UUID format
57
+ * status: 'string' // Keep as string
58
+ * }
59
+ * };
60
+ * ```
61
+ *
62
+ * @see ScalarHint for available type hints
63
+ */
64
+ export type RouteBindings<Path extends string> = {
65
+ /** Type hints for path parameters */
66
+ path?: Partial<Record<ExtractPathParams<Path>, ScalarHint>>;
67
+ };
68
+ /**
69
+ * Complete route configuration options.
70
+ *
71
+ * This type defines all available options for configuring a route,
72
+ * including OpenAPI documentation, validation, parameter binding,
73
+ * and response specifications.
74
+ *
75
+ * @template Path - The route path as a string literal
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const userRouteOptions: RouteOptions<'/users/:id'> = {
80
+ * summary: 'Get user by ID',
81
+ * description: 'Retrieves a user by their unique identifier',
82
+ * tags: ['Users'],
83
+ * operationId: 'getUserById',
84
+ * deprecated: false,
85
+ * security: [{ bearerAuth: [] }],
86
+ *
87
+ * validate: {
88
+ * params: Schema.Object({
89
+ * id: Schema.String().format('uuid')
90
+ * })
91
+ * },
92
+ *
93
+ * bindings: {
94
+ * path: { id: 'uuid' }
95
+ * },
96
+ *
97
+ * responses: {
98
+ * '200': {
99
+ * description: 'User found',
100
+ * content: {
101
+ * 'application/json': {
102
+ * schema: userSchema,
103
+ * example: { id: '123', name: 'John Doe' }
104
+ * }
105
+ * }
106
+ * },
107
+ * '404': {
108
+ * description: 'User not found'
109
+ * }
110
+ * },
111
+ *
112
+ * successStatus: 200
113
+ * };
114
+ * ```
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * // Minimal route options
119
+ * const simpleRouteOptions: RouteOptions = {
120
+ * summary: 'Health check',
121
+ * responses: {
122
+ * '200': { description: 'Service is healthy' }
123
+ * }
124
+ * };
125
+ * ```
126
+ *
127
+ * @see ResponsesSpec for response specification format
128
+ * @see RouteValidate for validation configuration
129
+ * @see RouteBindings for parameter binding configuration
130
+ */
131
+ export type RouteOptions<Path extends string = string> = {
132
+ /** Short summary of the endpoint */
133
+ summary?: string;
134
+ /** Detailed description of the endpoint */
135
+ description?: string;
136
+ /** Tags for grouping endpoints in documentation */
137
+ tags?: string[];
138
+ /** Unique identifier for the operation */
139
+ operationId?: string;
140
+ /** Whether the endpoint is deprecated */
141
+ deprecated?: boolean;
142
+ /** Security requirements for the endpoint */
143
+ security?: SecurityRequirementObject[];
144
+ /** Validation configuration for request parts */
145
+ validate?: RouteValidate;
146
+ /** Parameter binding configuration */
147
+ bindings?: RouteBindings<Path>;
148
+ /** Response specifications by status code */
149
+ responses?: ResponsesSpec;
150
+ /** Default success status code */
151
+ successStatus?: number;
152
+ /** Allow additional custom properties */
153
+ [k: string]: unknown;
154
+ };
155
+ //# sourceMappingURL=route-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-options.d.ts","sourceRoot":"","sources":["../../src/contracts/route-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,IAAI;IAC/C,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;CAC7D,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,MAAM,MAAM,YAAY,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI;IACvD,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAEvC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAE/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yCAAyC;IACzC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=route-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-options.js","sourceRoot":"","sources":["../../src/contracts/route-options.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import type { Schema } from '../validation/native/schema.js';
2
+ type InferSchema<S> = S extends Schema<infer T> ? T : never;
3
+ export type QueryOf<R> = R extends {
4
+ options: {
5
+ validate?: {
6
+ query?: infer S;
7
+ };
8
+ };
9
+ } ? InferSchema<S> : never;
10
+ export type BodyOf<R> = R extends {
11
+ options: {
12
+ validate?: {
13
+ body?: infer S;
14
+ };
15
+ };
16
+ } ? InferSchema<S> : never;
17
+ export type ParamsOf<R> = R extends {
18
+ options: {
19
+ validate?: {
20
+ params?: infer S;
21
+ };
22
+ };
23
+ } ? InferSchema<S> : never;
24
+ export {};
25
+ //# sourceMappingURL=route-typing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-typing.d.ts","sourceRoot":"","sources":["../../src/contracts/route-typing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAE7D,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5D,MAAM,MAAM,OAAO,CAAC,CAAC,IACnB,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAErF,MAAM,MAAM,MAAM,CAAC,CAAC,IAClB,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAEpF,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=route-typing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-typing.js","sourceRoot":"","sources":["../../src/contracts/route-typing.ts"],"names":[],"mappings":""}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Path to a validation issue within the request data.
3
+ *
4
+ * Represents the location of a validation failure using an array
5
+ * where each element is a property name or array index.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // For body: { user: { email: 'invalid' } }
10
+ * const path: ValidationPath = ['body', 'user', 'email'];
11
+ *
12
+ * // For query: { filters: { page: 'not-a-number' } }
13
+ * const path: ValidationPath = ['query', 'filters', 'page'];
14
+ *
15
+ * // For array: { items: [{ id: 'invalid' }] }
16
+ * const path: ValidationPath = ['body', 'items', 0, 'id'];
17
+ * ```
18
+ */
19
+ export type ValidationPath = Array<string | number>;
20
+ /**
21
+ * Individual validation issue with path and details.
22
+ *
23
+ * Represents a single validation failure with information about
24
+ * where it occurred, what was expected, and what was received.
25
+ */
26
+ export type ValidationIssue = {
27
+ /** Path to the invalid data within the request */
28
+ path: ValidationPath;
29
+ /** Human-readable error message */
30
+ message: string;
31
+ /** Machine-readable error code */
32
+ code?: string;
33
+ /** Expected value or type */
34
+ expected?: unknown;
35
+ /** Received value that failed validation */
36
+ received?: unknown;
37
+ };
38
+ /**
39
+ * Result of a validation operation.
40
+ *
41
+ * This discriminated union represents either a successful validation
42
+ * with the validated value, or a failed validation with issues.
43
+ *
44
+ * @template T - The expected type after successful validation
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * // Successful validation
49
+ * const success: ValidationResult<User> = {
50
+ * ok: true,
51
+ * value: { id: '123', name: 'John Doe', email: 'john@example.com' }
52
+ * };
53
+ *
54
+ * // Failed validation
55
+ * const failure: ValidationResult<User> = {
56
+ * ok: false,
57
+ * issues: [
58
+ * { path: ['body', 'email'], message: 'Invalid email format', code: 'invalid_string' }
59
+ * ]
60
+ * };
61
+ * ```
62
+ *
63
+ * @example
64
+ * ```typescript
65
+ * // Usage in validation logic
66
+ * const result = validator.validateBody(request.body, 'createUserSchema');
67
+ *
68
+ * if (!result.ok) {
69
+ * throw new ValidationError('Invalid user data', result.issues);
70
+ * }
71
+ *
72
+ * const validatedUser = result.value;
73
+ * ```
74
+ */
75
+ export type ValidationResult<T> = {
76
+ ok: true;
77
+ value: T;
78
+ } | {
79
+ ok: false;
80
+ issues: ValidationIssue[];
81
+ };
82
+ /**
83
+ * Optional pluggable validator interface.
84
+ *
85
+ * You can implement adapters later (zod/ajv/valibot).
86
+ *
87
+ * This interface defines the contract for validation services
88
+ * that can be plugged into the Adorn API framework.
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * // Custom validator implementation
93
+ * class MyValidator implements Validator {
94
+ * validateBody<T>(body: unknown, schemaId: string): ValidationResult<T> {
95
+ * // Implement body validation logic
96
+ * }
97
+ *
98
+ * validateQuery<T>(query: unknown, schemaId: string): ValidationResult<T> {
99
+ * // Implement query validation logic
100
+ * }
101
+ *
102
+ * validateParams<T>(params: unknown, schemaId: string): ValidationResult<T> {
103
+ * // Implement params validation logic
104
+ * }
105
+ * }
106
+ *
107
+ * // Usage in Express adapter
108
+ * const app = createAdornExpressApp({
109
+ * controllers: [UserController],
110
+ * validator: new MyValidator()
111
+ * });
112
+ * ```
113
+ *
114
+ * @see ValidationResult for the result type
115
+ * @see ValidationIssue for issue details
116
+ */
117
+ export interface Validator {
118
+ /**
119
+ * Validates request body against a schema.
120
+ *
121
+ * @template T - Expected type after validation
122
+ * @param body - Request body to validate
123
+ * @param schemaId - Identifier for the schema to use
124
+ * @returns Validation result
125
+ */
126
+ validateBody<T = unknown>(body: unknown, schemaId: string): ValidationResult<T>;
127
+ /**
128
+ * Validates query parameters against a schema.
129
+ *
130
+ * @template T - Expected type after validation
131
+ * @param query - Query parameters to validate
132
+ * @param schemaId - Identifier for the schema to use
133
+ * @returns Validation result
134
+ */
135
+ validateQuery<T = unknown>(query: unknown, schemaId: string): ValidationResult<T>;
136
+ /**
137
+ * Validates path parameters against a schema.
138
+ *
139
+ * @template T - Expected type after validation
140
+ * @param params - Path parameters to validate
141
+ * @param schemaId - Identifier for the schema to use
142
+ * @returns Validation result
143
+ */
144
+ validateParams<T = unknown>(params: unknown, schemaId: string): ValidationResult<T>;
145
+ }
146
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/contracts/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,kDAAkD;IAClD,IAAI,EAAE,cAAc,CAAC;IACrB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,WAAW,SAAS;IACxB;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAEhF;;;;;;;OAOG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAElF;;;;;;;OAOG;IACH,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CACrF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/contracts/validator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
1
+ import type { RequestContext } from '../../contracts/context.js';
2
+ import type { RouteEntry } from '../registry/types.js';
3
+ import type { CoerceMode } from './coerce/primitives.js';
4
+ type HandlerFunction = (...args: unknown[]) => unknown;
5
+ /**
6
+ * Prepared binding data after argument binding.
7
+ * Contains the processed params, query, and body data.
8
+ */
9
+ export type BindingPrepared = {
10
+ /** Path parameters extracted and coerced from the URL */
11
+ params: Record<string, unknown>;
12
+ /** Query parameters extracted and processed from the URL query string */
13
+ query: Record<string, unknown>;
14
+ /** Request body parsed and processed */
15
+ body: unknown;
16
+ };
17
+ /**
18
+ * Result of the bindArgs function containing:
19
+ * - args: The arguments to pass to the handler function
20
+ * - prepared: The processed binding data
21
+ */
22
+ export type BindArgsResult = {
23
+ /** Arguments to pass to the handler function in order */
24
+ args: unknown[];
25
+ /** Prepared binding data for reference */
26
+ prepared: BindingPrepared;
27
+ };
28
+ /**
29
+ * Options for the bindArgs function to control binding behavior.
30
+ */
31
+ export type BindOptions = {
32
+ /** Coercion mode for automatic type conversion ('smart', 'strict', or 'none') */
33
+ coerce?: CoerceMode;
34
+ /** Whether to parse CSV values in query parameters */
35
+ csv?: boolean;
36
+ /** Whether to pass the request context as the last argument */
37
+ passContext?: boolean;
38
+ };
39
+ /**
40
+ * Binds request data to handler function arguments based on route configuration.
41
+ *
42
+ * This function automatically maps path parameters, query parameters, and request body
43
+ * to the handler function arguments based on the route's binding configuration and
44
+ * HTTP method conventions.
45
+ *
46
+ * @param route - The route entry containing metadata about the handler
47
+ * @param handler - The handler function to bind arguments for
48
+ * @param ctx - The request context containing params, query, and body
49
+ * @param opts - Binding options to control behavior
50
+ * @returns Object containing args to pass to handler and prepared binding data
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // For a route like: @Get('/users/:id')
55
+ * // With handler: async getUser(id: string, ctx: RequestContext)
56
+ * const { args } = bindArgs(route, handler, requestContext);
57
+ * const result = await handler(...args); // Automatically passes id and ctx
58
+ * ```
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * // For a POST route with body
63
+ * // @Post('/users')
64
+ * // async createUser(@Body() userData: CreateUserDto)
65
+ * const { args } = bindArgs(route, handler, requestContext);
66
+ * const result = await handler(...args); // Automatically passes parsed body
67
+ * ```
68
+ *
69
+ * @see RouteEntry for route metadata structure
70
+ * @see RequestContext for request data structure
71
+ */
72
+ export declare function bindArgs(route: RouteEntry, handler: HandlerFunction, ctx: RequestContext, opts?: BindOptions): BindArgsResult;
73
+ export {};
74
+ //# sourceMappingURL=binder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binder.d.ts","sourceRoot":"","sources":["../../../src/core/binding/binder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,KAAK,eAAe,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEvD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,wCAAwC;IACxC,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,yDAAyD;IACzD,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,iFAAiF;IACjF,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,sDAAsD;IACtD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,WAAgB,GACrB,cAAc,CAoEhB"}