Просмотр исходного кода

refactor: hooks registration interface

e22m4u 2 недель назад
Родитель
Сommit
54ec175fa3
4 измененных файлов с 75 добавлено и 142 удалено
  1. 23 41
      dist/cjs/index.cjs
  2. 9 36
      src/trie-router.d.ts
  3. 23 41
      src/trie-router.js
  4. 20 24
      src/trie-router.spec.js

+ 23 - 41
dist/cjs/index.cjs

@@ -2250,72 +2250,54 @@ var _TrieRouter = class _TrieRouter extends DebuggableService {
     }
   }
   /**
-   * Add hook.
-   *
-   * Example:
-   * ```
-   * import {TrieRouter} from '@e22m4u/js-trie-router';
-   * import {RouterHookType} from '@e22m4u/js-trie-router';
-   *
-   * // Router instance.
-   * const router = new TrieRouter();
-   *
-   * // Adds the "preHandler" hook for each route.
-   * router.addHook(
-   *   RouterHookType.PRE_HANDLER,
-   *   ctx => { ... },
-   * );
-   *
-   * // Adds the "postHandler" hook for each route.
-   * router.addHook(
-   *   RouterHookType.POST_HANDLER,
-   *   ctx => { ... },
-   * );
-   * ```
+   * Add pre-handler hook.
    *
-   * @param {RouterHookType} type
-   * @param {Function} hook
+   * @param {import('./hooks/index.js').PreHandlerHook} hook
    * @returns {this}
    */
