@venok/http 1.0.1-canary.5 → 2.0.0
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/constants.js +33 -0
- package/dist/decorators/controller.decorator.js +45 -0
- package/dist/decorators/header.decorator.js +28 -0
- package/dist/decorators/http-code.decorator.js +22 -0
- package/dist/decorators/http-params.decorator.js +63 -0
- package/dist/decorators/method.decorator.js +57 -0
- package/dist/decorators/redirect.decorator.js +28 -0
- package/dist/decorators/version.decorator.js +31 -0
- package/dist/enums/method.enum.js +32 -0
- package/dist/enums/paramtypes.enum.js +33 -0
- package/dist/enums/status.enum.js +71 -0
- package/dist/enums/version-type.enum.js +27 -0
- package/dist/exceptions/bad-gateway.exception.js +29 -0
- package/dist/exceptions/bad-request.exception.js +29 -0
- package/dist/exceptions/conflict.exception.js +29 -0
- package/dist/exceptions/expectation-failed.exception.js +29 -0
- package/dist/exceptions/failed-dependency.exception.js +29 -0
- package/dist/exceptions/forbidden.exception.js +29 -0
- package/dist/exceptions/gateway-timeout.exception.js +29 -0
- package/dist/exceptions/gone.exception.js +29 -0
- package/dist/exceptions/http-version-not-supported.exception.js +29 -0
- package/dist/exceptions/http.exception.js +94 -0
- package/dist/exceptions/im-a-teapot.exception.js +29 -0
- package/dist/exceptions/internal-server-error.exception.js +29 -0
- package/dist/exceptions/length-required.exception.js +29 -0
- package/dist/exceptions/method-not-allowed.exception.js +29 -0
- package/dist/exceptions/misdirected.exception.js +29 -0
- package/dist/exceptions/not-acceptable.exception.js +29 -0
- package/dist/exceptions/not-found.exception.js +29 -0
- package/dist/exceptions/not-implemented.exception.js +29 -0
- package/dist/exceptions/payload-too-large.exception.js +29 -0
- package/dist/exceptions/payment-required.exception.js +29 -0
- package/dist/exceptions/precondition-failed.exception.js +29 -0
- package/dist/exceptions/precondition-required.exception.js +29 -0
- package/dist/exceptions/proxy-authentication-required.exception.js +29 -0
- package/dist/exceptions/request-timeout.exception.js +29 -0
- package/dist/exceptions/requested-range-not-satisfiable.exception.js +29 -0
- package/dist/exceptions/service-unavailable.exception.js +29 -0
- package/dist/exceptions/too-many-requests.exception.js +29 -0
- package/dist/exceptions/unauthorized.exception.js +29 -0
- package/dist/exceptions/unprocessable-entity.exception.js +29 -0
- package/dist/exceptions/unsupported-media-type.exception.js +29 -0
- package/dist/exceptions/uri-too-long.exception.js +29 -0
- package/dist/filters/context.js +28 -0
- package/dist/filters/filter.js +56 -0
- package/dist/helpers/discovery.helper.js +69 -0
- package/dist/helpers/messages.helper.js +41 -0
- package/dist/helpers/middleware.helper.js +69 -0
- package/dist/helpers/path.helper.js +53 -0
- package/dist/helpers/route.helper.js +54 -0
- package/dist/http/adapter.js +294 -0
- package/dist/http/config.js +67 -0
- package/dist/http/configurable-module.js +26 -0
- package/dist/http/context.js +117 -0
- package/dist/http/explorer.js +133 -0
- package/dist/http/module.js +35 -0
- package/dist/http/starter-module.js +85 -0
- package/dist/index.d.ts +2117 -0
- package/dist/index.js +82 -0
- package/dist/interfaces/adapter.interface.js +0 -0
- package/dist/interfaces/exception.interface.js +0 -0
- package/dist/interfaces/index.js +7 -0
- package/dist/interfaces/middleware/config-proxy.interface.js +0 -0
- package/dist/interfaces/middleware/consumer.interface.js +0 -0
- package/dist/interfaces/middleware/index.js +3 -0
- package/dist/interfaces/options.interface.js +0 -0
- package/dist/interfaces/prefix.interface.js +0 -0
- package/dist/interfaces/router/definition.interface.js +0 -0
- package/dist/interfaces/router/exclude-route.interface.js +0 -0
- package/dist/interfaces/router/index.js +7 -0
- package/dist/interfaces/router/info.interface.js +0 -0
- package/dist/interfaces/router/path-metadata.interface.js +0 -0
- package/dist/interfaces/router/tree.interface.js +0 -0
- package/dist/interfaces/router/version.interface.js +21 -0
- package/dist/middleware/builder.js +96 -0
- package/dist/middleware/module.js +22 -0
- package/dist/middleware/routes-mapper.js +107 -0
- package/dist/middleware/service.js +48 -0
- package/dist/middleware/tree.js +91 -0
- package/dist/router/finder.js +64 -0
- package/dist/router/module.js +89 -0
- package/dist/router/path-factory.js +110 -0
- package/dist/symbols.js +33 -0
- package/package.json +41 -46
- package/adapter/adapter.d.ts +0 -57
- package/adapter/adapter.js +0 -58
- package/adapter/host.d.ts +0 -27
- package/adapter/host.js +0 -33
- package/application/application.d.ts +0 -18
- package/application/application.js +0 -51
- package/application/config.d.ts +0 -16
- package/application/config.js +0 -47
- package/application/http.module-defenition.d.ts +0 -8
- package/application/http.module-defenition.js +0 -6
- package/application/http.module.d.ts +0 -3
- package/application/http.module.js +0 -21
- package/application/http.service.d.ts +0 -11
- package/application/http.service.js +0 -43
- package/application/starter.d.ts +0 -41
- package/application/starter.js +0 -140
- package/constants.d.ts +0 -12
- package/constants.js +0 -15
- package/context/context.d.ts +0 -56
- package/context/context.js +0 -102
- package/context/response.controller.d.ts +0 -30
- package/context/response.controller.js +0 -86
- package/decorators/controller.decorator.d.ts +0 -82
- package/decorators/controller.decorator.js +0 -53
- package/decorators/header.decorator.d.ts +0 -12
- package/decorators/header.decorator.js +0 -23
- package/decorators/http-code.decorator.d.ts +0 -9
- package/decorators/http-code.decorator.js +0 -19
- package/decorators/index.d.ts +0 -9
- package/decorators/index.js +0 -25
- package/decorators/redirect.decorator.d.ts +0 -6
- package/decorators/redirect.decorator.js +0 -16
- package/decorators/render.decorator.d.ts +0 -10
- package/decorators/render.decorator.js +0 -20
- package/decorators/request-mapping.decorator.d.ts +0 -78
- package/decorators/request-mapping.decorator.js +0 -98
- package/decorators/route-params.decorator.d.ts +0 -378
- package/decorators/route-params.decorator.js +0 -227
- package/decorators/sse.decorator.d.ts +0 -6
- package/decorators/sse.decorator.js +0 -20
- package/decorators/version.decorator.d.ts +0 -7
- package/decorators/version.decorator.js +0 -20
- package/enums/http-status.enum.d.ts +0 -53
- package/enums/http-status.enum.js +0 -57
- package/enums/index.d.ts +0 -4
- package/enums/index.js +0 -20
- package/enums/request-method.enum.d.ts +0 -11
- package/enums/request-method.enum.js +0 -15
- package/enums/route-paramtypes.enum.d.ts +0 -14
- package/enums/route-paramtypes.enum.js +0 -18
- package/enums/version-type.enum.d.ts +0 -9
- package/enums/version-type.enum.js +0 -13
- package/errors/bad-gateway.exception.d.ts +0 -33
- package/errors/bad-gateway.exception.js +0 -41
- package/errors/bad-request.exception.d.ts +0 -33
- package/errors/bad-request.exception.js +0 -41
- package/errors/conflict.exception.d.ts +0 -33
- package/errors/conflict.exception.js +0 -41
- package/errors/forbidden.exception.d.ts +0 -33
- package/errors/forbidden.exception.js +0 -41
- package/errors/gateway-timeout.exception.d.ts +0 -33
- package/errors/gateway-timeout.exception.js +0 -41
- package/errors/gone.exception.d.ts +0 -33
- package/errors/gone.exception.js +0 -41
- package/errors/http-version-not-supported.exception.d.ts +0 -33
- package/errors/http-version-not-supported.exception.js +0 -41
- package/errors/http.exception.d.ts +0 -79
- package/errors/http.exception.js +0 -123
- package/errors/im-a-teapot.exception.d.ts +0 -36
- package/errors/im-a-teapot.exception.js +0 -44
- package/errors/index.d.ts +0 -11
- package/errors/index.js +0 -27
- package/errors/internal-server-error.exception.d.ts +0 -33
- package/errors/internal-server-error.exception.js +0 -41
- package/errors/invalid-middleware-configuration.exception.d.ts +0 -4
- package/errors/invalid-middleware-configuration.exception.js +0 -11
- package/errors/invalid-middleware.exception.d.ts +0 -4
- package/errors/invalid-middleware.exception.js +0 -11
- package/errors/not-found.exception.d.ts +0 -33
- package/errors/not-found.exception.js +0 -41
- package/errors/unknown-request-mapping.exception.d.ts +0 -5
- package/errors/unknown-request-mapping.exception.js +0 -11
- package/exceptions/messages.d.ts +0 -4
- package/exceptions/messages.js +0 -13
- package/explorers/path.explorer.d.ts +0 -8
- package/explorers/path.explorer.js +0 -38
- package/explorers/router.explorer.d.ts +0 -51
- package/explorers/router.explorer.js +0 -195
- package/factory/context-id.factory.d.ts +0 -41
- package/factory/context-id.factory.js +0 -52
- package/factory/index.d.ts +0 -4
- package/factory/index.js +0 -20
- package/factory/method.factory.d.ts +0 -5
- package/factory/method.factory.js +0 -30
- package/factory/params.factory.d.ts +0 -5
- package/factory/params.factory.js +0 -39
- package/factory/path.factory.d.ts +0 -13
- package/factory/path.factory.js +0 -95
- package/filters/context.d.ts +0 -9
- package/filters/context.js +0 -15
- package/filters/filter.d.ts +0 -22
- package/filters/filter.js +0 -78
- package/helpers/adapter.helper.d.ts +0 -27
- package/helpers/adapter.helper.js +0 -37
- package/helpers/exclude-route.helper.d.ts +0 -4
- package/helpers/exclude-route.helper.js +0 -18
- package/helpers/flatten-routes.helper.d.ts +0 -5
- package/helpers/flatten-routes.helper.js +0 -27
- package/helpers/index.d.ts +0 -6
- package/helpers/index.js +0 -22
- package/helpers/messages.helper.d.ts +0 -6
- package/helpers/messages.helper.js +0 -25
- package/helpers/path.helper.d.ts +0 -3
- package/helpers/path.helper.js +0 -13
- package/helpers/sse.helper.d.ts +0 -45
- package/helpers/sse.helper.js +0 -83
- package/index.d.ts +0 -1
- package/index.js +0 -3
- package/interfaces/http/cors.interface.d.ts +0 -58
- package/interfaces/http/cors.interface.js +0 -2
- package/interfaces/http/exception.interface.d.ts +0 -6
- package/interfaces/http/exception.interface.js +0 -2
- package/interfaces/http/exclude-route.interface.d.ts +0 -15
- package/interfaces/http/exclude-route.interface.js +0 -2
- package/interfaces/http/index.d.ts +0 -10
- package/interfaces/http/index.js +0 -26
- package/interfaces/http/message-event.interface.d.ts +0 -6
- package/interfaces/http/message-event.interface.js +0 -2
- package/interfaces/http/module.inteface.d.ts +0 -5
- package/interfaces/http/module.inteface.js +0 -2
- package/interfaces/http/options.interface.d.ts +0 -127
- package/interfaces/http/options.interface.js +0 -2
- package/interfaces/http/path-metadata.interface.d.ts +0 -31
- package/interfaces/http/path-metadata.interface.js +0 -2
- package/interfaces/http/prefix-options.interface.d.ts +0 -7
- package/interfaces/http/prefix-options.interface.js +0 -2
- package/interfaces/http/raw-request.d.ts +0 -4
- package/interfaces/http/raw-request.js +0 -2
- package/interfaces/http/routes.interface.d.ts +0 -7
- package/interfaces/http/routes.interface.js +0 -2
- package/interfaces/http/server.interface.d.ts +0 -54
- package/interfaces/http/server.interface.js +0 -2
- package/interfaces/index.d.ts +0 -3
- package/interfaces/index.js +0 -19
- package/interfaces/middleware/config-proxy.interface.d.ts +0 -23
- package/interfaces/middleware/config-proxy.interface.js +0 -2
- package/interfaces/middleware/configuration.interface.d.ts +0 -12
- package/interfaces/middleware/configuration.interface.js +0 -2
- package/interfaces/middleware/consumer.interface.d.ts +0 -16
- package/interfaces/middleware/consumer.interface.js +0 -2
- package/interfaces/middleware/index.d.ts +0 -4
- package/interfaces/middleware/index.js +0 -20
- package/interfaces/middleware/middleware.interface.d.ts +0 -7
- package/interfaces/middleware/middleware.interface.js +0 -2
- package/interfaces/router/callback-paramtypes.interface.d.ts +0 -1
- package/interfaces/router/callback-paramtypes.interface.js +0 -2
- package/interfaces/router/definition.interface.d.ts +0 -10
- package/interfaces/router/definition.interface.js +0 -2
- package/interfaces/router/index.d.ts +0 -3
- package/interfaces/router/index.js +0 -19
- package/interfaces/router/version-options.interface.d.ts +0 -92
- package/interfaces/router/version-options.interface.js +0 -9
- package/middleware/builder.d.ts +0 -15
- package/middleware/builder.js +0 -78
- package/middleware/container.d.ts +0 -13
- package/middleware/container.js +0 -50
- package/middleware/extractor.d.ts +0 -15
- package/middleware/extractor.js +0 -50
- package/middleware/index.d.ts +0 -1
- package/middleware/index.js +0 -17
- package/middleware/module.d.ts +0 -33
- package/middleware/module.js +0 -180
- package/middleware/resolver.d.ts +0 -10
- package/middleware/resolver.js +0 -27
- package/middleware/routes-mapper.d.ts +0 -19
- package/middleware/routes-mapper.js +0 -111
- package/middleware/utils.d.ts +0 -8
- package/middleware/utils.js +0 -86
- package/router/module.d.ts +0 -18
- package/router/module.js +0 -88
- package/router/resolver.d.ts +0 -31
- package/router/resolver.js +0 -128
- package/storage/http-instance.storage.d.ts +0 -9
- package/storage/http-instance.storage.js +0 -19
- package/stream/index.d.ts +0 -1
- package/stream/index.js +0 -17
- package/stream/interfaces/index.d.ts +0 -2
- package/stream/interfaces/index.js +0 -18
- package/stream/interfaces/streamable-handler-response.interface.d.ts +0 -12
- package/stream/interfaces/streamable-handler-response.interface.js +0 -2
- package/stream/interfaces/streamable-options.interface.d.ts +0 -10
- package/stream/interfaces/streamable-options.interface.js +0 -2
- package/stream/streamable-file.d.ts +0 -22
- package/stream/streamable-file.js +0 -55
- package/test/context/response.controller.spec.d.ts +0 -1
- package/test/context/response.controller.spec.js +0 -328
- package/test/decorators/controller.decorator.spec.d.ts +0 -1
- package/test/decorators/controller.decorator.spec.js +0 -113
- package/test/decorators/header.decorator.spec.d.ts +0 -1
- package/test/decorators/header.decorator.spec.js +0 -33
- package/test/decorators/http-code.decorator.spec.d.ts +0 -1
- package/test/decorators/http-code.decorator.spec.js +0 -30
- package/test/decorators/redirect.decorator.spec.d.ts +0 -1
- package/test/decorators/redirect.decorator.spec.js +0 -36
- package/test/decorators/render.decorator.spec.d.ts +0 -1
- package/test/decorators/render.decorator.spec.js +0 -30
- package/test/decorators/request-mapping.decorator.spec.d.ts +0 -1
- package/test/decorators/request-mapping.decorator.spec.js +0 -85
- package/test/decorators/route-params.decorator.spec.d.ts +0 -1
- package/test/decorators/route-params.decorator.spec.js +0 -493
- package/test/decorators/sse.decorator.spec.d.ts +0 -1
- package/test/decorators/sse.decorator.spec.js +0 -35
- package/test/decorators/version.decorator.spec.d.ts +0 -1
- package/test/decorators/version.decorator.spec.js +0 -43
- package/test/exceptions/handler.spec.d.ts +0 -1
- package/test/exceptions/handler.spec.js +0 -145
- package/test/exceptions/proxy.spec.d.ts +0 -1
- package/test/exceptions/proxy.spec.js +0 -74
- package/test/explorers/path.explorer.spec.d.ts +0 -1
- package/test/explorers/path.explorer.spec.js +0 -190
- package/test/explorers/router.explorer.spec.d.ts +0 -1
- package/test/explorers/router.explorer.spec.js +0 -206
- package/test/factory/method.factory.spec.d.ts +0 -1
- package/test/factory/method.factory.spec.js +0 -33
- package/test/factory/params.factory.spec.d.ts +0 -1
- package/test/factory/params.factory.spec.js +0 -104
- package/test/factory/path.factory.spec.d.ts +0 -1
- package/test/factory/path.factory.spec.js +0 -260
- package/test/filters/context.spec.d.ts +0 -1
- package/test/filters/context.spec.js +0 -96
- package/test/filters/filter.spec.d.ts +0 -1
- package/test/filters/filter.spec.js +0 -96
- package/test/helpers/flatten-routes.helper.spec.d.ts +0 -1
- package/test/helpers/flatten-routes.helper.spec.js +0 -131
- package/test/helpers/sse.helper.spec.d.ts +0 -1
- package/test/helpers/sse.helper.spec.js +0 -132
- package/test/middleware/builder.spec.d.ts +0 -1
- package/test/middleware/builder.spec.js +0 -235
- package/test/middleware/container.spec.d.ts +0 -1
- package/test/middleware/container.spec.js +0 -81
- package/test/middleware/module.spec.d.ts +0 -1
- package/test/middleware/module.spec.js +0 -206
- package/test/middleware/route-info-path-extractor.spec.d.ts +0 -1
- package/test/middleware/route-info-path-extractor.spec.js +0 -123
- package/test/middleware/routes-mapper.spec.d.ts +0 -1
- package/test/middleware/routes-mapper.spec.js +0 -162
- package/test/middleware/utils.spec.d.ts +0 -1
- package/test/middleware/utils.spec.js +0 -132
- package/test/router/module.spec.d.ts +0 -1
- package/test/router/module.spec.js +0 -40
- package/test/router/resolver.spec.d.ts +0 -1
- package/test/router/resolver.spec.js +0 -326
- package/tsconfig.tsbuildinfo +0 -1
package/dist/index.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/index.ts
|
|
18
|
+
import"reflect-metadata";
|
|
19
|
+
|
|
20
|
+
export * from "./decorators/controller.decorator.js";
|
|
21
|
+
export * from "./decorators/header.decorator.js";
|
|
22
|
+
export * from "./decorators/http-code.decorator.js";
|
|
23
|
+
export * from "./decorators/http-params.decorator.js";
|
|
24
|
+
export * from "./decorators/method.decorator.js";
|
|
25
|
+
export * from "./decorators/redirect.decorator.js";
|
|
26
|
+
export * from "./decorators/version.decorator.js";
|
|
27
|
+
export * from "./enums/method.enum.js";
|
|
28
|
+
export * from "./enums/paramtypes.enum.js";
|
|
29
|
+
export * from "./enums/status.enum.js";
|
|
30
|
+
export * from "./enums/version-type.enum.js";
|
|
31
|
+
export * from "./exceptions/bad-gateway.exception.js";
|
|
32
|
+
export * from "./exceptions/bad-request.exception.js";
|
|
33
|
+
export * from "./exceptions/conflict.exception.js";
|
|
34
|
+
export * from "./exceptions/expectation-failed.exception.js";
|
|
35
|
+
export * from "./exceptions/failed-dependency.exception.js";
|
|
36
|
+
export * from "./exceptions/forbidden.exception.js";
|
|
37
|
+
export * from "./exceptions/gateway-timeout.exception.js";
|
|
38
|
+
export * from "./exceptions/gone.exception.js";
|
|
39
|
+
export * from "./exceptions/http-version-not-supported.exception.js";
|
|
40
|
+
export * from "./exceptions/http.exception.js";
|
|
41
|
+
export * from "./exceptions/im-a-teapot.exception.js";
|
|
42
|
+
export * from "./exceptions/internal-server-error.exception.js";
|
|
43
|
+
export * from "./exceptions/length-required.exception.js";
|
|
44
|
+
export * from "./exceptions/method-not-allowed.exception.js";
|
|
45
|
+
export * from "./exceptions/misdirected.exception.js";
|
|
46
|
+
export * from "./exceptions/not-acceptable.exception.js";
|
|
47
|
+
export * from "./exceptions/not-found.exception.js";
|
|
48
|
+
export * from "./exceptions/not-implemented.exception.js";
|
|
49
|
+
export * from "./exceptions/payload-too-large.exception.js";
|
|
50
|
+
export * from "./exceptions/payment-required.exception.js";
|
|
51
|
+
export * from "./exceptions/precondition-failed.exception.js";
|
|
52
|
+
export * from "./exceptions/precondition-required.exception.js";
|
|
53
|
+
export * from "./exceptions/proxy-authentication-required.exception.js";
|
|
54
|
+
export * from "./exceptions/request-timeout.exception.js";
|
|
55
|
+
export * from "./exceptions/requested-range-not-satisfiable.exception.js";
|
|
56
|
+
export * from "./exceptions/service-unavailable.exception.js";
|
|
57
|
+
export * from "./exceptions/too-many-requests.exception.js";
|
|
58
|
+
export * from "./exceptions/unauthorized.exception.js";
|
|
59
|
+
export * from "./exceptions/unprocessable-entity.exception.js";
|
|
60
|
+
export * from "./exceptions/unsupported-media-type.exception.js";
|
|
61
|
+
export * from "./exceptions/uri-too-long.exception.js";
|
|
62
|
+
export * from "./filters/filter.js";
|
|
63
|
+
export * from "./helpers/middleware.helper.js";
|
|
64
|
+
export * from "./helpers/path.helper.js";
|
|
65
|
+
export * from "./helpers/route.helper.js";
|
|
66
|
+
export * from "./http/adapter.js";
|
|
67
|
+
export * from "./http/config.js";
|
|
68
|
+
export * from "./http/module.js";
|
|
69
|
+
export * from "./interfaces/index.js";
|
|
70
|
+
export * from "./middleware/module.js";
|
|
71
|
+
export * from "./router/module.js";
|
|
72
|
+
export * from "./constants.js";
|
|
73
|
+
import {
|
|
74
|
+
VENOK_APPLY_ROUTES_TO_INSTANCE,
|
|
75
|
+
VENOK_ADAPTER_RESPONSE,
|
|
76
|
+
VENOK_ADAPTER_TRANSFORM_NATIVE_ARGS_TO_CONTEXT
|
|
77
|
+
} from "./symbols.js";
|
|
78
|
+
export {
|
|
79
|
+
VENOK_APPLY_ROUTES_TO_INSTANCE,
|
|
80
|
+
VENOK_ADAPTER_TRANSFORM_NATIVE_ARGS_TO_CONTEXT,
|
|
81
|
+
VENOK_ADAPTER_RESPONSE
|
|
82
|
+
};
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// packages/http/src/interfaces/index.ts
|
|
2
|
+
export * from "../interfaces/middleware/index.js";
|
|
3
|
+
export * from "../interfaces/router/index.js";
|
|
4
|
+
export * from "./adapter.interface.js";
|
|
5
|
+
export * from "./exception.interface.js";
|
|
6
|
+
export * from "./options.interface.js";
|
|
7
|
+
export * from "./prefix.interface.js";
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// packages/http/src/interfaces/router/index.ts
|
|
2
|
+
export * from "./definition.interface.js";
|
|
3
|
+
export * from "./exclude-route.interface.js";
|
|
4
|
+
export * from "./info.interface.js";
|
|
5
|
+
export * from "./path-metadata.interface.js";
|
|
6
|
+
export * from "./tree.interface.js";
|
|
7
|
+
export * from "./version.interface.js";
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/interfaces/router/version.interface.ts
|
|
18
|
+
var VERSION_NEUTRAL = Symbol("VERSION_NEUTRAL");
|
|
19
|
+
export {
|
|
20
|
+
VERSION_NEUTRAL
|
|
21
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/middleware/builder.ts
|
|
18
|
+
import { flatten } from "@venok/core";
|
|
19
|
+
import { filterMiddleware } from "../helpers/middleware.helper.js";
|
|
20
|
+
import { stripEndSlash } from "../helpers/path.helper.js";
|
|
21
|
+
|
|
22
|
+
class MiddlewareBuilder {
|
|
23
|
+
middlewareRoutesMapper;
|
|
24
|
+
httpAdapter;
|
|
25
|
+
middlewareCollection = new Set;
|
|
26
|
+
constructor(middlewareRoutesMapper, httpAdapter) {
|
|
27
|
+
this.middlewareRoutesMapper = middlewareRoutesMapper;
|
|
28
|
+
this.httpAdapter = httpAdapter;
|
|
29
|
+
}
|
|
30
|
+
apply(...middleware) {
|
|
31
|
+
return new MiddlewareBuilder.ConfigProxy(this, flatten(middleware));
|
|
32
|
+
}
|
|
33
|
+
build() {
|
|
34
|
+
return [...this.middlewareCollection];
|
|
35
|
+
}
|
|
36
|
+
getHttpAdapter() {
|
|
37
|
+
return this.httpAdapter;
|
|
38
|
+
}
|
|
39
|
+
static ConfigProxy = class {
|
|
40
|
+
builder;
|
|
41
|
+
middleware;
|
|
42
|
+
excludedRoutes = [];
|
|
43
|
+
constructor(builder, middleware) {
|
|
44
|
+
this.builder = builder;
|
|
45
|
+
this.middleware = middleware;
|
|
46
|
+
}
|
|
47
|
+
getExcludedRoutes() {
|
|
48
|
+
return this.excludedRoutes;
|
|
49
|
+
}
|
|
50
|
+
exclude(...routes) {
|
|
51
|
+
this.excludedRoutes = [
|
|
52
|
+
...this.excludedRoutes,
|
|
53
|
+
...this.getRoutesFlatList(routes)
|
|
54
|
+
];
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
to(...routes) {
|
|
58
|
+
const { middlewareCollection } = this.builder;
|
|
59
|
+
const flattedRoutes = this.getRoutesFlatList(routes);
|
|
60
|
+
const forRoutes = this.removeOverlappedRoutes(flattedRoutes);
|
|
61
|
+
const configuration = {
|
|
62
|
+
middleware: filterMiddleware(this.middleware),
|
|
63
|
+
to: forRoutes,
|
|
64
|
+
exclude: this.excludedRoutes
|
|
65
|
+
};
|
|
66
|
+
middlewareCollection.add(configuration);
|
|
67
|
+
return this.builder;
|
|
68
|
+
}
|
|
69
|
+
getRoutesFlatList(routes) {
|
|
70
|
+
const { middlewareRoutesMapper } = this.builder;
|
|
71
|
+
return flatten(routes.map((route) => middlewareRoutesMapper.mapRouteToRouteInfo(route)));
|
|
72
|
+
}
|
|
73
|
+
removeOverlappedRoutes(routes) {
|
|
74
|
+
const regexMatchParams = /(:[^\/]*)/g;
|
|
75
|
+
const wildcard = "([^/]*)";
|
|
76
|
+
const routesWithRegex = routes.filter((route) => route.path.includes(":")).map((route) => ({
|
|
77
|
+
method: route.method,
|
|
78
|
+
path: route.path,
|
|
79
|
+
regex: new RegExp("^(" + route.path.replace(regexMatchParams, wildcard) + ")$", "g")
|
|
80
|
+
}));
|
|
81
|
+
return routes.filter((route) => {
|
|
82
|
+
const isOverlapped = (item) => {
|
|
83
|
+
if (route.method !== item.method)
|
|
84
|
+
return false;
|
|
85
|
+
const normalizedRoutePath = stripEndSlash(route.path);
|
|
86
|
+
return normalizedRoutePath !== item.path && item.regex.test(normalizedRoutePath);
|
|
87
|
+
};
|
|
88
|
+
const routeMatch = routesWithRegex.find(isOverlapped);
|
|
89
|
+
return routeMatch === undefined;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export {
|
|
95
|
+
MiddlewareBuilder
|
|
96
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/middleware/module.ts
|
|
18
|
+
class HttpMiddlewareModule {
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
HttpMiddlewareModule
|
|
22
|
+
};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/middleware/routes-mapper.ts
|
|
18
|
+
import { isString, MetadataScanner, MODULE_PATH, Reflector } from "@venok/core";
|
|
19
|
+
import { RoutePathFactory } from "../router/path-factory.js";
|
|
20
|
+
import { RouteFinder } from "../router/finder.js";
|
|
21
|
+
import { addLeadingSlash } from "../helpers/path.helper.js";
|
|
22
|
+
import { Controller } from "../decorators/controller.decorator.js";
|
|
23
|
+
import { targetModulesByContainer } from "../router/module.js";
|
|
24
|
+
import { HttpMethod } from "../enums/method.enum.js";
|
|
25
|
+
|
|
26
|
+
class MiddlewareRoutesMapper {
|
|
27
|
+
container;
|
|
28
|
+
httpConfig;
|
|
29
|
+
routeFinder;
|
|
30
|
+
routePathFactory;
|
|
31
|
+
constructor(container, httpConfig) {
|
|
32
|
+
this.container = container;
|
|
33
|
+
this.httpConfig = httpConfig;
|
|
34
|
+
this.routeFinder = new RouteFinder(new MetadataScanner);
|
|
35
|
+
this.routePathFactory = new RoutePathFactory(this.httpConfig);
|
|
36
|
+
}
|
|
37
|
+
mapRouteToRouteInfo(controllerOrRoute) {
|
|
38
|
+
if (isString(controllerOrRoute))
|
|
39
|
+
return this.getRouteInfoFromPath(controllerOrRoute);
|
|
40
|
+
return this.isRouteInfo(controllerOrRoute) ? this.getRouteInfoFromObject(controllerOrRoute) : this.getRouteInfoFromController(controllerOrRoute);
|
|
41
|
+
}
|
|
42
|
+
isRouteInfo(controllerOrRoute) {
|
|
43
|
+
return "path" in controllerOrRoute;
|
|
44
|
+
}
|
|
45
|
+
getRouteInfoFromPath(routePath) {
|
|
46
|
+
const globalPrefix = addLeadingSlash(this.httpConfig.getGlobalPrefix());
|
|
47
|
+
const path = this.routePathFactory.create({ methodPath: routePath, globalPrefix })[0];
|
|
48
|
+
return [{ path, method: HttpMethod.ALL }];
|
|
49
|
+
}
|
|
50
|
+
getRouteInfoFromObject(routeInfoObject) {
|
|
51
|
+
const globalPrefix = addLeadingSlash(this.httpConfig.getGlobalPrefix());
|
|
52
|
+
const paths = this.routePathFactory.create({
|
|
53
|
+
methodPath: routeInfoObject.path,
|
|
54
|
+
globalPrefix,
|
|
55
|
+
versioningOptions: this.httpConfig.getVersioning(),
|
|
56
|
+
methodVersion: routeInfoObject.version
|
|
57
|
+
});
|
|
58
|
+
return paths.map((path) => ({ path, method: routeInfoObject.method }));
|
|
59
|
+
}
|
|
60
|
+
getRouteInfoFromController(controller) {
|
|
61
|
+
const discovery = Reflector.reflector.get(Controller, controller);
|
|
62
|
+
const info = this.routeFinder.getControllerInfo(discovery, this.httpConfig);
|
|
63
|
+
const globalPrefix = addLeadingSlash(this.httpConfig.getGlobalPrefix());
|
|
64
|
+
const moduleRef = this.getHostModuleOfController(controller);
|
|
65
|
+
const modulePath = this.getModulePath(moduleRef?.metatype);
|
|
66
|
+
const routes = this.routeFinder.getControllerRoutes(Object.create(controller), controller.prototype);
|
|
67
|
+
const output = [];
|
|
68
|
+
info.prefixes.forEach((controllerPath) => {
|
|
69
|
+
routes.forEach((route) => {
|
|
70
|
+
route.paths.forEach((methodPath) => {
|
|
71
|
+
const metadata = {
|
|
72
|
+
modulePath,
|
|
73
|
+
globalPrefix,
|
|
74
|
+
methodPath,
|
|
75
|
+
controllerPath,
|
|
76
|
+
methodVersion: route.version,
|
|
77
|
+
controllerVersion: info.version,
|
|
78
|
+
versioningOptions: info.versioningOptions
|
|
79
|
+
};
|
|
80
|
+
const routeInfos = this.routePathFactory.create(metadata, route.requestMethod).map((endpoint) => ({ path: endpoint, method: route.requestMethod }));
|
|
81
|
+
output.push(...routeInfos);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
return output;
|
|
86
|
+
}
|
|
87
|
+
getHostModuleOfController(metatype) {
|
|
88
|
+
if (!metatype)
|
|
89
|
+
return;
|
|
90
|
+
const modulesContainer = this.container.getModules();
|
|
91
|
+
const moduleRefsSet = targetModulesByContainer.get(modulesContainer);
|
|
92
|
+
if (!moduleRefsSet)
|
|
93
|
+
return;
|
|
94
|
+
const modules = Array.from(modulesContainer.values()).filter((moduleRef) => moduleRefsSet.has(moduleRef));
|
|
95
|
+
return modules.find(({ injectables }) => injectables.has(metatype));
|
|
96
|
+
}
|
|
97
|
+
getModulePath(metatype) {
|
|
98
|
+
if (!metatype)
|
|
99
|
+
return;
|
|
100
|
+
const modulesContainer = this.container.getModules();
|
|
101
|
+
const modulePath = Reflect.getMetadata(MODULE_PATH + modulesContainer.applicationId, metatype);
|
|
102
|
+
return modulePath ?? Reflect.getMetadata(MODULE_PATH, metatype);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export {
|
|
106
|
+
MiddlewareRoutesMapper
|
|
107
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/middleware/service.ts
|
|
18
|
+
import { MiddlewareService } from "@venok/integration";
|
|
19
|
+
import { Inject, Injectable } from "@venok/core";
|
|
20
|
+
import { HttpConfig } from "../http/config.js";
|
|
21
|
+
import { MiddlewareRoutesMapper } from "../middleware/routes-mapper.js";
|
|
22
|
+
import { MiddlewareBuilder } from "../middleware/builder.js";
|
|
23
|
+
import { HttpExceptionFiltersContext } from "../filters/context.js";
|
|
24
|
+
import { VENOK_ADAPTER_ADD_MIDDLEWARE } from "../symbols.js";
|
|
25
|
+
class HttpMiddlewareService extends MiddlewareService {
|
|
26
|
+
routesMapper;
|
|
27
|
+
onModuleInit() {
|
|
28
|
+
this.exceptionsFilter = new HttpExceptionFiltersContext(this.container, this.container.applicationConfig);
|
|
29
|
+
this.routesMapper = new MiddlewareRoutesMapper(this.container, this.httpConfig);
|
|
30
|
+
}
|
|
31
|
+
getMiddlewareBuilder() {
|
|
32
|
+
return new MiddlewareBuilder(this.routesMapper, this.httpConfig.getHttpAdapterRef());
|
|
33
|
+
}
|
|
34
|
+
registerHandler(info, proxy, config) {
|
|
35
|
+
const adapter = this.httpConfig.getHttpAdapterRef();
|
|
36
|
+
adapter[VENOK_ADAPTER_ADD_MIDDLEWARE](info.path, { use: proxy, method: info.method, excludedPaths: config.exclude });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
__legacyDecorateClassTS([
|
|
40
|
+
Inject(HttpConfig),
|
|
41
|
+
__legacyMetadataTS("design:type", typeof HttpConfig === "undefined" ? Object : HttpConfig)
|
|
42
|
+
], HttpMiddlewareService.prototype, "httpConfig", undefined);
|
|
43
|
+
HttpMiddlewareService = __legacyDecorateClassTS([
|
|
44
|
+
Injectable()
|
|
45
|
+
], HttpMiddlewareService);
|
|
46
|
+
export {
|
|
47
|
+
HttpMiddlewareService
|
|
48
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/middleware/tree.ts
|
|
18
|
+
import { HttpMethod } from "../enums/method.enum.js";
|
|
19
|
+
var buildMiddlewareTree = (middlewares) => {
|
|
20
|
+
const root = { segment: "/", children: new Map, middlewares: [] };
|
|
21
|
+
for (const mw of middlewares) {
|
|
22
|
+
const parts = mw.path.split("/").filter(Boolean);
|
|
23
|
+
let current = root;
|
|
24
|
+
for (const part of parts) {
|
|
25
|
+
if (!current.children.has(part))
|
|
26
|
+
current.children.set(part, { segment: part, children: new Map, middlewares: [] });
|
|
27
|
+
current = current.children.get(part);
|
|
28
|
+
}
|
|
29
|
+
current.middlewares.push(mw);
|
|
30
|
+
}
|
|
31
|
+
return root;
|
|
32
|
+
};
|
|
33
|
+
var filterMiddlewaresByMethod = (middlewares, method) => {
|
|
34
|
+
return middlewares.map((middleware) => {
|
|
35
|
+
const handlers = middleware.handlers.filter((metadata) => metadata.method === method || metadata.method === HttpMethod.ALL);
|
|
36
|
+
if (handlers.length === 0)
|
|
37
|
+
return null;
|
|
38
|
+
return { path: middleware.path, handlers };
|
|
39
|
+
}).filter(Boolean);
|
|
40
|
+
};
|
|
41
|
+
var getMiddlewaresForPattern = (tree, pathPattern, method) => {
|
|
42
|
+
const parts = pathPattern.split("/").filter(Boolean);
|
|
43
|
+
const chain = [];
|
|
44
|
+
const visited = new Set;
|
|
45
|
+
function addMiddleware(node) {
|
|
46
|
+
if (!node.middlewares.length)
|
|
47
|
+
return;
|
|
48
|
+
const filtered = filterMiddlewaresByMethod(node.middlewares, method);
|
|
49
|
+
for (const middleware of filtered) {
|
|
50
|
+
if (!visited.has(middleware.path)) {
|
|
51
|
+
chain.push(middleware);
|
|
52
|
+
visited.add(middleware.path);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function traversePath(node, pathIndex) {
|
|
57
|
+
if (!node)
|
|
58
|
+
return;
|
|
59
|
+
addMiddleware(node);
|
|
60
|
+
if (pathIndex >= parts.length)
|
|
61
|
+
return;
|
|
62
|
+
const part = parts[pathIndex];
|
|
63
|
+
const wildcard = node.children.get("*");
|
|
64
|
+
if (wildcard && part !== "*") {
|
|
65
|
+
addMiddleware(wildcard);
|
|
66
|
+
traversePath(wildcard, pathIndex + 1);
|
|
67
|
+
}
|
|
68
|
+
const paramNode = Array.from(node.children.values()).find((c) => c.segment.startsWith(":"));
|
|
69
|
+
if (paramNode && !part.startsWith(":")) {
|
|
70
|
+
addMiddleware(paramNode);
|
|
71
|
+
traversePath(paramNode, pathIndex + 1);
|
|
72
|
+
}
|
|
73
|
+
const literalNode = node.children.get(part);
|
|
74
|
+
if (literalNode) {
|
|
75
|
+
traversePath(literalNode, pathIndex + 1);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (part.startsWith(":") && paramNode) {
|
|
79
|
+
traversePath(paramNode, pathIndex + 1);
|
|
80
|
+
} else if (part === "*" && wildcard) {
|
|
81
|
+
traversePath(wildcard, pathIndex + 1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
traversePath(tree, 0);
|
|
85
|
+
return chain;
|
|
86
|
+
};
|
|
87
|
+
export {
|
|
88
|
+
getMiddlewaresForPattern,
|
|
89
|
+
filterMiddlewaresByMethod,
|
|
90
|
+
buildMiddlewareTree
|
|
91
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var __legacyDecorateClassTS = function(decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
4
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else
|
|
6
|
+
for (var i = decorators.length - 1;i >= 0; i--)
|
|
7
|
+
if (d = decorators[i])
|
|
8
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
9
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10
|
+
};
|
|
11
|
+
var __legacyDecorateParamTS = (index, decorator) => (target, key) => decorator(target, key, index);
|
|
12
|
+
var __legacyMetadataTS = (k, v) => {
|
|
13
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
14
|
+
return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// packages/http/src/router/finder.ts
|
|
18
|
+
import { isString, isUndefined } from "@venok/core";
|
|
19
|
+
import { METHOD_METADATA, PATH_METADATA, VERSION_METADATA } from "../constants.js";
|
|
20
|
+
import { addLeadingSlash } from "../helpers/path.helper.js";
|
|
21
|
+
|
|
22
|
+
class RouteFinder {
|
|
23
|
+
metadataScanner;
|
|
24
|
+
constructor(metadataScanner) {
|
|
25
|
+
this.metadataScanner = metadataScanner;
|
|
26
|
+
}
|
|
27
|
+
getControllerInfo(discovery, httpConfig) {
|
|
28
|
+
const version = discovery.getVersion() ?? httpConfig.getVersioning()?.defaultVersion;
|
|
29
|
+
const host = discovery.getHost();
|
|
30
|
+
const prefixes = this.extractControllerPrefixes(discovery.getPrefixes());
|
|
31
|
+
const versioningOptions = httpConfig.getVersioning();
|
|
32
|
+
return { version, host, prefixes, versioningOptions };
|
|
33
|
+
}
|
|
34
|
+
extractControllerPrefixes(prefixes) {
|
|
35
|
+
if (isUndefined(prefixes))
|
|
36
|
+
return [];
|
|
37
|
+
if (Array.isArray(prefixes))
|
|
38
|
+
return prefixes.map((prefix) => addLeadingSlash(prefix));
|
|
39
|
+
return [addLeadingSlash(prefixes)];
|
|
40
|
+
}
|
|
41
|
+
getControllerRoutes(instance, prototype) {
|
|
42
|
+
const instancePrototype = isUndefined(prototype) ? Object.getPrototypeOf(instance) : prototype;
|
|
43
|
+
return this.metadataScanner.getAllMethodNames(instancePrototype).reduce((acc, method) => {
|
|
44
|
+
const route = this.exploreMethod(instance, instancePrototype, method);
|
|
45
|
+
if (route)
|
|
46
|
+
acc.push(route);
|
|
47
|
+
return acc;
|
|
48
|
+
}, []);
|
|
49
|
+
}
|
|
50
|
+
exploreMethod(instance, prototype, methodName) {
|
|
51
|
+
const targetCallback = instance[methodName];
|
|
52
|
+
const prototypeCallback = prototype[methodName];
|
|
53
|
+
const routePath = Reflect.getMetadata(PATH_METADATA, prototypeCallback);
|
|
54
|
+
if (isUndefined(routePath))
|
|
55
|
+
return null;
|
|
56
|
+
const requestMethod = Reflect.getMetadata(METHOD_METADATA, prototypeCallback);
|
|
57
|
+
const version = Reflect.getMetadata(VERSION_METADATA, prototypeCallback);
|
|
58
|
+
const paths = isString(routePath) ? [addLeadingSlash(routePath)] : routePath.map((p) => addLeadingSlash(p));
|
|
59
|
+
return { paths, requestMethod, targetCallback, methodName, version };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
RouteFinder
|
|
64
|
+
};
|