trie-router.d.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import {Route} from './route.js';
  2. import {RequestListener} from 'http';
  3. import {RouteDefinition} from './route.js';
  4. import {DebuggableService} from './debuggable-service.js';
  5. import {
  6. RouterHook,
  7. RouterHookType,
  8. PostHandlerHook,
  9. PreHandlerHook,
  10. } from './hooks/index.js';
  11. /**
  12. * Trie router.
  13. */
  14. export declare class TrieRouter extends DebuggableService {
  15. /**
  16. * Define route.
  17. *
  18. * Example 1:
  19. * ```
  20. * const router = new TrieRouter();
  21. * router.defineRoute({
  22. * method: HttpMethod.GET, // Request method.
  23. * path: '/', // Path template.
  24. * handler: ctx => 'Hello world!', // Request handler.
  25. * });
  26. * ```
  27. *
  28. * Example 2:
  29. * ```
  30. * const router = new TrieRouter();
  31. * router.defineRoute({
  32. * method: HttpMethod.POST, // Request method.
  33. * path: '/users/:id', // The path template may have parameters.
  34. * preHandler(ctx) { ... }, // The "preHandler" is executed before a route handler.
  35. * handler(ctx) { ... }, // Request handler function.
  36. * postHandler(ctx, data) { ... }, // The "postHandler" is executed after a route handler
  37. * });
  38. * ```
  39. *
  40. * @param routeDef
  41. */
  42. defineRoute(routeDef: RouteDefinition): Route;
  43. /**
  44. * Request listener.
  45. *
  46. * Example:
  47. * ```
  48. * import http from 'http';
  49. * import {TrieRouter} from '@e22m4u/js-trie-router';
  50. *
  51. * const router = new TrieRouter();
  52. * const server = new http.Server();
  53. * server.on('request', router.requestListener); // Sets the request listener.
  54. * server.listen(3000); // Starts listening for connections.
  55. * ```
  56. *
  57. * @returns {Function}
  58. */
  59. get requestListener(): RequestListener;
  60. /**
  61. * Add hook.
  62. *
  63. * @param type
  64. * @param hook
  65. */
  66. addHook(type: typeof RouterHookType.PRE_HANDLER, hook: PreHandlerHook): this;
  67. /**
  68. * Add hook.
  69. *
  70. * @param type
  71. * @param hook
  72. */
  73. addHook(
  74. type: typeof RouterHookType.POST_HANDLER,
  75. hook: PostHandlerHook,
  76. ): this;
  77. /**
  78. * Add hook.
  79. *
  80. * @param type
  81. * @param hook
  82. */
  83. addHook(type: RouterHookType, hook: RouterHook): this;
  84. /**
  85. * Add pre-handler hook.
  86. *
  87. * @param hook
  88. */
  89. addPreHandler(hook: PreHandlerHook): this;
  90. /**
  91. * Add post-handler hook.
  92. *
  93. * @param hook
  94. */
  95. addPostHandler(hook: PostHandlerHook): this;
  96. }