@e22m4u/js-trie-router 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e22m4u/js-trie-router",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "HTTP маршрутизатор для Node.js на основе префиксного дерева",
5
5
  "author": "Mikhail Evstropov <e22m4u@yandex.ru>",
6
6
  "license": "MIT",
@@ -38,10 +38,10 @@
38
38
  "prepare": "husky"
39
39
  },
40
40
  "dependencies": {
41
- "@e22m4u/js-debug": "~0.3.1",
41
+ "@e22m4u/js-debug": "~0.3.2",
42
42
  "@e22m4u/js-format": "~0.2.0",
43
43
  "@e22m4u/js-path-trie": "~0.0.12",
44
- "@e22m4u/js-service": "~0.4.3",
44
+ "@e22m4u/js-service": "~0.4.4",
45
45
  "debug": "~4.4.3",
46
46
  "http-errors": "~2.0.0",
47
47
  "statuses": "~2.0.2"
@@ -49,16 +49,16 @@
49
49
  "devDependencies": {
50
50
  "@commitlint/cli": "~20.1.0",
51
51
  "@commitlint/config-conventional": "~20.0.0",
52
- "@eslint/js": "~9.37.0",
52
+ "@eslint/js": "~9.38.0",
53
53
  "@types/chai-as-promised": "~8.0.2",
54
54
  "c8": "~10.1.3",
55
55
  "chai": "~6.2.0",
56
56
  "chai-as-promised": "~8.0.2",
57
- "esbuild": "~0.25.10",
58
- "eslint": "~9.37.0",
57
+ "esbuild": "~0.25.11",
58
+ "eslint": "~9.38.0",
59
59
  "eslint-config-prettier": "~10.1.8",
60
60
  "eslint-plugin-chai-expect": "~3.1.0",
61
- "eslint-plugin-jsdoc": "~61.1.1",
61
+ "eslint-plugin-jsdoc": "~61.1.10",
62
62
  "eslint-plugin-mocha": "~11.2.0",
63
63
  "globals": "~16.4.0",
64
64
  "husky": "~9.1.7",
@@ -1,4 +1,5 @@
1
1
  import {Callable} from '../types.js';
2
+ import {RequestContext} from '../request-context.js';
2
3
  import {DebuggableService} from '../debuggable-service.js';
3
4
 
4
5
  /**
@@ -17,12 +18,38 @@ export type HookType = (typeof HookType)[keyof typeof HookType];
17
18
  /**
18
19
  * Router hook.
19
20
  */
20
- export type RouterHook<T = unknown> = Callable<T>;
21
+ export type RouterHook = Callable;
22
+
23
+ /**
24
+ * Pre handler hook.
25
+ */
26
+ export type PreHandlerHook = (ctx: RequestContext) => unknown;
27
+
28
+ /**
29
+ * Post handler hook.
30
+ */
31
+ export type PostHandlerHook = (ctx: RequestContext, data: unknown) => unknown;
21
32
 
22
33
  /**
23
34
  * Hook registry.
24
35
  */
25
36
  export declare class HookRegistry extends DebuggableService {
37
+ /**
38
+ * Add hook.
39
+ *
40
+ * @param type
41
+ * @param hook
42
+ */
43
+ addHook(type: typeof HookType.PRE_HANDLER, hook: PreHandlerHook): this;
44
+
45
+ /**
46
+ * Add hook.
47
+ *
48
+ * @param type
49
+ * @param hook
50
+ */
51
+ addHook(type: typeof HookType.POST_HANDLER, hook: PostHandlerHook): this;
52
+
26
53
  /**
27
54
  * Add hook.
28
55
  *
@@ -1,10 +1,15 @@
1
1
  import {Route} from './route.js';
2
2
  import {RequestListener} from 'http';
3
- import {HookType} from './hooks/index.js';
4
3
  import {RouteDefinition} from './route.js';
5
- import {RouterHook} from './hooks/index.js';
6
4
  import {DebuggableService} from './debuggable-service.js';
7
5
 
6
+ import {
7
+ HookType,
8
+ RouterHook,
9
+ PostHandlerHook,
10
+ PreHandlerHook,
11
+ } from './hooks/index.js';
12
+
8
13
  /**
9
14
  * Trie router.
10
15
  */
@@ -56,6 +61,22 @@ export declare class TrieRouter extends DebuggableService {
56
61
  */
57
62
  get requestListener(): RequestListener;
58
63
 
64
+ /**
65
+ * Add hook.
66
+ *
67
+ * @param type
68
+ * @param hook
69
+ */
70
+ addHook(type: typeof HookType.PRE_HANDLER, hook: PreHandlerHook): this;
71
+
72
+ /**
73
+ * Add hook.
74
+ *
75
+ * @param type
76
+ * @param hook
77
+ */
78
+ addHook(type: typeof HookType.POST_HANDLER, hook: PostHandlerHook): this;
79
+
59
80
  /**
60
81
  * Add hook.
61
82
  *