@e22m4u/js-trie-router 0.3.0 → 0.3.2
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/dist/cjs/index.cjs +6 -0
- package/package.json +9 -9
- package/src/trie-router.js +9 -2
- package/src/trie-router.spec.js +34 -0
package/dist/cjs/index.cjs
CHANGED
|
@@ -925,6 +925,10 @@ var _Route = class _Route extends import_js_debug.Debuggable {
|
|
|
925
925
|
__name(_Route, "Route");
|
|
926
926
|
var Route = _Route;
|
|
927
927
|
|
|
928
|
+
// src/trie-router.js
|
|
929
|
+
var import_http4 = require("http");
|
|
930
|
+
var import_http5 = require("http");
|
|
931
|
+
|
|
928
932
|
// src/senders/data-sender.js
|
|
929
933
|
var import_js_format15 = require("@e22m4u/js-format");
|
|
930
934
|
var _DataSender = class _DataSender extends DebuggableService {
|
|
@@ -1619,6 +1623,8 @@ var _TrieRouter = class _TrieRouter extends DebuggableService {
|
|
|
1619
1623
|
const container = new import_js_service5.ServiceContainer(this.container);
|
|
1620
1624
|
const context = new RequestContext(container, req, res);
|
|
1621
1625
|
container.set(RequestContext, context);
|
|
1626
|
+
container.set(import_http5.IncomingMessage, req);
|
|
1627
|
+
container.set(import_http4.ServerResponse, res);
|
|
1622
1628
|
context.params = params;
|
|
1623
1629
|
let data;
|
|
1624
1630
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@e22m4u/js-trie-router",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "HTTP маршрутизатор для Node.js на основе префиксного дерева",
|
|
5
5
|
"author": "Mikhail Evstropov <e22m4u@yandex.ru>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@e22m4u/js-debug": "~0.3.1",
|
|
42
42
|
"@e22m4u/js-format": "~0.2.0",
|
|
43
|
-
"@e22m4u/js-path-trie": "~0.0.
|
|
44
|
-
"@e22m4u/js-service": "~0.4.
|
|
43
|
+
"@e22m4u/js-path-trie": "~0.0.12",
|
|
44
|
+
"@e22m4u/js-service": "~0.4.3",
|
|
45
45
|
"debug": "~4.4.3",
|
|
46
46
|
"http-errors": "~2.0.0",
|
|
47
47
|
"statuses": "~2.0.2"
|
|
@@ -49,22 +49,22 @@
|
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@commitlint/cli": "~20.1.0",
|
|
51
51
|
"@commitlint/config-conventional": "~20.0.0",
|
|
52
|
-
"@eslint/js": "~9.
|
|
52
|
+
"@eslint/js": "~9.37.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
57
|
"esbuild": "~0.25.10",
|
|
58
|
-
"eslint": "~9.
|
|
58
|
+
"eslint": "~9.37.0",
|
|
59
59
|
"eslint-config-prettier": "~10.1.8",
|
|
60
60
|
"eslint-plugin-chai-expect": "~3.1.0",
|
|
61
|
-
"eslint-plugin-jsdoc": "~
|
|
62
|
-
"eslint-plugin-mocha": "~11.
|
|
61
|
+
"eslint-plugin-jsdoc": "~61.1.1",
|
|
62
|
+
"eslint-plugin-mocha": "~11.2.0",
|
|
63
63
|
"globals": "~16.4.0",
|
|
64
64
|
"husky": "~9.1.7",
|
|
65
|
-
"mocha": "~11.7.
|
|
65
|
+
"mocha": "~11.7.4",
|
|
66
66
|
"prettier": "~3.6.2",
|
|
67
67
|
"rimraf": "~6.0.1",
|
|
68
|
-
"typescript": "~5.9.
|
|
68
|
+
"typescript": "~5.9.3"
|
|
69
69
|
}
|
|
70
70
|
}
|
package/src/trie-router.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import {ServerResponse} from 'http';
|
|
2
|
+
import {IncomingMessage} from 'http';
|
|
1
3
|
import {HookType} from './hooks/index.js';
|
|
2
|
-
import {isPromise
|
|
4
|
+
import {isPromise} from './utils/index.js';
|
|
3
5
|
import {HookInvoker} from './hooks/index.js';
|
|
4
6
|
import {DataSender} from './senders/index.js';
|
|
5
7
|
import {HookRegistry} from './hooks/index.js';
|
|
6
8
|
import {ErrorSender} from './senders/index.js';
|
|
9
|
+
import {isResponseSent} from './utils/index.js';
|
|
7
10
|
import {RequestParser} from './parsers/index.js';
|
|
8
11
|
import {RouteRegistry} from './route-registry.js';
|
|
9
12
|
import {RequestContext} from './request-context.js';
|
|
@@ -94,8 +97,12 @@ export class TrieRouter extends DebuggableService {
|
|
|
94
97
|
const container = new ServiceContainer(this.container);
|
|
95
98
|
const context = new RequestContext(container, req, res);
|
|
96
99
|
// регистрация контекста запроса в сервис-контейнере
|
|
97
|
-
// для
|
|
100
|
+
// для доступа через container.getRegistered(RequestContext)
|
|
98
101
|
container.set(RequestContext, context);
|
|
102
|
+
// регистрация текущего экземпляра IncomingMessage
|
|
103
|
+
// и ServerResponse в сервис-контейнере запроса
|
|
104
|
+
container.set(IncomingMessage, req);
|
|
105
|
+
container.set(ServerResponse, res);
|
|
99
106
|
// запись параметров пути в контекст запроса,
|
|
100
107
|
// так как они были определены в момент
|
|
101
108
|
// поиска подходящего роута
|
package/src/trie-router.spec.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import {Route} from './route.js';
|
|
2
2
|
import {expect} from './chai.js';
|
|
3
|
+
import {ServerResponse} from 'http';
|
|
4
|
+
import {IncomingMessage} from 'http';
|
|
3
5
|
import {HttpMethod} from './route.js';
|
|
4
6
|
import {HookType} from './hooks/index.js';
|
|
5
7
|
import {TrieRouter} from './trie-router.js';
|
|
@@ -473,6 +475,38 @@ describe('TrieRouter', function () {
|
|
|
473
475
|
router.requestListener(req, res);
|
|
474
476
|
});
|
|
475
477
|
|
|
478
|
+
it('should register the IncomingMessage in the request-scope ServiceContainer', function (done) {
|
|
479
|
+
const router = new TrieRouter();
|
|
480
|
+
const req = createRequestMock();
|
|
481
|
+
const res = createResponseMock();
|
|
482
|
+
router.defineRoute({
|
|
483
|
+
method: HttpMethod.GET,
|
|
484
|
+
path: '/',
|
|
485
|
+
handler(ctx) {
|
|
486
|
+
const result = ctx.container.getRegistered(IncomingMessage);
|
|
487
|
+
expect(result).to.be.eq(req);
|
|
488
|
+
done();
|
|
489
|
+
},
|
|
490
|
+
});
|
|
491
|
+
router.requestListener(req, res);
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
it('should register the ServerResponse in the request-scope ServiceContainer', function (done) {
|
|
495
|
+
const router = new TrieRouter();
|
|
496
|
+
const req = createRequestMock();
|
|
497
|
+
const res = createResponseMock();
|
|
498
|
+
router.defineRoute({
|
|
499
|
+
method: HttpMethod.GET,
|
|
500
|
+
path: '/',
|
|
501
|
+
handler(ctx) {
|
|
502
|
+
const result = ctx.container.getRegistered(ServerResponse);
|
|
503
|
+
expect(result).to.be.eq(res);
|
|
504
|
+
done();
|
|
505
|
+
},
|
|
506
|
+
});
|
|
507
|
+
router.requestListener(req, res);
|
|
508
|
+
});
|
|
509
|
+
|
|
476
510
|
it('should send parsing error response instead of throwing error', async function () {
|
|
477
511
|
const router = new TrieRouter();
|
|
478
512
|
router.defineRoute({
|