trie-router.d.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import {Route} from './route.js';
  2. import {Service} from './service.js';
  3. import {RequestListener} from 'http';
  4. import {RouteDefinition} from './route.js';
  5. import {HOOK_NAME} from './hooks/index.js';
  6. import {RouterHook} from './hooks/index.js';
  7. /**
  8. * Trie router.
  9. */
  10. export declare class TrieRouter extends Service {
  11. /**
  12. * Define route.
  13. *
  14. * Example 1:
  15. * ```
  16. * const router = new TrieRouter();
  17. * router.defineRoute({
  18. * method: HTTP_METHOD.GET, // Request method.
  19. * path: '/', // Path template.
  20. * handler: ctx => 'Hello world!', // Request handler.
  21. * });
  22. * ```
  23. *
  24. * Example 2:
  25. * ```
  26. * const router = new TrieRouter();
  27. * router.defineRoute({
  28. * method: HTTP_METHOD.POST, // Request method.
  29. * path: '/users/:id', // The path template may have parameters.
  30. * preHandler(ctx) { ... }, // The "preHandler" is executed before a route handler.
  31. * handler(ctx) { ... }, // Request handler function.
  32. * postHandler(ctx, data) { ... }, // The "postHandler" is executed after a route handler
  33. * });
  34. * ```
  35. *
  36. * @param routeDef
  37. */
  38. defineRoute(routeDef: RouteDefinition): Route;
  39. /**
  40. * Request listener.
  41. *
  42. * Example:
  43. * ```
  44. * import http from 'http';
  45. * import {TrieRouter} from '@e22m4u/js-trie-router';
  46. *
  47. * const router = new TrieRouter();
  48. * const server = new http.Server();
  49. * server.on('request', router.requestListener); // Sets the request listener.
  50. * server.listen(3000); // Starts listening for connections.
  51. * ```
  52. *
  53. * @returns {Function}
  54. */
  55. get requestListener(): RequestListener;
  56. /**
  57. * Add hook.
  58. *
  59. * @param name
  60. * @param hook
  61. */
  62. addHook(name: HOOK_NAME, hook: RouterHook): this;
  63. }