@venok/http 1.1.0 → 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/exceptions/messages.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.INVALID_MIDDLEWARE_MESSAGE = exports.INVALID_MIDDLEWARE_CONFIGURATION = exports.UNKNOWN_REQUEST_MAPPING = void 0;
|
|
4
|
-
const UNKNOWN_REQUEST_MAPPING = (metatype) => {
|
|
5
|
-
const className = metatype.name;
|
|
6
|
-
return className
|
|
7
|
-
? `An invalid controller has been detected. "${className}" does not have the @Controller() decorator but it is being listed in the "controllers" array of some module.`
|
|
8
|
-
: `An invalid controller has been detected. Perhaps, one of your controllers is missing the @Controller() decorator.`;
|
|
9
|
-
};
|
|
10
|
-
exports.UNKNOWN_REQUEST_MAPPING = UNKNOWN_REQUEST_MAPPING;
|
|
11
|
-
exports.INVALID_MIDDLEWARE_CONFIGURATION = `An invalid middleware configuration has been passed inside the module 'configure()' method.`;
|
|
12
|
-
const INVALID_MIDDLEWARE_MESSAGE = (text, name) => `The middleware doesn't provide the 'use' method (${name})`;
|
|
13
|
-
exports.INVALID_MIDDLEWARE_MESSAGE = INVALID_MIDDLEWARE_MESSAGE;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { MetadataScanner } from "@venok/core";
|
|
2
|
-
import { RouteDefinition } from "../interfaces";
|
|
3
|
-
export declare class PathsExplorer {
|
|
4
|
-
private readonly metadataScanner;
|
|
5
|
-
constructor(metadataScanner: MetadataScanner);
|
|
6
|
-
scanForPaths(instance: Object, prototype?: object): RouteDefinition[];
|
|
7
|
-
exploreMethodMetadata<T extends Record<string | symbol, any>>(instance: T, prototype: T, methodName: string): RouteDefinition | null;
|
|
8
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PathsExplorer = void 0;
|
|
4
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
6
|
-
const helpers_1 = require("../helpers");
|
|
7
|
-
class PathsExplorer {
|
|
8
|
-
constructor(metadataScanner) {
|
|
9
|
-
this.metadataScanner = metadataScanner;
|
|
10
|
-
}
|
|
11
|
-
scanForPaths(instance, prototype) {
|
|
12
|
-
const instancePrototype = (0, shared_helper_1.isUndefined)(prototype) ? Object.getPrototypeOf(instance) : prototype;
|
|
13
|
-
return this.metadataScanner.getAllMethodNames(instancePrototype).reduce((acc, method) => {
|
|
14
|
-
const route = this.exploreMethodMetadata(instance, instancePrototype, method);
|
|
15
|
-
if (route)
|
|
16
|
-
acc.push(route);
|
|
17
|
-
return acc;
|
|
18
|
-
}, []);
|
|
19
|
-
}
|
|
20
|
-
exploreMethodMetadata(instance, prototype, methodName) {
|
|
21
|
-
const instanceCallback = instance[methodName];
|
|
22
|
-
const prototypeCallback = prototype[methodName];
|
|
23
|
-
const routePath = Reflect.getMetadata(constants_1.PATH_METADATA, prototypeCallback);
|
|
24
|
-
if ((0, shared_helper_1.isUndefined)(routePath))
|
|
25
|
-
return null;
|
|
26
|
-
const requestMethod = Reflect.getMetadata(constants_1.METHOD_METADATA, prototypeCallback);
|
|
27
|
-
const version = Reflect.getMetadata(constants_1.VERSION_METADATA, prototypeCallback);
|
|
28
|
-
const path = (0, shared_helper_1.isString)(routePath) ? [(0, helpers_1.addLeadingSlash)(routePath)] : routePath.map((p) => (0, helpers_1.addLeadingSlash)(p));
|
|
29
|
-
return {
|
|
30
|
-
path,
|
|
31
|
-
requestMethod,
|
|
32
|
-
targetCallback: instanceCallback,
|
|
33
|
-
methodName,
|
|
34
|
-
version,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.PathsExplorer = PathsExplorer;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { ApplicationConfig, ContextId, MetadataScanner, Type, VenokContainer } from "@venok/core";
|
|
2
|
-
import { RequestMethod } from "../enums";
|
|
3
|
-
import { HttpServer, RouteDefinition, RoutePathMetadata, VersionValue } from "../interfaces";
|
|
4
|
-
import { RoutePathFactory } from "../factory";
|
|
5
|
-
import { Injector } from "@venok/core/injector/injector";
|
|
6
|
-
import { GraphInspector } from "@venok/core/inspector/graph-inspector";
|
|
7
|
-
import { AbstractHttpAdapter } from "../adapter/adapter";
|
|
8
|
-
import { InstanceWrapper } from "@venok/core/injector/instance/wrapper";
|
|
9
|
-
import { Module } from "@venok/core/injector/module/module";
|
|
10
|
-
import { RouterExceptionFiltersContext } from "../filters/context";
|
|
11
|
-
import { VenokProxy } from "@venok/core/context";
|
|
12
|
-
import { VenokExceptionsHandler } from "@venok/core/exceptions/handler";
|
|
13
|
-
export interface ExceptionsFilter {
|
|
14
|
-
create(instance: Object, callback: Function, module: string, contextId?: ContextId, inquirerId?: string): VenokExceptionsHandler;
|
|
15
|
-
}
|
|
16
|
-
export type HttpEntrypointMetadata = {
|
|
17
|
-
path: string;
|
|
18
|
-
requestMethod: keyof typeof RequestMethod;
|
|
19
|
-
methodVersion?: VersionValue;
|
|
20
|
-
controllerVersion?: VersionValue;
|
|
21
|
-
};
|
|
22
|
-
export type MiddlewareEntrypointMetadata = {
|
|
23
|
-
path: string;
|
|
24
|
-
requestMethod: keyof typeof RequestMethod;
|
|
25
|
-
version?: VersionValue;
|
|
26
|
-
};
|
|
27
|
-
export declare class RouterExplorer {
|
|
28
|
-
private readonly container;
|
|
29
|
-
private readonly injector;
|
|
30
|
-
private readonly routerProxy;
|
|
31
|
-
private readonly exceptionsFilter;
|
|
32
|
-
private readonly routePathFactory;
|
|
33
|
-
private readonly graphInspector;
|
|
34
|
-
private readonly applicationRef;
|
|
35
|
-
private readonly httpContextCreator;
|
|
36
|
-
private readonly pathsExplorer;
|
|
37
|
-
private readonly routerMethodFactory;
|
|
38
|
-
private readonly logger;
|
|
39
|
-
private readonly exceptionFiltersCache;
|
|
40
|
-
constructor(metadataScanner: MetadataScanner, container: VenokContainer, injector: Injector, routerProxy: VenokProxy, exceptionsFilter: RouterExceptionFiltersContext, config: ApplicationConfig, routePathFactory: RoutePathFactory, graphInspector: GraphInspector, applicationRef: AbstractHttpAdapter);
|
|
41
|
-
explore<T extends HttpServer = any>(instanceWrapper: InstanceWrapper, moduleKey: string, applicationRef: T, host: string | RegExp | Array<string | RegExp>, routePathMetadata: RoutePathMetadata): void;
|
|
42
|
-
extractRouterPath(metatype: Type<Object>): string[];
|
|
43
|
-
applyPathsToRouterProxy<T extends HttpServer>(router: T, routeDefinitions: RouteDefinition[], instanceWrapper: InstanceWrapper, moduleKey: string, routePathMetadata: RoutePathMetadata, host: string | RegExp | Array<string | RegExp>): void;
|
|
44
|
-
private applyCallbackToRouter;
|
|
45
|
-
private applyHostFilter;
|
|
46
|
-
private applyVersionFilter;
|
|
47
|
-
private createCallbackProxy;
|
|
48
|
-
createRequestScopedHandler(instanceWrapper: InstanceWrapper, requestMethod: RequestMethod, moduleRef: Module, moduleKey: string, methodName: string): <TRequest extends Record<any, any>, TResponse>(req: TRequest, res: TResponse, next: () => void) => Promise<void>;
|
|
49
|
-
private getContextId;
|
|
50
|
-
private copyMetadataToCallback;
|
|
51
|
-
}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RouterExplorer = void 0;
|
|
4
|
-
const enums_1 = require("../enums");
|
|
5
|
-
const path_explorer_1 = require("./path.explorer");
|
|
6
|
-
const factory_1 = require("../factory");
|
|
7
|
-
const logger_service_1 = require("../../core/services/logger.service");
|
|
8
|
-
const pipes_1 = require("../../core/pipes");
|
|
9
|
-
const guards_1 = require("../../core/guards");
|
|
10
|
-
const interceptors_1 = require("../../core/interceptors");
|
|
11
|
-
const constants_1 = require("../constants");
|
|
12
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
13
|
-
const helpers_1 = require("../helpers");
|
|
14
|
-
const path_to_regexp_1 = require("path-to-regexp");
|
|
15
|
-
const errors_1 = require("../errors");
|
|
16
|
-
const constants_2 = require("../../core/injector/constants");
|
|
17
|
-
const execution_host_1 = require("../../core/context/execution-host");
|
|
18
|
-
const context_1 = require("../../core/context");
|
|
19
|
-
const context_2 = require("../context/context");
|
|
20
|
-
class RouterExplorer {
|
|
21
|
-
constructor(metadataScanner, container, injector, routerProxy, exceptionsFilter, config, routePathFactory, graphInspector, applicationRef) {
|
|
22
|
-
this.container = container;
|
|
23
|
-
this.injector = injector;
|
|
24
|
-
this.routerProxy = routerProxy;
|
|
25
|
-
this.exceptionsFilter = exceptionsFilter;
|
|
26
|
-
this.routePathFactory = routePathFactory;
|
|
27
|
-
this.graphInspector = graphInspector;
|
|
28
|
-
this.applicationRef = applicationRef;
|
|
29
|
-
this.routerMethodFactory = new factory_1.RouterMethodFactory();
|
|
30
|
-
this.logger = new logger_service_1.Logger(RouterExplorer.name, {
|
|
31
|
-
timestamp: true,
|
|
32
|
-
});
|
|
33
|
-
this.exceptionFiltersCache = new WeakMap();
|
|
34
|
-
this.pathsExplorer = new path_explorer_1.PathsExplorer(metadataScanner);
|
|
35
|
-
this.httpContextCreator = new context_2.HttpContextCreator(context_1.VenokContextCreator.fromContainer(container), this.exceptionsFilter, this.applicationRef);
|
|
36
|
-
const routeParamsFactory = new factory_1.RouteParamsFactory();
|
|
37
|
-
const pipesContextCreator = new pipes_1.PipesContextCreator(container, config);
|
|
38
|
-
const pipesConsumer = new pipes_1.PipesConsumer();
|
|
39
|
-
const guardsContextCreator = new guards_1.GuardsContextCreator(container, config);
|
|
40
|
-
const guardsConsumer = new guards_1.GuardsConsumer();
|
|
41
|
-
const interceptorsContextCreator = new interceptors_1.InterceptorsContextCreator(container, config);
|
|
42
|
-
const interceptorsConsumer = new interceptors_1.InterceptorsConsumer();
|
|
43
|
-
}
|
|
44
|
-
explore(instanceWrapper, moduleKey, applicationRef, host, routePathMetadata) {
|
|
45
|
-
const { instance } = instanceWrapper;
|
|
46
|
-
const routerPaths = this.pathsExplorer.scanForPaths(instance);
|
|
47
|
-
this.applyPathsToRouterProxy(applicationRef, routerPaths, instanceWrapper, moduleKey, routePathMetadata, host);
|
|
48
|
-
}
|
|
49
|
-
extractRouterPath(metatype) {
|
|
50
|
-
const path = Reflect.getMetadata(constants_1.PATH_METADATA, metatype);
|
|
51
|
-
if ((0, shared_helper_1.isUndefined)(path))
|
|
52
|
-
return [];
|
|
53
|
-
if (Array.isArray(path))
|
|
54
|
-
return path.map((p) => (0, helpers_1.addLeadingSlash)(p));
|
|
55
|
-
return [(0, helpers_1.addLeadingSlash)(path)];
|
|
56
|
-
}
|
|
57
|
-
applyPathsToRouterProxy(router, routeDefinitions, instanceWrapper, moduleKey, routePathMetadata, host) {
|
|
58
|
-
(routeDefinitions || []).forEach((routeDefinition) => {
|
|
59
|
-
const { version: methodVersion } = routeDefinition;
|
|
60
|
-
routePathMetadata.methodVersion = methodVersion;
|
|
61
|
-
this.applyCallbackToRouter(router, routeDefinition, instanceWrapper, moduleKey, routePathMetadata, host);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
applyCallbackToRouter(router, routeDefinition, instanceWrapper, moduleKey, routePathMetadata, host) {
|
|
65
|
-
const { path: paths, requestMethod, targetCallback, methodName } = routeDefinition;
|
|
66
|
-
const { instance } = instanceWrapper;
|
|
67
|
-
const routerMethodRef = this.routerMethodFactory.get(router, requestMethod).bind(router);
|
|
68
|
-
const isRequestScoped = !instanceWrapper.isDependencyTreeStatic();
|
|
69
|
-
const proxy = isRequestScoped
|
|
70
|
-
? this.createRequestScopedHandler(instanceWrapper, requestMethod, this.container.getModuleByKey(moduleKey), moduleKey, methodName)
|
|
71
|
-
: this.createCallbackProxy(instance, targetCallback, methodName, moduleKey, requestMethod);
|
|
72
|
-
const isVersioned = (routePathMetadata.methodVersion || routePathMetadata.controllerVersion) && routePathMetadata.versioningOptions;
|
|
73
|
-
let routeHandler = this.applyHostFilter(host, proxy);
|
|
74
|
-
paths.forEach((path) => {
|
|
75
|
-
if (isVersioned && routePathMetadata.versioningOptions.type !== enums_1.VersioningType.URI) {
|
|
76
|
-
// All versioning (except for URI Versioning) is done via the "Version Filter"
|
|
77
|
-
routeHandler = this.applyVersionFilter(router, routePathMetadata, routeHandler);
|
|
78
|
-
}
|
|
79
|
-
routePathMetadata.methodPath = path;
|
|
80
|
-
const pathsToRegister = this.routePathFactory.create(routePathMetadata, requestMethod);
|
|
81
|
-
pathsToRegister.forEach((path) => {
|
|
82
|
-
const entrypointDefinition = {
|
|
83
|
-
type: "http-endpoint",
|
|
84
|
-
methodName,
|
|
85
|
-
className: instanceWrapper.name,
|
|
86
|
-
classNodeId: instanceWrapper.id,
|
|
87
|
-
metadata: {
|
|
88
|
-
key: path,
|
|
89
|
-
path,
|
|
90
|
-
requestMethod: enums_1.RequestMethod[requestMethod],
|
|
91
|
-
methodVersion: routePathMetadata.methodVersion,
|
|
92
|
-
controllerVersion: routePathMetadata.controllerVersion,
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
this.copyMetadataToCallback(targetCallback, routeHandler);
|
|
96
|
-
routerMethodRef(path, routeHandler);
|
|
97
|
-
this.graphInspector.insertEntrypointDefinition(entrypointDefinition, instanceWrapper.id);
|
|
98
|
-
});
|
|
99
|
-
const pathsToLog = this.routePathFactory.create({
|
|
100
|
-
...routePathMetadata,
|
|
101
|
-
versioningOptions: undefined,
|
|
102
|
-
}, requestMethod);
|
|
103
|
-
pathsToLog.forEach((path) => {
|
|
104
|
-
if (isVersioned) {
|
|
105
|
-
const version = this.routePathFactory.getVersion(routePathMetadata);
|
|
106
|
-
this.logger.log((0, helpers_1.VERSIONED_ROUTE_MAPPED_MESSAGE)(path, requestMethod, version));
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.logger.log((0, helpers_1.ROUTE_MAPPED_MESSAGE)(path, requestMethod));
|
|
110
|
-
}
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
applyHostFilter(host, handler) {
|
|
115
|
-
if (!host)
|
|
116
|
-
return handler;
|
|
117
|
-
const hosts = Array.isArray(host) ? host : [host];
|
|
118
|
-
const hostRegExps = hosts.map((host) => {
|
|
119
|
-
const keys = [];
|
|
120
|
-
const regexp = (0, path_to_regexp_1.pathToRegexp)(host, keys);
|
|
121
|
-
return { regexp, keys };
|
|
122
|
-
});
|
|
123
|
-
const unsupportedFilteringErrorMessage = Array.isArray(host)
|
|
124
|
-
? `HTTP adapter does not support filtering on hosts: ["${host.join('", "')}"]`
|
|
125
|
-
: `HTTP adapter does not support filtering on host: "${host}"`;
|
|
126
|
-
return (req, res, next) => {
|
|
127
|
-
req.hosts = {};
|
|
128
|
-
const hostname = this.applicationRef.getRequestHostname(req) || "";
|
|
129
|
-
for (const exp of hostRegExps) {
|
|
130
|
-
const match = hostname.match(exp.regexp);
|
|
131
|
-
if (match) {
|
|
132
|
-
if (exp.keys.length > 0) {
|
|
133
|
-
exp.keys.forEach((key, i) => (req.hosts[key.name] = match[i + 1]));
|
|
134
|
-
}
|
|
135
|
-
else if (exp.regexp && match.groups) {
|
|
136
|
-
for (const groupName in match.groups)
|
|
137
|
-
req.hosts[groupName] = match.groups[groupName];
|
|
138
|
-
}
|
|
139
|
-
return handler(req, res, next);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (!next)
|
|
143
|
-
throw new errors_1.InternalServerErrorException(unsupportedFilteringErrorMessage);
|
|
144
|
-
return next();
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
applyVersionFilter(router, routePathMetadata, handler) {
|
|
148
|
-
const version = this.routePathFactory.getVersion(routePathMetadata);
|
|
149
|
-
return router.applyVersionFilter(handler, version, routePathMetadata.versioningOptions);
|
|
150
|
-
}
|
|
151
|
-
createCallbackProxy(instance, callback, methodName, moduleRef, requestMethod, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
152
|
-
return this.httpContextCreator.create(instance, callback, methodName, moduleRef, requestMethod, contextId, inquirerId);
|
|
153
|
-
}
|
|
154
|
-
createRequestScopedHandler(instanceWrapper, requestMethod, moduleRef, moduleKey, methodName) {
|
|
155
|
-
const { instance } = instanceWrapper;
|
|
156
|
-
const collection = moduleRef.injectables;
|
|
157
|
-
const isTreeDurable = instanceWrapper.isDependencyTreeDurable();
|
|
158
|
-
return async (req, res, next) => {
|
|
159
|
-
try {
|
|
160
|
-
const contextId = this.getContextId(req, isTreeDurable);
|
|
161
|
-
const contextInstance = await this.injector.loadPerContext(instance, moduleRef, collection, contextId);
|
|
162
|
-
await this.createCallbackProxy(contextInstance, contextInstance[methodName], methodName, moduleKey, requestMethod, contextId, instanceWrapper.id)(req, res, next);
|
|
163
|
-
}
|
|
164
|
-
catch (err) {
|
|
165
|
-
let exceptionFilter = this.exceptionFiltersCache.get(instance[methodName]);
|
|
166
|
-
if (!exceptionFilter) {
|
|
167
|
-
exceptionFilter = this.exceptionsFilter.create(instance, instance[methodName], moduleKey);
|
|
168
|
-
this.exceptionFiltersCache.set(instance[methodName], exceptionFilter);
|
|
169
|
-
}
|
|
170
|
-
const host = new execution_host_1.ExecutionContextHost([req, res, next]);
|
|
171
|
-
exceptionFilter.next(err, host);
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
getContextId(request, isTreeDurable) {
|
|
176
|
-
const contextId = factory_1.ContextIdFactory.getByRequest(request);
|
|
177
|
-
if (!request[constants_1.REQUEST_CONTEXT_ID]) {
|
|
178
|
-
Object.defineProperty(request, constants_1.REQUEST_CONTEXT_ID, {
|
|
179
|
-
value: contextId,
|
|
180
|
-
enumerable: false,
|
|
181
|
-
writable: false,
|
|
182
|
-
configurable: false,
|
|
183
|
-
});
|
|
184
|
-
const requestProviderValue = isTreeDurable ? contextId.payload : request;
|
|
185
|
-
this.container.registerRequestProvider(requestProviderValue, contextId);
|
|
186
|
-
}
|
|
187
|
-
return contextId;
|
|
188
|
-
}
|
|
189
|
-
copyMetadataToCallback(originalCallback, targetCallback) {
|
|
190
|
-
for (const key of Reflect.getMetadataKeys(originalCallback)) {
|
|
191
|
-
Reflect.defineMetadata(key, Reflect.getMetadata(key, originalCallback), targetCallback);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
exports.RouterExplorer = RouterExplorer;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ContextId, HostComponentInfo } from "@venok/core";
|
|
2
|
-
export type ContextIdResolverFn = (info: HostComponentInfo) => ContextId;
|
|
3
|
-
export interface ContextIdResolver {
|
|
4
|
-
/**
|
|
5
|
-
* Payload associated with the custom context id
|
|
6
|
-
*/
|
|
7
|
-
payload: unknown;
|
|
8
|
-
/**
|
|
9
|
-
* A context id resolver function
|
|
10
|
-
*/
|
|
11
|
-
resolve: ContextIdResolverFn;
|
|
12
|
-
}
|
|
13
|
-
export interface ContextIdStrategy<T = any> {
|
|
14
|
-
/**
|
|
15
|
-
* Allows to attach a parent context id to the existing child context id.
|
|
16
|
-
* This lets you construct durable DI subtrees that can be shared between contexts.
|
|
17
|
-
* @param contextId auto-generated child context id
|
|
18
|
-
* @param request request object
|
|
19
|
-
*/
|
|
20
|
-
attach(contextId: ContextId, request: T): ContextIdResolverFn | ContextIdResolver | undefined;
|
|
21
|
-
}
|
|
22
|
-
export declare class ContextIdFactory {
|
|
23
|
-
private static strategy?;
|
|
24
|
-
/**
|
|
25
|
-
* Generates a context identifier based on the request object.
|
|
26
|
-
*/
|
|
27
|
-
static create(): ContextId;
|
|
28
|
-
/**
|
|
29
|
-
* Generates a random identifier to track asynchronous execution context.
|
|
30
|
-
* @param request request object
|
|
31
|
-
* @param propsToInspect
|
|
32
|
-
*/
|
|
33
|
-
static getByRequest<T extends Record<any, any> = any>(request: T, propsToInspect?: string[]): ContextId;
|
|
34
|
-
/**
|
|
35
|
-
* Registers a custom context id strategy that lets you attach
|
|
36
|
-
* a parent context id to the existing context id object.
|
|
37
|
-
* @param strategy strategy instance
|
|
38
|
-
*/
|
|
39
|
-
static apply(strategy: ContextIdStrategy): void;
|
|
40
|
-
private static isContextIdResolverWithPayload;
|
|
41
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ContextIdFactory = void 0;
|
|
4
|
-
const constants_1 = require("@venok/http/constants");
|
|
5
|
-
const context_id_factory_helper_1 = require("../../core/helpers/context-id-factory.helper");
|
|
6
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
7
|
-
class ContextIdFactory {
|
|
8
|
-
/**
|
|
9
|
-
* Generates a context identifier based on the request object.
|
|
10
|
-
*/
|
|
11
|
-
static create() {
|
|
12
|
-
return (0, context_id_factory_helper_1.createContextId)();
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Generates a random identifier to track asynchronous execution context.
|
|
16
|
-
* @param request request object
|
|
17
|
-
* @param propsToInspect
|
|
18
|
-
*/
|
|
19
|
-
static getByRequest(request, propsToInspect = ["raw"]) {
|
|
20
|
-
if (!request)
|
|
21
|
-
return ContextIdFactory.create();
|
|
22
|
-
if (request[constants_1.REQUEST_CONTEXT_ID])
|
|
23
|
-
return request[constants_1.REQUEST_CONTEXT_ID];
|
|
24
|
-
for (const key of propsToInspect)
|
|
25
|
-
if (request[key]?.[constants_1.REQUEST_CONTEXT_ID])
|
|
26
|
-
return request[key][constants_1.REQUEST_CONTEXT_ID];
|
|
27
|
-
if (!this.strategy)
|
|
28
|
-
return ContextIdFactory.create();
|
|
29
|
-
const contextId = (0, context_id_factory_helper_1.createContextId)();
|
|
30
|
-
const resolverObjectOrFunction = this.strategy.attach(contextId, request);
|
|
31
|
-
if (this.isContextIdResolverWithPayload(resolverObjectOrFunction)) {
|
|
32
|
-
contextId.getParent = resolverObjectOrFunction.resolve;
|
|
33
|
-
contextId.payload = resolverObjectOrFunction.payload;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
contextId.getParent = resolverObjectOrFunction;
|
|
37
|
-
}
|
|
38
|
-
return contextId;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Registers a custom context id strategy that lets you attach
|
|
42
|
-
* a parent context id to the existing context id object.
|
|
43
|
-
* @param strategy strategy instance
|
|
44
|
-
*/
|
|
45
|
-
static apply(strategy) {
|
|
46
|
-
this.strategy = strategy;
|
|
47
|
-
}
|
|
48
|
-
static isContextIdResolverWithPayload(resolverOrResolverFn) {
|
|
49
|
-
return (0, shared_helper_1.isObject)(resolverOrResolverFn);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
exports.ContextIdFactory = ContextIdFactory;
|
package/factory/index.d.ts
DELETED
package/factory/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./context-id.factory"), exports);
|
|
18
|
-
__exportStar(require("./method.factory"), exports);
|
|
19
|
-
__exportStar(require("./params.factory"), exports);
|
|
20
|
-
__exportStar(require("./path.factory"), exports);
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RouterMethodFactory = void 0;
|
|
4
|
-
const enums_1 = require("../enums");
|
|
5
|
-
class RouterMethodFactory {
|
|
6
|
-
get(target, requestMethod) {
|
|
7
|
-
switch (requestMethod) {
|
|
8
|
-
case enums_1.RequestMethod.POST:
|
|
9
|
-
return target.post;
|
|
10
|
-
case enums_1.RequestMethod.ALL:
|
|
11
|
-
return target.all;
|
|
12
|
-
case enums_1.RequestMethod.DELETE:
|
|
13
|
-
return target.delete;
|
|
14
|
-
case enums_1.RequestMethod.PUT:
|
|
15
|
-
return target.put;
|
|
16
|
-
case enums_1.RequestMethod.PATCH:
|
|
17
|
-
return target.patch;
|
|
18
|
-
case enums_1.RequestMethod.OPTIONS:
|
|
19
|
-
return target.options;
|
|
20
|
-
case enums_1.RequestMethod.HEAD:
|
|
21
|
-
return target.head;
|
|
22
|
-
case enums_1.RequestMethod.GET:
|
|
23
|
-
return target.get;
|
|
24
|
-
default: {
|
|
25
|
-
return target.use;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.RouterMethodFactory = RouterMethodFactory;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { RouteParamtypes } from "../enums";
|
|
2
|
-
import { IRouteParamsFactory } from "../context/context";
|
|
3
|
-
export declare class RouteParamsFactory implements IRouteParamsFactory {
|
|
4
|
-
exchangeKeyForValue<TRequest extends Record<string, any> = any, TResponse = any, TResult = any>(key: RouteParamtypes | string, data: string | object | any, args: [TRequest, TResponse, Function]): TResult;
|
|
5
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RouteParamsFactory = void 0;
|
|
4
|
-
const enums_1 = require("../enums");
|
|
5
|
-
class RouteParamsFactory {
|
|
6
|
-
exchangeKeyForValue(key, data, args) {
|
|
7
|
-
const [req, res, next] = args;
|
|
8
|
-
switch (key) {
|
|
9
|
-
case enums_1.RouteParamtypes.NEXT:
|
|
10
|
-
return next;
|
|
11
|
-
case enums_1.RouteParamtypes.REQUEST:
|
|
12
|
-
return req;
|
|
13
|
-
case enums_1.RouteParamtypes.RESPONSE:
|
|
14
|
-
return res;
|
|
15
|
-
case enums_1.RouteParamtypes.BODY:
|
|
16
|
-
return data && req.body ? req.body[data] : req.body;
|
|
17
|
-
case enums_1.RouteParamtypes.PARAM:
|
|
18
|
-
return data ? req.params[data] : req.params;
|
|
19
|
-
case enums_1.RouteParamtypes.HOST:
|
|
20
|
-
const hosts = req.hosts || {};
|
|
21
|
-
return data ? hosts[data] : hosts;
|
|
22
|
-
case enums_1.RouteParamtypes.QUERY:
|
|
23
|
-
return data ? req.query[data] : req.query;
|
|
24
|
-
case enums_1.RouteParamtypes.HEADERS:
|
|
25
|
-
return data ? req.headers[data.toLowerCase()] : req.headers;
|
|
26
|
-
case enums_1.RouteParamtypes.SESSION:
|
|
27
|
-
return req.session;
|
|
28
|
-
case enums_1.RouteParamtypes.FILE:
|
|
29
|
-
return req[data || "file"];
|
|
30
|
-
case enums_1.RouteParamtypes.FILES:
|
|
31
|
-
return req.files;
|
|
32
|
-
case enums_1.RouteParamtypes.IP:
|
|
33
|
-
return req.ip;
|
|
34
|
-
default:
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.RouteParamsFactory = RouteParamsFactory;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { HttpConfig } from "../application/config";
|
|
2
|
-
import { RoutePathMetadata, VersioningOptions, VersionValue } from "../interfaces";
|
|
3
|
-
import { RequestMethod } from "../enums";
|
|
4
|
-
export declare class RoutePathFactory {
|
|
5
|
-
private readonly config;
|
|
6
|
-
constructor(config: HttpConfig);
|
|
7
|
-
create(metadata: RoutePathMetadata, requestMethod?: RequestMethod): string[];
|
|
8
|
-
getVersion(metadata: RoutePathMetadata): VersionValue | undefined;
|
|
9
|
-
getVersionPrefix(versioningOptions: VersioningOptions): string;
|
|
10
|
-
appendToAllIfDefined(paths: string[], fragmentToAppend: string | string[] | undefined): string[];
|
|
11
|
-
isExcludedFromGlobalPrefix(path: string, requestMethod?: RequestMethod, versionOrVersions?: VersionValue, versioningOptions?: VersioningOptions): boolean;
|
|
12
|
-
private truncateVersionPrefixFromPath;
|
|
13
|
-
}
|
package/factory/path.factory.js
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoutePathFactory = void 0;
|
|
4
|
-
const interfaces_1 = require("../interfaces");
|
|
5
|
-
const enums_1 = require("../enums");
|
|
6
|
-
const flatten_helper_1 = require("../../core/helpers/flatten.helper");
|
|
7
|
-
const helpers_1 = require("../helpers");
|
|
8
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
9
|
-
class RoutePathFactory {
|
|
10
|
-
constructor(config) {
|
|
11
|
-
this.config = config;
|
|
12
|
-
}
|
|
13
|
-
create(metadata, requestMethod) {
|
|
14
|
-
let paths = [""];
|
|
15
|
-
const versionOrVersions = this.getVersion(metadata);
|
|
16
|
-
if (versionOrVersions && metadata.versioningOptions?.type === enums_1.VersioningType.URI) {
|
|
17
|
-
const versionPrefix = this.getVersionPrefix(metadata.versioningOptions);
|
|
18
|
-
if (Array.isArray(versionOrVersions)) {
|
|
19
|
-
paths = (0, flatten_helper_1.flatten)(paths.map((path) => versionOrVersions.map((version) =>
|
|
20
|
-
// Version Neutral - Do not include version in URL
|
|
21
|
-
version === interfaces_1.VERSION_NEUTRAL ? path : `${path}/${versionPrefix}${version}`)));
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
// Version Neutral - Do not include version in URL
|
|
25
|
-
if (versionOrVersions !== interfaces_1.VERSION_NEUTRAL) {
|
|
26
|
-
paths = paths.map((path) => `${path}/${versionPrefix}${versionOrVersions}`);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
paths = this.appendToAllIfDefined(paths, metadata.modulePath);
|
|
31
|
-
paths = this.appendToAllIfDefined(paths, metadata.ctrlPath);
|
|
32
|
-
paths = this.appendToAllIfDefined(paths, metadata.methodPath);
|
|
33
|
-
if (metadata.globalPrefix) {
|
|
34
|
-
paths = paths.map((path) => {
|
|
35
|
-
if (this.isExcludedFromGlobalPrefix(path, requestMethod, versionOrVersions, metadata.versioningOptions)) {
|
|
36
|
-
return path;
|
|
37
|
-
}
|
|
38
|
-
return (0, helpers_1.stripEndSlash)(metadata.globalPrefix || "") + path;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
return paths.map((path) => (0, helpers_1.addLeadingSlash)(path || "/")).map((path) => (path !== "/" ? (0, helpers_1.stripEndSlash)(path) : path));
|
|
42
|
-
}
|
|
43
|
-
getVersion(metadata) {
|
|
44
|
-
// The version will be either the path version or the controller version,
|
|
45
|
-
// with the pathVersion taking priority.
|
|
46
|
-
return metadata.methodVersion || metadata.controllerVersion;
|
|
47
|
-
}
|
|
48
|
-
getVersionPrefix(versioningOptions) {
|
|
49
|
-
const defaultPrefix = "v";
|
|
50
|
-
if (versioningOptions.type === enums_1.VersioningType.URI) {
|
|
51
|
-
if (versioningOptions.prefix === false) {
|
|
52
|
-
return "";
|
|
53
|
-
}
|
|
54
|
-
else if (versioningOptions.prefix !== undefined) {
|
|
55
|
-
return versioningOptions.prefix;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return defaultPrefix;
|
|
59
|
-
}
|
|
60
|
-
appendToAllIfDefined(paths, fragmentToAppend) {
|
|
61
|
-
if (!fragmentToAppend) {
|
|
62
|
-
return paths;
|
|
63
|
-
}
|
|
64
|
-
const concatPaths = (a, b) => (0, helpers_1.stripEndSlash)(a) + (0, helpers_1.addLeadingSlash)(b);
|
|
65
|
-
if (Array.isArray(fragmentToAppend)) {
|
|
66
|
-
const paths2dArray = paths.map((path) => fragmentToAppend.map((fragment) => concatPaths(path, fragment)));
|
|
67
|
-
return (0, flatten_helper_1.flatten)(paths2dArray);
|
|
68
|
-
}
|
|
69
|
-
return paths.map((path) => concatPaths(path, fragmentToAppend));
|
|
70
|
-
}
|
|
71
|
-
isExcludedFromGlobalPrefix(path, requestMethod, versionOrVersions, versioningOptions) {
|
|
72
|
-
if ((0, shared_helper_1.isUndefined)(requestMethod)) {
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
const options = this.config.getGlobalPrefixOptions();
|
|
76
|
-
const excludedRoutes = options.exclude;
|
|
77
|
-
if (versionOrVersions && versionOrVersions !== interfaces_1.VERSION_NEUTRAL && versioningOptions?.type === enums_1.VersioningType.URI) {
|
|
78
|
-
path = this.truncateVersionPrefixFromPath(path, versionOrVersions, versioningOptions);
|
|
79
|
-
}
|
|
80
|
-
return Array.isArray(excludedRoutes) && (0, helpers_1.isRouteExcluded)(excludedRoutes, path, requestMethod);
|
|
81
|
-
}
|
|
82
|
-
truncateVersionPrefixFromPath(path, versionValue, versioningOptions) {
|
|
83
|
-
if (typeof versionValue !== "string") {
|
|
84
|
-
versionValue.forEach((version) => {
|
|
85
|
-
if (typeof version === "string") {
|
|
86
|
-
path = this.truncateVersionPrefixFromPath(path, version, versioningOptions);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
return path;
|
|
90
|
-
}
|
|
91
|
-
const prefix = `/${this.getVersionPrefix(versioningOptions)}${versionValue}`;
|
|
92
|
-
return path.startsWith(prefix) ? path.replace(prefix, "") : path;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
exports.RoutePathFactory = RoutePathFactory;
|
package/filters/context.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ApplicationConfig, VenokContainer } from "@venok/core";
|
|
2
|
-
import { HttpServer } from "../interfaces";
|
|
3
|
-
import { HttpExceptionFilter } from "./filter";
|
|
4
|
-
import { VenokExceptionFilterContext } from "@venok/core/filters/context";
|
|
5
|
-
export declare class RouterExceptionFiltersContext extends VenokExceptionFilterContext {
|
|
6
|
-
private readonly applicationRef;
|
|
7
|
-
constructor(container: VenokContainer, config: ApplicationConfig, applicationRef: HttpServer);
|
|
8
|
-
getExceptionFilter(): HttpExceptionFilter<any>;
|
|
9
|
-
}
|
package/filters/context.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RouterExceptionFiltersContext = void 0;
|
|
4
|
-
const filter_1 = require("./filter");
|
|
5
|
-
const context_1 = require("../../core/filters/context");
|
|
6
|
-
class RouterExceptionFiltersContext extends context_1.VenokExceptionFilterContext {
|
|
7
|
-
constructor(container, config, applicationRef) {
|
|
8
|
-
super(container, config);
|
|
9
|
-
this.applicationRef = applicationRef;
|
|
10
|
-
}
|
|
11
|
-
getExceptionFilter() {
|
|
12
|
-
return new filter_1.HttpExceptionFilter(this.applicationRef);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.RouterExceptionFiltersContext = RouterExceptionFiltersContext;
|