@venok/http 1.1.0 → 2.0.1-next.1
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
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.HttpModule = void 0;
|
|
10
|
-
const http_module_defenition_1 = require("./http.module-defenition");
|
|
11
|
-
const core_1 = require("../../core");
|
|
12
|
-
const module_1 = require("../../core/discovery/module");
|
|
13
|
-
const http_service_1 = require("./http.service");
|
|
14
|
-
let HttpModule = class HttpModule extends http_module_defenition_1.HttpConfigurableModuleClass {
|
|
15
|
-
};
|
|
16
|
-
exports.HttpModule = HttpModule;
|
|
17
|
-
exports.HttpModule = HttpModule = __decorate([
|
|
18
|
-
(0, core_1.Module)({
|
|
19
|
-
providers: [module_1.DiscoveryModule, http_service_1.HttpCoreService],
|
|
20
|
-
})
|
|
21
|
-
], HttpModule);
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { VenokContainer } from "@venok/core";
|
|
2
|
-
import { OnApplicationShutdown, OnModuleInit } from "@venok/core/interfaces/hooks";
|
|
3
|
-
import { HttpAppOptions } from "./http.module-defenition";
|
|
4
|
-
export declare class HttpCoreService implements OnModuleInit, OnApplicationShutdown {
|
|
5
|
-
private readonly container;
|
|
6
|
-
private readonly options;
|
|
7
|
-
private httpStarter;
|
|
8
|
-
constructor(container: VenokContainer, options: Required<HttpAppOptions>);
|
|
9
|
-
onModuleInit(): Promise<any>;
|
|
10
|
-
onApplicationShutdown(signal?: string): Promise<void>;
|
|
11
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
-
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.HttpCoreService = void 0;
|
|
16
|
-
const core_1 = require("../../core");
|
|
17
|
-
const config_1 = require("./config");
|
|
18
|
-
const starter_1 = require("./starter");
|
|
19
|
-
const graph_inspector_1 = require("../../core/inspector/graph-inspector");
|
|
20
|
-
const application_1 = require("./application");
|
|
21
|
-
const http_module_defenition_1 = require("./http.module-defenition");
|
|
22
|
-
let HttpCoreService = class HttpCoreService {
|
|
23
|
-
constructor(container, options) {
|
|
24
|
-
this.container = container;
|
|
25
|
-
this.options = options;
|
|
26
|
-
}
|
|
27
|
-
async onModuleInit() {
|
|
28
|
-
const httpConfig = new config_1.HttpConfig();
|
|
29
|
-
httpConfig.setHttpAdapter(this.options.adapter);
|
|
30
|
-
this.httpStarter = new starter_1.HttpStarter(this.container, this.options.adapter, this.container.applicationConfig, httpConfig, new graph_inspector_1.GraphInspector(this.container));
|
|
31
|
-
this.options.callback && this.options.callback(new application_1.HttpApplication(this.options.adapter, httpConfig));
|
|
32
|
-
await this.httpStarter.listen(this.options.port);
|
|
33
|
-
}
|
|
34
|
-
async onApplicationShutdown(signal) {
|
|
35
|
-
await this.httpStarter.dispose();
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
exports.HttpCoreService = HttpCoreService;
|
|
39
|
-
exports.HttpCoreService = HttpCoreService = __decorate([
|
|
40
|
-
(0, core_1.Injectable)(),
|
|
41
|
-
__param(1, (0, core_1.Inject)(http_module_defenition_1.HTTP_APP_OPTIONS)),
|
|
42
|
-
__metadata("design:paramtypes", [core_1.VenokContainer, Object])
|
|
43
|
-
], HttpCoreService);
|
package/application/starter.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { ApplicationConfig, VenokContainer } from "@venok/core";
|
|
2
|
-
import { Logger } from "@venok/core/services/logger.service";
|
|
3
|
-
import { HttpServer } from "../interfaces";
|
|
4
|
-
import { HttpConfig } from "./config";
|
|
5
|
-
import { GraphInspector } from "@venok/core/inspector/graph-inspector";
|
|
6
|
-
/**
|
|
7
|
-
* @publicApi
|
|
8
|
-
*/
|
|
9
|
-
export declare class HttpStarter {
|
|
10
|
-
private readonly container;
|
|
11
|
-
private readonly httpAdapter;
|
|
12
|
-
private readonly config;
|
|
13
|
-
private readonly httpConfig;
|
|
14
|
-
private readonly graphInspector;
|
|
15
|
-
private readonly appOptions;
|
|
16
|
-
private readonly injector;
|
|
17
|
-
protected readonly logger: Logger;
|
|
18
|
-
private readonly middlewareModule;
|
|
19
|
-
private readonly middlewareContainer;
|
|
20
|
-
private readonly routesResolver;
|
|
21
|
-
private httpServer;
|
|
22
|
-
private isListening;
|
|
23
|
-
constructor(container: VenokContainer, httpAdapter: HttpServer, config: ApplicationConfig, httpConfig: HttpConfig, graphInspector: GraphInspector, appOptions?: any);
|
|
24
|
-
dispose(): Promise<void>;
|
|
25
|
-
registerHttpServer(): void;
|
|
26
|
-
getUnderlyingHttpServer<T>(): T;
|
|
27
|
-
createServer<T = any>(): T;
|
|
28
|
-
registerModules(): Promise<void>;
|
|
29
|
-
init(): Promise<this>;
|
|
30
|
-
registerParserMiddleware(): void;
|
|
31
|
-
registerRouter(): Promise<void>;
|
|
32
|
-
registerRouterHooks(): Promise<void>;
|
|
33
|
-
getHttpServer(): any;
|
|
34
|
-
listen(port: number | string): Promise<any>;
|
|
35
|
-
listen(port: number | string, hostname: string): Promise<any>;
|
|
36
|
-
getUrl(): Promise<string>;
|
|
37
|
-
private formatAddress;
|
|
38
|
-
private host;
|
|
39
|
-
private getProtocol;
|
|
40
|
-
private registerMiddleware;
|
|
41
|
-
}
|
package/application/starter.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpStarter = void 0;
|
|
4
|
-
const injector_1 = require("../../core/injector/injector");
|
|
5
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
6
|
-
const os_1 = require("os");
|
|
7
|
-
const helpers_1 = require("../helpers");
|
|
8
|
-
const logger_service_1 = require("../../core/services/logger.service");
|
|
9
|
-
const container_1 = require("../middleware/container");
|
|
10
|
-
const module_1 = require("../middleware/module");
|
|
11
|
-
const resolver_1 = require("../router/resolver");
|
|
12
|
-
/**
|
|
13
|
-
* @publicApi
|
|
14
|
-
*/
|
|
15
|
-
class HttpStarter {
|
|
16
|
-
constructor(container, httpAdapter, config, httpConfig, graphInspector, appOptions = {}) {
|
|
17
|
-
this.container = container;
|
|
18
|
-
this.httpAdapter = httpAdapter;
|
|
19
|
-
this.config = config;
|
|
20
|
-
this.httpConfig = httpConfig;
|
|
21
|
-
this.graphInspector = graphInspector;
|
|
22
|
-
this.appOptions = appOptions;
|
|
23
|
-
this.logger = new logger_service_1.Logger(HttpStarter.name, {
|
|
24
|
-
timestamp: true,
|
|
25
|
-
});
|
|
26
|
-
this.isListening = false;
|
|
27
|
-
this.registerHttpServer();
|
|
28
|
-
this.middlewareContainer = new container_1.MiddlewareContainer(this.container);
|
|
29
|
-
this.injector = new injector_1.Injector({ preview: this.appOptions.preview });
|
|
30
|
-
this.middlewareModule = new module_1.MiddlewareModule();
|
|
31
|
-
this.routesResolver = new resolver_1.RoutesResolver(this.container, this.config, this.httpConfig, this.injector, this.graphInspector);
|
|
32
|
-
}
|
|
33
|
-
async dispose() {
|
|
34
|
-
this.httpAdapter && (await this.httpAdapter.close());
|
|
35
|
-
}
|
|
36
|
-
registerHttpServer() {
|
|
37
|
-
this.httpServer = this.createServer();
|
|
38
|
-
}
|
|
39
|
-
getUnderlyingHttpServer() {
|
|
40
|
-
return this.httpAdapter.getHttpServer();
|
|
41
|
-
}
|
|
42
|
-
createServer() {
|
|
43
|
-
this.httpAdapter.initHttpServer(this.appOptions);
|
|
44
|
-
return this.httpAdapter.getHttpServer();
|
|
45
|
-
}
|
|
46
|
-
async registerModules() {
|
|
47
|
-
await this.middlewareModule.register(this.middlewareContainer, this.container, this.config, this.httpConfig, this.injector, this.httpAdapter, this.graphInspector, this.appOptions);
|
|
48
|
-
}
|
|
49
|
-
async init() {
|
|
50
|
-
this.httpAdapter.init && (await this.httpAdapter.init());
|
|
51
|
-
const useBodyParser = this.appOptions && this.appOptions.bodyParser !== false;
|
|
52
|
-
useBodyParser && this.registerParserMiddleware();
|
|
53
|
-
await this.registerModules();
|
|
54
|
-
await this.registerRouter();
|
|
55
|
-
await this.registerRouterHooks();
|
|
56
|
-
return this;
|
|
57
|
-
}
|
|
58
|
-
registerParserMiddleware() {
|
|
59
|
-
const prefix = this.httpConfig.getGlobalPrefix();
|
|
60
|
-
const rawBody = !!this.appOptions?.rawBody;
|
|
61
|
-
this.httpAdapter.registerParserMiddleware(prefix, rawBody);
|
|
62
|
-
}
|
|
63
|
-
async registerRouter() {
|
|
64
|
-
await this.registerMiddleware(this.httpAdapter);
|
|
65
|
-
const prefix = this.httpConfig.getGlobalPrefix();
|
|
66
|
-
const basePath = (0, helpers_1.addLeadingSlash)(prefix);
|
|
67
|
-
this.routesResolver.resolve(this.httpAdapter, basePath);
|
|
68
|
-
}
|
|
69
|
-
async registerRouterHooks() {
|
|
70
|
-
this.routesResolver.registerNotFoundHandler();
|
|
71
|
-
this.routesResolver.registerExceptionHandler();
|
|
72
|
-
}
|
|
73
|
-
getHttpServer() {
|
|
74
|
-
return this.httpServer;
|
|
75
|
-
}
|
|
76
|
-
async listen(port, ...args) {
|
|
77
|
-
await this.init();
|
|
78
|
-
return new Promise((resolve, reject) => {
|
|
79
|
-
const errorHandler = (e) => {
|
|
80
|
-
this.logger.error(e?.toString?.());
|
|
81
|
-
reject(e);
|
|
82
|
-
};
|
|
83
|
-
this.httpServer.once("error", errorHandler);
|
|
84
|
-
const isCallbackInOriginalArgs = (0, shared_helper_1.isFunction)(args[args.length - 1]);
|
|
85
|
-
const listenFnArgs = isCallbackInOriginalArgs ? args.slice(0, args.length - 1) : args;
|
|
86
|
-
this.httpAdapter.listen(port, ...listenFnArgs, (...originalCallbackArgs) => {
|
|
87
|
-
if (originalCallbackArgs[0] instanceof Error)
|
|
88
|
-
return reject(originalCallbackArgs[0]);
|
|
89
|
-
const address = this.httpServer.address();
|
|
90
|
-
if (address) {
|
|
91
|
-
this.httpServer.removeListener("error", errorHandler);
|
|
92
|
-
this.isListening = true;
|
|
93
|
-
resolve(this.httpServer);
|
|
94
|
-
}
|
|
95
|
-
if (isCallbackInOriginalArgs) {
|
|
96
|
-
args[args.length - 1](...originalCallbackArgs);
|
|
97
|
-
}
|
|
98
|
-
this.logger.log((0, helpers_1.VENOK_HTTP_SERVER_START)(port));
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
async getUrl() {
|
|
103
|
-
return new Promise((resolve, reject) => {
|
|
104
|
-
const address = this.httpServer.address();
|
|
105
|
-
resolve(this.formatAddress(address));
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
formatAddress(address) {
|
|
109
|
-
if ((0, shared_helper_1.isString)(address)) {
|
|
110
|
-
if ((0, os_1.platform)() === "win32")
|
|
111
|
-
return address;
|
|
112
|
-
const basePath = encodeURIComponent(address);
|
|
113
|
-
return `${this.getProtocol()}+unix://${basePath}`;
|
|
114
|
-
}
|
|
115
|
-
let host = this.host();
|
|
116
|
-
if (address && address.family === "IPv6") {
|
|
117
|
-
if (host === "::")
|
|
118
|
-
host = "[::1]";
|
|
119
|
-
else
|
|
120
|
-
host = `[${host}]`;
|
|
121
|
-
}
|
|
122
|
-
else if (host === "0.0.0.0") {
|
|
123
|
-
host = "127.0.0.1";
|
|
124
|
-
}
|
|
125
|
-
return `${this.getProtocol()}://${host}:${address.port}`;
|
|
126
|
-
}
|
|
127
|
-
host() {
|
|
128
|
-
const address = this.httpServer.address();
|
|
129
|
-
if ((0, shared_helper_1.isString)(address))
|
|
130
|
-
return undefined;
|
|
131
|
-
return address && address.address;
|
|
132
|
-
}
|
|
133
|
-
getProtocol() {
|
|
134
|
-
return this.appOptions && this.appOptions.httpsOptions ? "https" : "http";
|
|
135
|
-
}
|
|
136
|
-
async registerMiddleware(instance) {
|
|
137
|
-
await this.middlewareModule.registerMiddleware(this.middlewareContainer, instance);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
exports.HttpStarter = HttpStarter;
|
package/constants.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare const HOST_METADATA = "host";
|
|
2
|
-
export declare const PATH_METADATA = "path";
|
|
3
|
-
export declare const HEADERS_METADATA = "__headers__";
|
|
4
|
-
export declare const REDIRECT_METADATA = "__redirect__";
|
|
5
|
-
export declare const RESPONSE_PASSTHROUGH_METADATA = "__responsePassthrough__";
|
|
6
|
-
export declare const SSE_METADATA = "__sse__";
|
|
7
|
-
export declare const VERSION_METADATA = "__version__";
|
|
8
|
-
export declare const CONTROLLER_WATERMARK = "__controller__";
|
|
9
|
-
export declare const RENDER_METADATA = "__renderTemplate__";
|
|
10
|
-
export declare const HTTP_CODE_METADATA = "__httpCode__";
|
|
11
|
-
export declare const METHOD_METADATA = "method";
|
|
12
|
-
export declare const REQUEST_CONTEXT_ID: unique symbol;
|
package/constants.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.REQUEST_CONTEXT_ID = exports.METHOD_METADATA = exports.HTTP_CODE_METADATA = exports.RENDER_METADATA = exports.CONTROLLER_WATERMARK = exports.VERSION_METADATA = exports.SSE_METADATA = exports.RESPONSE_PASSTHROUGH_METADATA = exports.REDIRECT_METADATA = exports.HEADERS_METADATA = exports.PATH_METADATA = exports.HOST_METADATA = void 0;
|
|
4
|
-
exports.HOST_METADATA = "host";
|
|
5
|
-
exports.PATH_METADATA = "path";
|
|
6
|
-
exports.HEADERS_METADATA = "__headers__";
|
|
7
|
-
exports.REDIRECT_METADATA = "__redirect__";
|
|
8
|
-
exports.RESPONSE_PASSTHROUGH_METADATA = "__responsePassthrough__";
|
|
9
|
-
exports.SSE_METADATA = "__sse__";
|
|
10
|
-
exports.VERSION_METADATA = "__version__";
|
|
11
|
-
exports.CONTROLLER_WATERMARK = "__controller__";
|
|
12
|
-
exports.RENDER_METADATA = "__renderTemplate__";
|
|
13
|
-
exports.HTTP_CODE_METADATA = "__httpCode__";
|
|
14
|
-
exports.METHOD_METADATA = "method";
|
|
15
|
-
exports.REQUEST_CONTEXT_ID = Symbol("REQUEST_CONTEXT_ID");
|
package/context/context.d.ts
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { IncomingMessage } from "http";
|
|
3
|
-
import { Observable } from "rxjs";
|
|
4
|
-
import { CustomHeader, RedirectResponse } from "./response.controller";
|
|
5
|
-
import { RequestMethod, RouteParamtypes } from "../enums";
|
|
6
|
-
import { VenokContextCreator } from "@venok/core/context";
|
|
7
|
-
import { ContextId, ContextType, PipeTransform } from "@venok/core";
|
|
8
|
-
import { HeaderStream } from "../helpers";
|
|
9
|
-
import { HttpServer } from "../interfaces";
|
|
10
|
-
import { RouterExceptionFiltersContext } from "../filters/context";
|
|
11
|
-
import { ParamData } from "../decorators";
|
|
12
|
-
export interface ParamProperties {
|
|
13
|
-
index: number;
|
|
14
|
-
type: RouteParamtypes | string;
|
|
15
|
-
data: ParamData;
|
|
16
|
-
pipes: PipeTransform[];
|
|
17
|
-
extractValue: <TRequest, TResponse>(req: TRequest, res: TResponse, next: Function) => any;
|
|
18
|
-
}
|
|
19
|
-
export type HandleResponseFn = HandlerResponseBasicFn | HandleSseResponseFn;
|
|
20
|
-
export type HandlerResponseBasicFn = <TResult, TResponse>(result: TResult, res: TResponse, req?: any) => any;
|
|
21
|
-
export type HandleSseResponseFn = <TResult extends Observable<unknown> = any, TResponse extends HeaderStream = any, TRequest extends IncomingMessage = any>(result: TResult, res: TResponse, req: TRequest) => any;
|
|
22
|
-
export interface HandlerMetadata {
|
|
23
|
-
argsLength: number;
|
|
24
|
-
paramtypes: any[];
|
|
25
|
-
httpStatusCode: number;
|
|
26
|
-
responseHeaders: any[];
|
|
27
|
-
hasCustomHeaders: boolean;
|
|
28
|
-
getParamsMetadata: (moduleKey: string, contextId?: ContextId, inquirerId?: string) => (ParamProperties & {
|
|
29
|
-
metatype?: any;
|
|
30
|
-
})[];
|
|
31
|
-
fnHandleResponse: HandleResponseFn;
|
|
32
|
-
}
|
|
33
|
-
export interface IRouteParamsFactory {
|
|
34
|
-
exchangeKeyForValue<TRequest extends Record<string, any> = any, TResponse = any, TResult = any>(key: RouteParamtypes | string, data: any, args: [TRequest, TResponse, Function]): TResult;
|
|
35
|
-
}
|
|
36
|
-
export declare class HttpContextCreator {
|
|
37
|
-
private readonly venokContextCreator;
|
|
38
|
-
private readonly exceptionsFilter;
|
|
39
|
-
private readonly applicationRef;
|
|
40
|
-
private readonly responseController;
|
|
41
|
-
constructor(venokContextCreator: VenokContextCreator, exceptionsFilter: RouterExceptionFiltersContext, applicationRef: HttpServer);
|
|
42
|
-
create(instance: Object, callback: (...args: any[]) => unknown, methodName: string, moduleKey: string, requestMethod: RequestMethod, contextId?: ContextId, inquirerId?: string): (...args: any[]) => Promise<any>;
|
|
43
|
-
getMetadata<TContext extends ContextType = ContextType>(instance: Object, callback: (...args: any[]) => any, methodName: string, moduleKey: string, requestMethod: RequestMethod, contextType: TContext): {
|
|
44
|
-
fnHandleResponse: HandleResponseFn;
|
|
45
|
-
httpStatusCode: number;
|
|
46
|
-
hasCustomHeaders: boolean;
|
|
47
|
-
responseHeaders: CustomHeader[];
|
|
48
|
-
};
|
|
49
|
-
reflectRedirect(callback: (...args: unknown[]) => unknown): RedirectResponse;
|
|
50
|
-
reflectHttpStatusCode(callback: (...args: unknown[]) => unknown): number;
|
|
51
|
-
reflectRenderTemplate(callback: (...args: unknown[]) => unknown): string;
|
|
52
|
-
reflectResponseHeaders(callback: (...args: unknown[]) => unknown): CustomHeader[];
|
|
53
|
-
reflectSse(callback: (...args: unknown[]) => unknown): string;
|
|
54
|
-
createHandleResponseFn(callback: (...args: unknown[]) => unknown, isResponseHandled: boolean, redirectResponse?: RedirectResponse, httpStatusCode?: number): HandleResponseFn;
|
|
55
|
-
private isResponseHandled;
|
|
56
|
-
}
|
package/context/context.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HttpContextCreator = void 0;
|
|
4
|
-
const response_controller_1 = require("./response.controller");
|
|
5
|
-
const constants_1 = require("../constants");
|
|
6
|
-
const enums_1 = require("../enums");
|
|
7
|
-
const constants_2 = require("../../core/injector/constants");
|
|
8
|
-
const constants_3 = require("../../core/constants");
|
|
9
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
10
|
-
const factory_1 = require("../factory");
|
|
11
|
-
class HttpContextCreator {
|
|
12
|
-
constructor(venokContextCreator, exceptionsFilter, applicationRef) {
|
|
13
|
-
this.venokContextCreator = venokContextCreator;
|
|
14
|
-
this.exceptionsFilter = exceptionsFilter;
|
|
15
|
-
this.applicationRef = applicationRef;
|
|
16
|
-
this.responseController = new response_controller_1.RouterResponseController(applicationRef);
|
|
17
|
-
}
|
|
18
|
-
create(instance, callback, methodName, moduleKey, requestMethod, contextId = constants_2.STATIC_CONTEXT, inquirerId) {
|
|
19
|
-
const contextType = "http";
|
|
20
|
-
const { fnHandleResponse, httpStatusCode, responseHeaders, hasCustomHeaders } = this.getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType);
|
|
21
|
-
const doneCallback = async (result, req, res, next) => {
|
|
22
|
-
this.responseController.setStatus(res, httpStatusCode);
|
|
23
|
-
hasCustomHeaders && this.responseController.setHeaders(res, responseHeaders);
|
|
24
|
-
await fnHandleResponse(result, res, req);
|
|
25
|
-
};
|
|
26
|
-
const result = this.venokContextCreator.create(instance, callback, methodName, constants_3.ROUTE_ARGS_METADATA, new factory_1.RouteParamsFactory(), contextId, inquirerId, {
|
|
27
|
-
guards: true,
|
|
28
|
-
interceptors: true,
|
|
29
|
-
filters: false,
|
|
30
|
-
callback: doneCallback,
|
|
31
|
-
}, contextType);
|
|
32
|
-
const exceptionFilter = this.exceptionsFilter.create(instance, callback, moduleKey, contextId, inquirerId);
|
|
33
|
-
return this.venokContextCreator.venokProxy.createProxy(result, exceptionFilter);
|
|
34
|
-
}
|
|
35
|
-
getMetadata(instance, callback, methodName, moduleKey, requestMethod, contextType) {
|
|
36
|
-
const metadata = this.venokContextCreator.contextUtils.reflectCallbackMetadata(instance, methodName, constants_3.ROUTE_ARGS_METADATA) || {};
|
|
37
|
-
const keys = Object.keys(metadata);
|
|
38
|
-
const contextFactory = this.venokContextCreator.contextUtils.getContextFactory(contextType, instance, callback);
|
|
39
|
-
const getParamsMetadata = (moduleKey, contextId = constants_2.STATIC_CONTEXT, inquirerId) => this.venokContextCreator.exchangeKeysForValues(keys, metadata, moduleKey, new factory_1.RouteParamsFactory(), contextId, inquirerId, contextFactory);
|
|
40
|
-
const paramsMetadata = getParamsMetadata(moduleKey);
|
|
41
|
-
const isResponseHandled = this.isResponseHandled(instance, methodName, paramsMetadata);
|
|
42
|
-
const httpRedirectResponse = this.reflectRedirect(callback);
|
|
43
|
-
const fnHandleResponse = this.createHandleResponseFn(callback, isResponseHandled, httpRedirectResponse);
|
|
44
|
-
const httpCode = this.reflectHttpStatusCode(callback);
|
|
45
|
-
const httpStatusCode = httpCode ? httpCode : this.responseController.getStatusByMethod(requestMethod);
|
|
46
|
-
const responseHeaders = this.reflectResponseHeaders(callback);
|
|
47
|
-
const hasCustomHeaders = !(0, shared_helper_1.isEmpty)(responseHeaders);
|
|
48
|
-
return {
|
|
49
|
-
fnHandleResponse,
|
|
50
|
-
httpStatusCode,
|
|
51
|
-
hasCustomHeaders,
|
|
52
|
-
responseHeaders,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
reflectRedirect(callback) {
|
|
56
|
-
return Reflect.getMetadata(constants_1.REDIRECT_METADATA, callback);
|
|
57
|
-
}
|
|
58
|
-
reflectHttpStatusCode(callback) {
|
|
59
|
-
return Reflect.getMetadata(constants_1.HTTP_CODE_METADATA, callback);
|
|
60
|
-
}
|
|
61
|
-
reflectRenderTemplate(callback) {
|
|
62
|
-
return Reflect.getMetadata(constants_1.RENDER_METADATA, callback);
|
|
63
|
-
}
|
|
64
|
-
reflectResponseHeaders(callback) {
|
|
65
|
-
return Reflect.getMetadata(constants_1.HEADERS_METADATA, callback) || [];
|
|
66
|
-
}
|
|
67
|
-
reflectSse(callback) {
|
|
68
|
-
return Reflect.getMetadata(constants_1.SSE_METADATA, callback);
|
|
69
|
-
}
|
|
70
|
-
createHandleResponseFn(callback, isResponseHandled, redirectResponse, httpStatusCode) {
|
|
71
|
-
const renderTemplate = this.reflectRenderTemplate(callback);
|
|
72
|
-
if (renderTemplate) {
|
|
73
|
-
return async (result, res) => {
|
|
74
|
-
return await this.responseController.render(result, res, renderTemplate);
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
if (redirectResponse && (0, shared_helper_1.isString)(redirectResponse.url)) {
|
|
78
|
-
return async (result, res) => {
|
|
79
|
-
await this.responseController.redirect(result, res, redirectResponse);
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
const isSseHandler = !!this.reflectSse(callback);
|
|
83
|
-
if (isSseHandler) {
|
|
84
|
-
return (result, res, req) => {
|
|
85
|
-
this.responseController.sse(result, res.raw || res, req.raw || req, {
|
|
86
|
-
additionalHeaders: res.getHeaders?.(),
|
|
87
|
-
});
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
return async (result, res) => {
|
|
91
|
-
result = await this.responseController.transformToResult(result);
|
|
92
|
-
!isResponseHandled && (await this.responseController.apply(result, res, httpStatusCode));
|
|
93
|
-
return res;
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
isResponseHandled(instance, methodName, paramsMetadata) {
|
|
97
|
-
const hasResponseOrNextDecorator = paramsMetadata.some(({ type }) => type === enums_1.RouteParamtypes.RESPONSE || type === enums_1.RouteParamtypes.NEXT);
|
|
98
|
-
const isPassthroughEnabled = Reflect.getMetadata(constants_1.RESPONSE_PASSTHROUGH_METADATA, instance.constructor, methodName);
|
|
99
|
-
return hasResponseOrNextDecorator && !isPassthroughEnabled;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
exports.HttpContextCreator = HttpContextCreator;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Observable } from "rxjs";
|
|
3
|
-
import { IncomingMessage } from "http";
|
|
4
|
-
import { AdditionalHeaders, WritableHeaderStream } from "../helpers";
|
|
5
|
-
import { HttpServer } from "../interfaces";
|
|
6
|
-
import { RequestMethod } from "../enums";
|
|
7
|
-
export interface CustomHeader {
|
|
8
|
-
name: string;
|
|
9
|
-
value: string;
|
|
10
|
-
}
|
|
11
|
-
export interface RedirectResponse {
|
|
12
|
-
url: string;
|
|
13
|
-
statusCode?: number;
|
|
14
|
-
}
|
|
15
|
-
export declare class RouterResponseController {
|
|
16
|
-
private readonly applicationRef;
|
|
17
|
-
private readonly logger;
|
|
18
|
-
constructor(applicationRef: HttpServer);
|
|
19
|
-
apply<TInput = any, TResponse = any>(result: TInput, response: TResponse, httpStatusCode?: number): Promise<any>;
|
|
20
|
-
redirect<TInput = any, TResponse = any>(resultOrDeferred: TInput, response: TResponse, redirectResponse: RedirectResponse): Promise<void>;
|
|
21
|
-
render<TInput = unknown, TResponse = unknown>(resultOrDeferred: TInput, response: TResponse, template: string): Promise<any>;
|
|
22
|
-
transformToResult(resultOrDeferred: any): Promise<any>;
|
|
23
|
-
getStatusByMethod(requestMethod: RequestMethod): number;
|
|
24
|
-
setHeaders<TResponse = unknown>(response: TResponse, headers: CustomHeader[]): void;
|
|
25
|
-
setStatus<TResponse = unknown>(response: TResponse, statusCode: number): void;
|
|
26
|
-
sse<TInput extends Observable<unknown> = any, TResponse extends WritableHeaderStream = any, TRequest extends IncomingMessage = any>(result: TInput, response: TResponse, request: TRequest, options?: {
|
|
27
|
-
additionalHeaders: AdditionalHeaders;
|
|
28
|
-
}): void;
|
|
29
|
-
private assertObservable;
|
|
30
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RouterResponseController = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const helpers_1 = require("../helpers");
|
|
6
|
-
const shared_helper_1 = require("../../core/helpers/shared.helper");
|
|
7
|
-
const logger_service_1 = require("../../core/services/logger.service");
|
|
8
|
-
const enums_1 = require("../enums");
|
|
9
|
-
class RouterResponseController {
|
|
10
|
-
constructor(applicationRef) {
|
|
11
|
-
this.applicationRef = applicationRef;
|
|
12
|
-
this.logger = new logger_service_1.Logger(RouterResponseController.name);
|
|
13
|
-
}
|
|
14
|
-
async apply(result, response, httpStatusCode) {
|
|
15
|
-
return this.applicationRef.reply(response, result, httpStatusCode);
|
|
16
|
-
}
|
|
17
|
-
async redirect(resultOrDeferred, response, redirectResponse) {
|
|
18
|
-
const result = await this.transformToResult(resultOrDeferred);
|
|
19
|
-
const statusCode = result && result.statusCode
|
|
20
|
-
? result.statusCode
|
|
21
|
-
: redirectResponse.statusCode
|
|
22
|
-
? redirectResponse.statusCode
|
|
23
|
-
: enums_1.HttpStatus.FOUND;
|
|
24
|
-
const url = result && result.url ? result.url : redirectResponse.url;
|
|
25
|
-
this.applicationRef.redirect(response, statusCode, url);
|
|
26
|
-
}
|
|
27
|
-
async render(resultOrDeferred, response, template) {
|
|
28
|
-
const result = await this.transformToResult(resultOrDeferred);
|
|
29
|
-
return this.applicationRef.render(response, template, result);
|
|
30
|
-
}
|
|
31
|
-
async transformToResult(resultOrDeferred) {
|
|
32
|
-
if ((0, rxjs_1.isObservable)(resultOrDeferred)) {
|
|
33
|
-
return (0, rxjs_1.lastValueFrom)(resultOrDeferred);
|
|
34
|
-
}
|
|
35
|
-
return resultOrDeferred;
|
|
36
|
-
}
|
|
37
|
-
getStatusByMethod(requestMethod) {
|
|
38
|
-
switch (requestMethod) {
|
|
39
|
-
case enums_1.RequestMethod.POST:
|
|
40
|
-
return enums_1.HttpStatus.CREATED;
|
|
41
|
-
default:
|
|
42
|
-
return enums_1.HttpStatus.OK;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
setHeaders(response, headers) {
|
|
46
|
-
headers.forEach(({ name, value }) => this.applicationRef.setHeader(response, name, value));
|
|
47
|
-
}
|
|
48
|
-
setStatus(response, statusCode) {
|
|
49
|
-
this.applicationRef.status(response, statusCode);
|
|
50
|
-
}
|
|
51
|
-
sse(result, response, request, options) {
|
|
52
|
-
// It's possible that we sent headers already so don't use a stream
|
|
53
|
-
if (response.writableEnded)
|
|
54
|
-
return;
|
|
55
|
-
this.assertObservable(result);
|
|
56
|
-
const stream = new helpers_1.SseStream(request);
|
|
57
|
-
stream.pipe(response, options);
|
|
58
|
-
const subscription = result
|
|
59
|
-
.pipe((0, rxjs_1.map)((message) => {
|
|
60
|
-
if ((0, shared_helper_1.isObject)(message))
|
|
61
|
-
return message;
|
|
62
|
-
return { data: message };
|
|
63
|
-
}), (0, rxjs_1.debounce)((message) => new Promise((resolve) => stream.writeMessage(message, () => resolve()))), (0, rxjs_1.catchError)((err) => {
|
|
64
|
-
const data = err instanceof Error ? err.message : err;
|
|
65
|
-
stream.writeMessage({ type: "error", data }, (writeError) => {
|
|
66
|
-
if (writeError)
|
|
67
|
-
this.logger.error(writeError);
|
|
68
|
-
});
|
|
69
|
-
return rxjs_1.EMPTY;
|
|
70
|
-
}))
|
|
71
|
-
.subscribe({
|
|
72
|
-
complete: () => {
|
|
73
|
-
response.end();
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
request.on("close", () => {
|
|
77
|
-
subscription.unsubscribe();
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
assertObservable(value) {
|
|
81
|
-
if (!(0, rxjs_1.isObservable)(value)) {
|
|
82
|
-
throw new ReferenceError("You must return an Observable stream to use Server-Sent Events (SSE).");
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
exports.RouterResponseController = RouterResponseController;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { ScopeOptions } from "@venok/core";
|
|
2
|
-
import { VersionOptions } from "../interfaces";
|
|
3
|
-
/**
|
|
4
|
-
* Interface defining options that can be passed to `@Controller()` decorator
|
|
5
|
-
*
|
|
6
|
-
* @publicApi
|
|
7
|
-
*/
|
|
8
|
-
export interface ControllerOptions extends ScopeOptions, VersionOptions {
|
|
9
|
-
/**
|
|
10
|
-
* Specifies an optional `route path prefix`. The prefix is pre-pended to the
|
|
11
|
-
* path specified in any request decorator in the class.
|
|
12
|
-
*
|
|
13
|
-
* Supported only by HTTP-based application (does not apply to non-HTTP microservices).
|
|
14
|
-
*/
|
|
15
|
-
path?: string | string[];
|
|
16
|
-
/**
|
|
17
|
-
* Specifies an optional HTTP Request host filter. When configured, methods
|
|
18
|
-
* within the controller will only be routed if the request host matches the
|
|
19
|
-
* specified value.
|
|
20
|
-
*/
|
|
21
|
-
host?: string | RegExp | Array<string | RegExp>;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Decorator that marks a class as a Venok controller that can receive inbound
|
|
25
|
-
* requests and produce responses.
|
|
26
|
-
*
|
|
27
|
-
* An HTTP Controller responds to inbound HTTP Requests and produces HTTP Responses.
|
|
28
|
-
* It defines a class that provides the context for one or more related route
|
|
29
|
-
* handlers that correspond to HTTP request methods and associated routes
|
|
30
|
-
* for example `GET /api/profile`, `POST /users/resume`.
|
|
31
|
-
*
|
|
32
|
-
* A Microservice Controller responds to requests as well as events, running over
|
|
33
|
-
* a variety of transports. It defines a class that provides a context for
|
|
34
|
-
* one or more message or event handlers.
|
|
35
|
-
*
|
|
36
|
-
* @publicApi
|
|
37
|
-
*/
|
|
38
|
-
export declare function Controller(): ClassDecorator;
|
|
39
|
-
/**
|
|
40
|
-
* Decorator that marks a class as a Venok controller that can receive inbound
|
|
41
|
-
* requests and produce responses.
|
|
42
|
-
*
|
|
43
|
-
* An HTTP Controller responds to inbound HTTP Requests and produces HTTP Responses.
|
|
44
|
-
* It defines a class that provides the context for one or more related route
|
|
45
|
-
* handlers that correspond to HTTP request methods and associated routes
|
|
46
|
-
* for example `GET /api/profile`, `POST /users/resume`.
|
|
47
|
-
*
|
|
48
|
-
* A Microservice Controller responds to requests as well as events, running over
|
|
49
|
-
* a variety of transports. It defines a class that provides a context for
|
|
50
|
-
* one or more message or event handlers.
|
|
51
|
-
*
|
|
52
|
-
* @param {string|Array} prefix string that defines a `route path prefix`. The prefix
|
|
53
|
-
* is pre-pended to the path specified in any request decorator in the class.
|
|
54
|
-
*
|
|
55
|
-
* @publicApi
|
|
56
|
-
*/
|
|
57
|
-
export declare function Controller(prefix: string | string[]): ClassDecorator;
|
|
58
|
-
/**
|
|
59
|
-
* Decorator that marks a class as a Venok controller that can receive inbound
|
|
60
|
-
* requests and produce responses.
|
|
61
|
-
*
|
|
62
|
-
* An HTTP Controller responds to inbound HTTP Requests and produces HTTP Responses.
|
|
63
|
-
* It defines a class that provides the context for one or more related route
|
|
64
|
-
* handlers that correspond to HTTP request methods and associated routes
|
|
65
|
-
* for example `GET /api/profile`, `POST /users/resume`.
|
|
66
|
-
*
|
|
67
|
-
* A Microservice Controller responds to requests as well as events, running over
|
|
68
|
-
* a variety of transports. It defines a class that provides a context for
|
|
69
|
-
* one or more message or event handlers.
|
|
70
|
-
*
|
|
71
|
-
* @param {object} options configuration object specifying:
|
|
72
|
-
*
|
|
73
|
-
* - `scope` - symbol that determines the lifetime of a Controller instance.
|
|
74
|
-
* See Scope for more details.
|
|
75
|
-
* - `prefix` - string that defines a `route path prefix`. The prefix
|
|
76
|
-
* is pre-pended to the path specified in any request decorator in the class.
|
|
77
|
-
* - `version` - string, array of strings, or Symbol that defines the version
|
|
78
|
-
* of all routes in the class. See Versioning for more details.
|
|
79
|
-
*
|
|
80
|
-
* @publicApi
|
|
81
|
-
*/
|
|
82
|
-
export declare function Controller(options: ControllerOptions): ClassDecorator;
|