trie-router.d.ts 3.0 KB

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