-  addHook(type, hook) {
-    this.getService(RouterHookRegistry).addHook(type, hook);
+  addPreHandler(hook) {
+    this.getService(RouterHookRegistry).addHook(
+      RouterHookType.PRE_HANDLER,
+      hook
+    );
     return this;
   }
   /**
-   * Has hook.
+   * Has pre-handler hook.
    *
-   * @param {RouterHookType} type
-   * @param {Function} hook
+   * @param {import('./hooks/index.js').PreHandlerHook} hook
    * @returns {boolean}
    */
-  hasHook(type, hook) {
-    return this.getService(RouterHookRegistry).hasHook(type, hook);
+  hasPreHandler(hook) {
+    return this.getService(RouterHookRegistry).hasHook(
+      RouterHookType.PRE_HANDLER,
+      hook
+    );
   }
   /**
-   * Add pre-handler hook.
+   * Add post-handler hook.
    *
-   * @param {Function} hook
+   * @param {import('./hooks/index.js').PostHandlerHook} hook
    * @returns {this}
    */
-  addPreHandler(hook) {
+  addPostHandler(hook) {
     this.getService(RouterHookRegistry).addHook(
-      RouterHookType.PRE_HANDLER,
+      RouterHookType.POST_HANDLER,
       hook
     );
     return this;
   }
   /**
-   * Add post-handler hook.
+   * Has post-handler hook.
    *
-   * @param {Function} hook
-   * @returns {this}
+   * @param {import('./hooks/index.js').PostHandlerHook} hook
+   * @returns {boolean}
    */
-  addPostHandler(hook) {
-    this.getService(RouterHookRegistry).addHook(
+  hasPostHandler(hook) {
+    return this.getService(RouterHookRegistry).hasHook(
       RouterHookType.POST_HANDLER,
       hook
     );
-    return this;
   }
 };
 __name(_TrieRouter, "TrieRouter");

+ 9 - 36
src/trie-router.d.ts

@@ -2,15 +2,9 @@ import {RequestListener} from 'http';
 import {Route} from './route/index.js';
 import {RouteDefinition} from './route/index.js';
 import {DebuggableService} from './debuggable-service.js';
+import {PostHandlerHook, PreHandlerHook} from './hooks/index.js';
 import {RouterBranch, RouterBranchDefinition} from './branch/index.js';
 
-import {
-  RouterHook,
-  RouterHookType,
-  PostHandlerHook,
-  PreHandlerHook,
-} from './hooks/index.js';
-
 /**
  * Trie router.
  */
@@ -83,51 +77,30 @@ export declare class TrieRouter extends DebuggableService {
   get requestListener(): RequestListener;
 
   /**
-   * Add hook.
-   *
-   * @param type
-   * @param hook
-   */
-  addHook(type: typeof RouterHookType.PRE_HANDLER, hook: PreHandlerHook): this;
-
-  /**
-   * Add hook.
-   *
-   * @param type
-   * @param hook
-   */
-  addHook(
-    type: typeof RouterHookType.POST_HANDLER,
-    hook: PostHandlerHook,
-  ): this;
-
-  /**
-   * Add hook.
+   * Add pre-handler hook.
    *
-   * @param type
    * @param hook
    */
-  addHook(type: RouterHookType, hook: RouterHook): this;
+  addPreHandler(hook: PreHandlerHook): this;
 
   /**
-   * Has hook.
+   * Has pre-handler hook.
    *
-   * @param type
    * @param hook
    */
-  hasHook(type: RouterHookType, hook: RouterHook): boolean;
+  hasPreHandler(hook: PreHandlerHook): boolean;
 
   /**
-   * Add pre-handler hook.
+   * Add post-handler hook.
    *
    * @param hook
    */
-  addPreHandler(hook: PreHandlerHook): this;
+  addPostHandler(hook: PostHandlerHook): this;
 
   /**
-   * Add post-handler hook.
+   * Has post-handler hook.
    *
    * @param hook
    */
-  addPostHandler(hook: PostHandlerHook): this;
+  hasPostHandler(hook: PostHandlerHook): boolean;
 }

+ 23 - 41
src/trie-router.js

@@ -205,74 +205,56 @@ export class TrieRouter extends DebuggableService {
   }
 
   /**
-   * Add hook.
-   *
-   * Example:
-   * ```
-   * import {TrieRouter} from '@e22m4u/js-trie-router';
-   * import {RouterHookType} from '@e22m4u/js-trie-router';
-   *
-   * // Router instance.
-   * const router = new TrieRouter();
-   *
-   * // Adds the "preHandler" hook for each route.
-   * router.addHook(
-   *   RouterHookType.PRE_HANDLER,
-   *   ctx => { ... },
-   * );
-   *
-   * // Adds the "postHandler" hook for each route.
-   * router.addHook(
-   *   RouterHookType.POST_HANDLER,
-   *   ctx => { ... },
-   * );
-   * ```
+   * Add pre-handler hook.
    *
-   * @param {RouterHookType} type
-   * @param {Function} hook
+   * @param {import('./hooks/index.js').PreHandlerHook} hook
    * @returns {this}
    */
-  addHook(type, hook) {
-    this.getService(RouterHookRegistry).addHook(type, hook);
+  addPreHandler(hook) {
+    this.getService(RouterHookRegistry).addHook(
+      RouterHookType.PRE_HANDLER,
+      hook,
+    );
     return this;
   }
 
   /**
-   * Has hook.
+   * Has pre-handler hook.
    *
-   * @param {RouterHookType} type
-   * @param {Function} hook
+   * @param {import('./hooks/index.js').PreHandlerHook} hook
    * @returns {boolean}
    */
-  hasHook(type, hook) {
-    return this.getService(RouterHookRegistry).hasHook(type, hook);
+  hasPreHandler(hook) {
+    return this.getService(RouterHookRegistry).hasHook(
+      RouterHookType.PRE_HANDLER,
+      hook,
+    );
   }
 
   /**
-   * Add pre-handler hook.
+   * Add post-handler hook.
    *
-   * @param {Function} hook
+   * @param {import('./hooks/index.js').PostHandlerHook} hook
    * @returns {this}
    */
-  addPreHandler(hook) {
+  addPostHandler(hook) {
     this.getService(RouterHookRegistry).addHook(
-      RouterHookType.PRE_HANDLER,
+      RouterHookType.POST_HANDLER,
       hook,
     );
     return this;
   }
 
   /**
-   * Add post-handler hook.
+   * Has post-handler hook.
    *
-   * @param {Function} hook
-   * @returns {this}
+   * @param {import('./hooks/index.js').PostHandlerHook} hook
+   * @returns {boolean}
    */
-  addPostHandler(hook) {
-    this.getService(RouterHookRegistry).addHook(
+  hasPostHandler(hook) {
+    return this.getService(RouterHookRegistry).hasHook(
       RouterHookType.POST_HANDLER,
       hook,
     );
-    return this;
   }
 }

+ 20 - 24
src/trie-router.spec.js

@@ -605,51 +605,47 @@ describe('TrieRouter', function () {
     });
   });
 
-  describe('addHook', function () {
-    it('should add the given hook to the RouterHookRegistry and returns itself', function () {
+  describe('addPreHandler', function () {
+    it('should register a given hook in the hook registry and return itself', function () {
       const router = new TrieRouter();
       const reg = router.getService(RouterHookRegistry);
-      const type = RouterHookType.PRE_HANDLER;
       const hook = () => undefined;
-      expect(reg.hasHook(type, hook)).to.be.false;
-      const res = router.addHook(type, hook);
+      expect(reg.hasHook(RouterHookType.PRE_HANDLER, hook)).to.be.false;
+      const res = router.addPreHandler(hook);
       expect(res).to.be.eq(router);
-      expect(reg.hasHook(type, hook)).to.be.true;
+      expect(reg.hasHook(RouterHookType.PRE_HANDLER, hook)).to.be.true;
     });
   });
 
-  describe('hasHook', function () {
-    it('should return true if a given function is registered with the hook type', function () {
+  describe('hasPreHandler', function () {
+    it('should return true if a given hook is registered', function () {
       const router = new TrieRouter();
-      const type = RouterHookType.PRE_HANDLER;
       const hook = () => undefined;
-      expect(router.hasHook(type, hook)).to.be.false;
-      router.addHook(type, hook);
-      expect(router.hasHook(type, hook)).to.be.true;
+      expect(router.hasPreHandler(hook)).to.be.false;
+      router.addPreHandler(hook);
+      expect(router.hasPreHandler(hook)).to.be.true;
     });
   });
 
-  describe('addPreHandler', function () {
-    it('should add the given pre-handler hook to the RouterHookRegistry and returns itself', function () {
+  describe('addPostHandler', function () {
+    it('should register a given hook in the hook registry and return itself', function () {
       const router = new TrieRouter();
       const reg = router.getService(RouterHookRegistry);
       const hook = () => undefined;
-      expect(reg.hasHook(RouterHookType.PRE_HANDLER, hook)).to.be.false;
-      const res = router.addPreHandler(hook);
+      expect(reg.hasHook(RouterHookType.POST_HANDLER, hook)).to.be.false;
+      const res = router.addPostHandler(hook);
       expect(res).to.be.eq(router);
-      expect(reg.hasHook(RouterHookType.PRE_HANDLER, hook)).to.be.true;
+      expect(reg.hasHook(RouterHookType.POST_HANDLER, hook)).to.be.true;
     });
   });
 
-  describe('addPostHandler', function () {
-    it('should add the given post-handler hook to the RouterHookRegistry and returns itself', function () {
+  describe('hasPostHandler', function () {
+    it('should return true if a given hook is registered', function () {
       const router = new TrieRouter();
-      const reg = router.getService(RouterHookRegistry);
       const hook = () => undefined;
-      expect(reg.hasHook(RouterHookType.POST_HANDLER, hook)).to.be.false;
-      const res = router.addPostHandler(hook);
-      expect(res).to.be.eq(router);
-      expect(reg.hasHook(RouterHookType.POST_HANDLER, hook)).to.be.true;
+      expect(router.hasPostHandler(hook)).to.be.false;
+      router.addPostHandler(hook);
+      expect(router.hasPostHandler(hook)).to.be.true;
     });
   });
 });