route.d.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import {ValueOrPromise} from './types.js';
  2. import {HookRegistry} from './hooks/index.js';
  3. import {RequestContext} from './request-context.js';
  4. /**
  5. * Http method.
  6. */
  7. export enum HTTP_METHOD {
  8. GET = 'get',
  9. POST = 'post',
  10. PUT = 'put',
  11. PATCH = 'patch',
  12. DELETE = 'delete',
  13. }
  14. /**
  15. * Route handler.
  16. */
  17. export type RouteHandler = (ctx: RequestContext) => ValueOrPromise<unknown>;
  18. /**
  19. * Route pre-handler.
  20. */
  21. export type RoutePreHandler = RouteHandler;
  22. /**
  23. * Route post-handler.
  24. */
  25. export type RoutePostHandler<T = unknown, U = unknown> = (
  26. ctx: RequestContext,
  27. data: T,
  28. ) => ValueOrPromise<U>;
  29. /**
  30. * Route definition.
  31. */
  32. export type RouteDefinition = {
  33. method: string;
  34. path: string;
  35. preHandler: RoutePreHandler | RoutePreHandler[];
  36. handler: RouteHandler;
  37. postHandler: RoutePostHandler | RoutePostHandler[];
  38. };
  39. /**
  40. * Route.
  41. */
  42. export declare class Route {
  43. /**
  44. * Method.
  45. */
  46. get method(): string;
  47. /**
  48. * Path.
  49. */
  50. get path(): string;
  51. /**
  52. * Handler.
  53. */
  54. get handler(): RouteHandler;
  55. /**
  56. * Hook registry.
  57. */
  58. get hookRegistry(): HookRegistry;
  59. /**
  60. * Constructor.
  61. *
  62. * @param routeDef
  63. */
  64. constructor(routeDef: RouteDefinition);
  65. /**
  66. * Handle.
  67. *
  68. * @param context
  69. */
  70. handle(context: RequestContext): ValueOrPromise<unknown>;
  71. }