@tsed/common 6.89.0 → 6.92.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/lib/cjs/builder/PlatformBuilder.d.ts +15 -27
- package/lib/cjs/builder/PlatformBuilder.js +68 -41
- package/lib/cjs/builder/PlatformBuilder.js.map +1 -1
- package/lib/cjs/config/interfaces/index.d.ts +10 -1
- package/lib/cjs/config/interfaces/index.js.map +1 -1
- package/lib/cjs/config/services/PlatformConfiguration.d.ts +9 -13
- package/lib/cjs/config/services/PlatformConfiguration.js +12 -29
- package/lib/cjs/config/services/PlatformConfiguration.js.map +1 -1
- package/lib/cjs/decorators/httpServer.d.ts +1 -0
- package/lib/cjs/decorators/httpServer.js +1 -0
- package/lib/cjs/decorators/httpServer.js.map +1 -1
- package/lib/cjs/decorators/httpsServer.d.ts +1 -0
- package/lib/cjs/decorators/httpsServer.js +1 -0
- package/lib/cjs/decorators/httpsServer.js.map +1 -1
- package/lib/cjs/interfaces/PlatformAdapter.d.ts +19 -0
- package/lib/cjs/interfaces/PlatformAdapter.js +3 -0
- package/lib/cjs/interfaces/PlatformAdapter.js.map +1 -0
- package/lib/cjs/interfaces/index.d.ts +1 -0
- package/lib/cjs/interfaces/index.js +1 -0
- package/lib/cjs/interfaces/index.js.map +1 -1
- package/lib/cjs/services/PlatformTest.d.ts +5 -4
- package/lib/cjs/services/PlatformTest.js +9 -14
- package/lib/cjs/services/PlatformTest.js.map +1 -1
- package/lib/cjs/utils/createHttpServer.d.ts +3 -2
- package/lib/cjs/utils/createHttpServer.js +23 -24
- package/lib/cjs/utils/createHttpServer.js.map +1 -1
- package/lib/cjs/utils/createHttpsServer.d.ts +3 -2
- package/lib/cjs/utils/createHttpsServer.js +23 -25
- package/lib/cjs/utils/createHttpsServer.js.map +1 -1
- package/lib/cjs/utils/createInjector.js +0 -4
- package/lib/cjs/utils/createInjector.js.map +1 -1
- package/lib/cjs/utils/listenServer.d.ts +6 -9
- package/lib/cjs/utils/listenServer.js +11 -7
- package/lib/cjs/utils/listenServer.js.map +1 -1
- package/lib/esm/builder/PlatformBuilder.js +69 -42
- package/lib/esm/builder/PlatformBuilder.js.map +1 -1
- package/lib/esm/config/interfaces/index.js.map +1 -1
- package/lib/esm/config/services/PlatformConfiguration.js +12 -29
- package/lib/esm/config/services/PlatformConfiguration.js.map +1 -1
- package/lib/esm/decorators/httpServer.js +1 -0
- package/lib/esm/decorators/httpServer.js.map +1 -1
- package/lib/esm/decorators/httpsServer.js +1 -0
- package/lib/esm/decorators/httpsServer.js.map +1 -1
- package/lib/esm/interfaces/PlatformAdapter.js +2 -0
- package/lib/esm/interfaces/PlatformAdapter.js.map +1 -0
- package/lib/esm/interfaces/index.js +1 -0
- package/lib/esm/interfaces/index.js.map +1 -1
- package/lib/esm/services/PlatformTest.js +9 -14
- package/lib/esm/services/PlatformTest.js.map +1 -1
- package/lib/esm/utils/createHttpServer.js +22 -22
- package/lib/esm/utils/createHttpServer.js.map +1 -1
- package/lib/esm/utils/createHttpsServer.js +22 -23
- package/lib/esm/utils/createHttpsServer.js.map +1 -1
- package/lib/esm/utils/createInjector.js +0 -4
- package/lib/esm/utils/createInjector.js.map +1 -1
- package/lib/esm/utils/listenServer.js +11 -7
- package/lib/esm/utils/listenServer.js.map +1 -1
- package/lib/types/builder/PlatformBuilder.d.ts +15 -27
- package/lib/types/config/interfaces/index.d.ts +10 -1
- package/lib/types/config/services/PlatformConfiguration.d.ts +9 -13
- package/lib/types/decorators/httpServer.d.ts +1 -0
- package/lib/types/decorators/httpsServer.d.ts +1 -0
- package/lib/types/interfaces/PlatformAdapter.d.ts +19 -0
- package/lib/types/interfaces/index.d.ts +1 -0
- package/lib/types/services/PlatformTest.d.ts +5 -4
- package/lib/types/utils/createHttpServer.d.ts +3 -2
- package/lib/types/utils/createHttpsServer.d.ts +3 -2
- package/lib/types/utils/listenServer.d.ts +6 -9
- package/package.json +15 -16
|
@@ -4,35 +4,17 @@ import { InjectorService, IProvider } from "@tsed/di";
|
|
|
4
4
|
import { Platform } from "../services/Platform";
|
|
5
5
|
import { PlatformApplication } from "../services/PlatformApplication";
|
|
6
6
|
import { IncomingMessage, ServerResponse } from "http";
|
|
7
|
-
|
|
8
|
-
* @ignore
|
|
9
|
-
*/
|
|
10
|
-
export interface PlatformType<T = any> extends Type<T> {
|
|
11
|
-
providers: IProvider[];
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* @ignore
|
|
15
|
-
*/
|
|
16
|
-
export interface PlatformBootstrap {
|
|
17
|
-
create(module: Type<any>, settings?: Partial<TsED.Configuration>): PlatformBuilder;
|
|
18
|
-
bootstrap(module: Type<any>, settings?: Partial<TsED.Configuration>): Promise<PlatformBuilder>;
|
|
19
|
-
}
|
|
20
|
-
export interface PlatformBuilderOptions {
|
|
21
|
-
name: string;
|
|
22
|
-
providers: IProvider[];
|
|
23
|
-
settings: any;
|
|
24
|
-
module: Type<any>;
|
|
25
|
-
}
|
|
7
|
+
import { PlatformAdapter, PlatformBuilderSettings } from "../interfaces/PlatformAdapter";
|
|
26
8
|
/**
|
|
27
9
|
* @platform
|
|
28
10
|
*/
|
|
29
|
-
export declare
|
|
11
|
+
export declare class PlatformBuilder<App = TsED.Application, Router = TsED.Router> {
|
|
30
12
|
#private;
|
|
31
|
-
static
|
|
13
|
+
static adapter: Type<PlatformAdapter>;
|
|
32
14
|
readonly name: string;
|
|
33
15
|
protected startedAt: Date;
|
|
34
16
|
protected current: Date;
|
|
35
|
-
constructor(
|
|
17
|
+
protected constructor(adapter: Type<PlatformAdapter<App, Router>> | undefined, module: Type, settings: Partial<TsED.Configuration>);
|
|
36
18
|
get injector(): InjectorService;
|
|
37
19
|
get rootModule(): any;
|
|
38
20
|
get app(): PlatformApplication<App, Router>;
|
|
@@ -61,7 +43,14 @@ export declare abstract class PlatformBuilder<App = TsED.Application, Router = T
|
|
|
61
43
|
get settings(): TsED.Configuration & import("@tsed/di").DIConfiguration;
|
|
62
44
|
get logger(): import("@tsed/di").DILogger;
|
|
63
45
|
get disableBootstrapLog(): boolean | undefined;
|
|
64
|
-
static
|
|
46
|
+
static create<App = TsED.Application, Router = TsED.Router>(module: Type<any>, settings: PlatformBuilderSettings<App, Router>): PlatformBuilder<App, Router>;
|
|
47
|
+
static build<App = TsED.Application, Router = TsED.Router>(module: Type<any>, { adapter, ...settings }: PlatformBuilderSettings<App, Router>): PlatformBuilder<App, Router>;
|
|
48
|
+
/**
|
|
49
|
+
* Bootstrap a server application
|
|
50
|
+
* @param module
|
|
51
|
+
* @param settings
|
|
52
|
+
*/
|
|
53
|
+
static bootstrap<App = TsED.Application, Router = TsED.Router>(module: Type<any>, settings: PlatformBuilderSettings<App, Router>): Promise<PlatformBuilder<App, Router>>;
|
|
65
54
|
callback(): (req: IncomingMessage, res: ServerResponse) => void;
|
|
66
55
|
callback(req: IncomingMessage, res: ServerResponse): void;
|
|
67
56
|
log(...data: any[]): any;
|
|
@@ -93,13 +82,14 @@ export declare abstract class PlatformBuilder<App = TsED.Application, Router = T
|
|
|
93
82
|
addControllers(endpoint: string, controllers: any | string | (any | string)[]): void;
|
|
94
83
|
runLifecycle(): Promise<this>;
|
|
95
84
|
loadInjector(): Promise<void>;
|
|
96
|
-
listen(): Promise<void>;
|
|
85
|
+
listen(network?: boolean): Promise<void>;
|
|
97
86
|
stop(): Promise<void>;
|
|
98
87
|
ready(): Promise<void>;
|
|
99
88
|
callHook(hook: string, ...args: any[]): Promise<void>;
|
|
100
89
|
loadStatics(hook: string): Promise<void>;
|
|
101
90
|
useProvider(token: Type<any>, settings?: Partial<IProvider>): this;
|
|
102
91
|
bootstrap(): Promise<this>;
|
|
92
|
+
protected loadRoutes(): Promise<void>;
|
|
103
93
|
protected diff(): string;
|
|
104
94
|
protected importProviders(): Promise<void>;
|
|
105
95
|
/**
|
|
@@ -108,9 +98,7 @@ export declare abstract class PlatformBuilder<App = TsED.Application, Router = T
|
|
|
108
98
|
* @protected
|
|
109
99
|
*/
|
|
110
100
|
protected loadMiddlewaresFor(hook: string): void;
|
|
111
|
-
protected
|
|
112
|
-
protected useContext(): this;
|
|
101
|
+
protected createHttpServers(): void;
|
|
113
102
|
protected listenServers(): Promise<void>;
|
|
114
103
|
protected logRoutes(): Promise<void>;
|
|
115
|
-
protected loadRoutes(): Promise<void>;
|
|
116
104
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _PlatformBuilder_injector, _PlatformBuilder_rootModule;
|
|
2
|
+
var _PlatformBuilder_injector, _PlatformBuilder_rootModule, _PlatformBuilder_promise, _PlatformBuilder_adapter, _PlatformBuilder_servers;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.PlatformBuilder = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
@@ -17,17 +17,28 @@ const getConfiguration_1 = require("../utils/getConfiguration");
|
|
|
17
17
|
* @platform
|
|
18
18
|
*/
|
|
19
19
|
class PlatformBuilder {
|
|
20
|
-
constructor(
|
|
20
|
+
constructor(adapter, module, settings) {
|
|
21
21
|
this.name = "";
|
|
22
22
|
this.startedAt = new Date();
|
|
23
23
|
this.current = new Date();
|
|
24
24
|
_PlatformBuilder_injector.set(this, void 0);
|
|
25
25
|
_PlatformBuilder_rootModule.set(this, void 0);
|
|
26
|
-
this
|
|
26
|
+
_PlatformBuilder_promise.set(this, void 0);
|
|
27
|
+
_PlatformBuilder_adapter.set(this, void 0);
|
|
28
|
+
_PlatformBuilder_servers.set(this, void 0);
|
|
27
29
|
(0, tslib_1.__classPrivateFieldSet)(this, _PlatformBuilder_rootModule, module, "f");
|
|
30
|
+
const adapterKlass = adapter || PlatformBuilder.adapter;
|
|
31
|
+
const name = (0, core_1.nameOf)(adapterKlass).replace("Platform", "").toLowerCase();
|
|
28
32
|
const configuration = (0, getConfiguration_1.getConfiguration)(settings, module);
|
|
29
33
|
configuration.PLATFORM_NAME = name;
|
|
30
|
-
|
|
34
|
+
this.name = name;
|
|
35
|
+
(0, tslib_1.__classPrivateFieldSet)(this, _PlatformBuilder_adapter, new adapterKlass(this), "f");
|
|
36
|
+
(0, tslib_1.__classPrivateFieldSet)(this, _PlatformBuilder_injector, (0, utils_1.createInjector)({
|
|
37
|
+
settings: configuration,
|
|
38
|
+
providers: (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").providers
|
|
39
|
+
}), "f");
|
|
40
|
+
this.createHttpServers();
|
|
41
|
+
(0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").onInit && (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").onInit();
|
|
31
42
|
this.log("Injector created...");
|
|
32
43
|
}
|
|
33
44
|
get injector() {
|
|
@@ -73,14 +84,25 @@ class PlatformBuilder {
|
|
|
73
84
|
var _a;
|
|
74
85
|
return (_a = this.settings.logger) === null || _a === void 0 ? void 0 : _a.disableBootstrapLog;
|
|
75
86
|
}
|
|
76
|
-
static
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
settings,
|
|
81
|
-
|
|
87
|
+
static create(module, settings) {
|
|
88
|
+
return this.build(module, {
|
|
89
|
+
httpsPort: false,
|
|
90
|
+
httpPort: false,
|
|
91
|
+
...settings,
|
|
92
|
+
disableComponentsScan: true
|
|
82
93
|
});
|
|
83
94
|
}
|
|
95
|
+
static build(module, { adapter, ...settings }) {
|
|
96
|
+
return new PlatformBuilder(adapter, module, settings);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Bootstrap a server application
|
|
100
|
+
* @param module
|
|
101
|
+
* @param settings
|
|
102
|
+
*/
|
|
103
|
+
static async bootstrap(module, settings) {
|
|
104
|
+
return this.build(module, settings).bootstrap();
|
|
105
|
+
}
|
|
84
106
|
callback(req, res) {
|
|
85
107
|
if (req && res) {
|
|
86
108
|
return this.app.callback()(req, res);
|
|
@@ -125,8 +147,8 @@ class PlatformBuilder {
|
|
|
125
147
|
(0, di_1.setLoggerLevel)(this.injector);
|
|
126
148
|
await this.importProviders();
|
|
127
149
|
await this.loadInjector();
|
|
128
|
-
this.useContext();
|
|
129
|
-
this.useRouter();
|
|
150
|
+
(0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").useContext && (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").useContext();
|
|
151
|
+
(0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").useRouter && (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").useRouter();
|
|
130
152
|
await this.loadRoutes();
|
|
131
153
|
await this.logRoutes();
|
|
132
154
|
return this;
|
|
@@ -143,9 +165,14 @@ class PlatformBuilder {
|
|
|
143
165
|
this.log("Settings and injector loaded...");
|
|
144
166
|
await this.callHook("$afterInit");
|
|
145
167
|
}
|
|
146
|
-
async listen() {
|
|
168
|
+
async listen(network = true) {
|
|
169
|
+
if (!(0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_promise, "f")) {
|
|
170
|
+
await this.bootstrap();
|
|
171
|
+
}
|
|
147
172
|
await this.callHook("$beforeListen");
|
|
148
|
-
|
|
173
|
+
if (network) {
|
|
174
|
+
await this.listenServers();
|
|
175
|
+
}
|
|
149
176
|
await this.callHook("$afterListen");
|
|
150
177
|
await this.ready();
|
|
151
178
|
}
|
|
@@ -182,7 +209,29 @@ class PlatformBuilder {
|
|
|
182
209
|
return this;
|
|
183
210
|
}
|
|
184
211
|
async bootstrap() {
|
|
185
|
-
|
|
212
|
+
(0, tslib_1.__classPrivateFieldSet)(this, _PlatformBuilder_promise, (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_promise, "f") || this.runLifecycle(), "f");
|
|
213
|
+
return (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_promise, "f");
|
|
214
|
+
}
|
|
215
|
+
async loadRoutes() {
|
|
216
|
+
var _a, _b;
|
|
217
|
+
(0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").beforeLoadRoutes && (await (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").beforeLoadRoutes());
|
|
218
|
+
// istanbul ignore next
|
|
219
|
+
if (((_a = this.settings.logger) === null || _a === void 0 ? void 0 : _a.level) !== "off") {
|
|
220
|
+
const { PlatformLogMiddleware } = await Promise.resolve().then(() => (0, tslib_1.__importStar)(require("@tsed/platform-log-middleware")));
|
|
221
|
+
this.app.use(PlatformLogMiddleware);
|
|
222
|
+
}
|
|
223
|
+
if ((_b = this.settings.acceptMimes) === null || _b === void 0 ? void 0 : _b.length) {
|
|
224
|
+
this.app.use(middlewares_1.GlobalAcceptMimesMiddleware);
|
|
225
|
+
}
|
|
226
|
+
this.log("Load routes");
|
|
227
|
+
await this.loadStatics("$beforeRoutesInit");
|
|
228
|
+
await this.callHook("$beforeRoutesInit");
|
|
229
|
+
const routes = this.injector.settings.get("routes");
|
|
230
|
+
this.platform.addRoutes(routes);
|
|
231
|
+
await this.callHook("$onRoutesInit");
|
|
232
|
+
await this.loadStatics("$afterRoutesInit");
|
|
233
|
+
await this.callHook("$afterRoutesInit");
|
|
234
|
+
(0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").afterLoadRoutes && (await (0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_adapter, "f").afterLoadRoutes());
|
|
186
235
|
}
|
|
187
236
|
diff() {
|
|
188
237
|
const ms = di_1.colors.yellow(`+${new Date().getTime() - this.current.getTime()}ms`);
|
|
@@ -206,14 +255,11 @@ class PlatformBuilder {
|
|
|
206
255
|
this.app.use(use);
|
|
207
256
|
});
|
|
208
257
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
useContext() {
|
|
213
|
-
return this;
|
|
258
|
+
createHttpServers() {
|
|
259
|
+
(0, tslib_1.__classPrivateFieldSet)(this, _PlatformBuilder_servers, [(0, utils_1.createHttpServer)((0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_injector, "f"), this.callback()), (0, utils_1.createHttpsServer)((0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_injector, "f"), this.callback())].filter(Boolean), "f");
|
|
214
260
|
}
|
|
215
261
|
async listenServers() {
|
|
216
|
-
await Promise.all(
|
|
262
|
+
await Promise.all((0, tslib_1.__classPrivateFieldGet)(this, _PlatformBuilder_servers, "f").map((cb) => cb && cb()));
|
|
217
263
|
}
|
|
218
264
|
async logRoutes() {
|
|
219
265
|
var _a;
|
|
@@ -223,26 +269,7 @@ class PlatformBuilder {
|
|
|
223
269
|
logger.info((0, utils_1.printRoutes)(await this.injector.alterAsync("$logRoutes", platform.getRoutes())));
|
|
224
270
|
}
|
|
225
271
|
}
|
|
226
|
-
async loadRoutes() {
|
|
227
|
-
var _a, _b;
|
|
228
|
-
// istanbul ignore next
|
|
229
|
-
if (((_a = this.settings.logger) === null || _a === void 0 ? void 0 : _a.level) !== "off") {
|
|
230
|
-
const { PlatformLogMiddleware } = await Promise.resolve().then(() => (0, tslib_1.__importStar)(require("@tsed/platform-log-middleware")));
|
|
231
|
-
this.app.use(PlatformLogMiddleware);
|
|
232
|
-
}
|
|
233
|
-
if ((_b = this.settings.acceptMimes) === null || _b === void 0 ? void 0 : _b.length) {
|
|
234
|
-
this.app.use(middlewares_1.GlobalAcceptMimesMiddleware);
|
|
235
|
-
}
|
|
236
|
-
this.log("Load routes");
|
|
237
|
-
await this.loadStatics("$beforeRoutesInit");
|
|
238
|
-
await this.callHook("$beforeRoutesInit");
|
|
239
|
-
const routes = this.injector.settings.get("routes");
|
|
240
|
-
this.platform.addRoutes(routes);
|
|
241
|
-
await this.callHook("$onRoutesInit");
|
|
242
|
-
await this.loadStatics("$afterRoutesInit");
|
|
243
|
-
await this.callHook("$afterRoutesInit");
|
|
244
|
-
}
|
|
245
272
|
}
|
|
246
273
|
exports.PlatformBuilder = PlatformBuilder;
|
|
247
|
-
_PlatformBuilder_injector = new WeakMap(), _PlatformBuilder_rootModule = new WeakMap();
|
|
274
|
+
_PlatformBuilder_injector = new WeakMap(), _PlatformBuilder_rootModule = new WeakMap(), _PlatformBuilder_promise = new WeakMap(), _PlatformBuilder_adapter = new WeakMap(), _PlatformBuilder_servers = new WeakMap();
|
|
248
275
|
//# sourceMappingURL=PlatformBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformBuilder.js","sourceRoot":"","sources":["../../../src/builder/PlatformBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import {nameOf, Type} from \"@tsed/core\";\nimport {colors, createContainer, InjectorService, IProvider, ProviderScope, setLoggerLevel} from \"@tsed/di\";\nimport {importProviders} from \"@tsed/components-scan\";\nimport {getMiddlewaresForHook} from \"@tsed/platform-middlewares\";\nimport {GlobalAcceptMimesMiddleware} from \"../middlewares\";\nimport {Platform} from \"../services/Platform\";\nimport {PlatformApplication} from \"../services/PlatformApplication\";\nimport {createInjector, listenHttpServer, listenHttpsServer, printRoutes} from \"../utils\";\nimport {PlatformStaticsSettings} from \"../config/interfaces/PlatformStaticsSettings\";\nimport {getStaticsOptions} from \"../utils/getStaticsOptions\";\nimport {Route} from \"../interfaces/Route\";\nimport {getConfiguration} from \"../utils/getConfiguration\";\nimport {IncomingMessage, ServerResponse} from \"http\";\n\n/**\n * @ignore\n */\nexport interface PlatformType<T = any> extends Type<T> {\n providers: IProvider[];\n}\n\n/**\n * @ignore\n */\nexport interface PlatformBootstrap {\n create(module: Type<any>, settings?: Partial<TsED.Configuration>): PlatformBuilder;\n\n bootstrap(module: Type<any>, settings?: Partial<TsED.Configuration>): Promise<PlatformBuilder>;\n}\n\nexport interface PlatformBuilderOptions {\n name: string;\n providers: IProvider[];\n settings: any;\n module: Type<any>;\n}\n\n/**\n * @platform\n */\nexport abstract class PlatformBuilder<App = TsED.Application, Router = TsED.Router> {\n static currentPlatform: Type<PlatformBuilder<any, any>> & PlatformBootstrap;\n\n readonly name: string = \"\";\n protected startedAt = new Date();\n protected current = new Date();\n\n #injector: InjectorService;\n #rootModule: Type<any>;\n\n constructor({name, providers, settings, module}: PlatformBuilderOptions) {\n this.name = name;\n this.#rootModule = module;\n\n const configuration = getConfiguration(settings, module);\n configuration.PLATFORM_NAME = name;\n\n this.#injector = createInjector({settings: configuration, providers});\n\n this.log(\"Injector created...\");\n }\n\n get injector(): InjectorService {\n return this.#injector;\n }\n\n get rootModule(): any {\n return this.#injector.get(this.#rootModule);\n }\n\n get app(): PlatformApplication<App, Router> {\n return this.injector.get<PlatformApplication<App, Router>>(PlatformApplication)!;\n }\n\n get platform() {\n return this.injector.get<Platform>(Platform)!;\n }\n\n /**\n * Return the settings configured by the decorator @@Configuration@@.\n *\n * ```typescript\n * @Configuration({\n * rootDir: Path.resolve(__dirname),\n * port: 8000,\n * httpsPort: 8080,\n * mount: {\n * \"/rest\": \"${rootDir}/controllers/**\\/*.js\"\n * }\n * })\n * export class Server {\n * $onInit(){\n * console.log(this.settings); // {rootDir, port, httpsPort,...}\n * }\n * }\n * ```\n *\n * @returns {PlatformConfiguration}\n */\n get settings() {\n return this.injector.settings;\n }\n\n get logger() {\n return this.injector.logger;\n }\n\n get disableBootstrapLog() {\n return this.settings.logger?.disableBootstrapLog;\n }\n\n static build<T extends PlatformBuilder<any, any>>(\n platformBuildClass: PlatformType<T>,\n module: Type<any>,\n settings: Partial<TsED.Configuration> = {}\n ): T {\n return new platformBuildClass({\n name: nameOf(platformBuildClass).replace(\"Platform\", \"\").toLowerCase(),\n module,\n settings,\n providers: platformBuildClass.providers\n });\n }\n\n callback(): (req: IncomingMessage, res: ServerResponse) => void;\n callback(req: IncomingMessage, res: ServerResponse): void;\n callback(req?: IncomingMessage, res?: ServerResponse) {\n if (req && res) {\n return this.app.callback()(req, res);\n }\n\n return this.app.callback();\n }\n\n log(...data: any[]) {\n return !this.disableBootstrapLog && this.logger.info(...data, this.diff());\n }\n\n /**\n * Add classes to the components list\n * @param classes\n */\n public addComponents(classes: any | any[]) {\n this.settings.componentsScan = this.settings.componentsScan.concat(classes);\n\n return this;\n }\n\n /**\n * Add classes decorated by @@Controller@@ to components container.\n *\n * ### Example\n *\n * ```typescript\n * @Controller('/ctrl')\n * class MyController{\n * }\n *\n * platform.addControllers('/rest', [MyController])\n * ```\n *\n * ::: tip\n * If the MyController class isn't decorated, the class will be ignored.\n * :::\n *\n * @param {string} endpoint\n * @param {any[]} controllers\n */\n public addControllers(endpoint: string, controllers: any | string | (any | string)[]) {\n this.settings.mount[endpoint] = (this.settings.mount[endpoint] || []).concat(controllers);\n }\n\n public async runLifecycle() {\n setLoggerLevel(this.injector);\n\n await this.importProviders();\n await this.loadInjector();\n\n this.useContext();\n this.useRouter();\n\n await this.loadRoutes();\n await this.logRoutes();\n\n return this;\n }\n\n async loadInjector() {\n const {injector} = this;\n this.log(\"Build providers\");\n\n const container = createContainer();\n\n container.addProvider(this.#rootModule, {\n type: \"server:module\",\n scope: ProviderScope.SINGLETON\n });\n\n await injector.load(container);\n\n this.log(\"Settings and injector loaded...\");\n\n await this.callHook(\"$afterInit\");\n }\n\n async listen() {\n await this.callHook(\"$beforeListen\");\n\n await this.listenServers();\n\n await this.callHook(\"$afterListen\");\n\n await this.ready();\n }\n\n async stop() {\n await this.callHook(\"$onDestroy\");\n return this.injector.destroy();\n }\n\n public async ready() {\n const {startedAt} = this;\n\n await this.callHook(\"$onReady\");\n await this.injector.emit(\"$onServerReady\");\n\n this.log(`Started in ${new Date().getTime() - startedAt.getTime()} ms`);\n }\n\n async callHook(hook: string, ...args: any[]) {\n const {injector} = this;\n\n if (!this.disableBootstrapLog) {\n injector.logger.debug(`\\x1B[1mCall hook ${hook}\\x1B[22m`);\n }\n\n // Load middlewares for the given hook\n this.loadMiddlewaresFor(hook);\n\n // call hooks added by providers\n await injector.emit(hook, ...args);\n }\n\n async loadStatics(hook: string): Promise<void> {\n const statics = this.settings.get<PlatformStaticsSettings>(\"statics\");\n\n getStaticsOptions(statics).forEach(({path, options}) => {\n if (options.hook === hook) {\n this.platform.app.statics(path, options);\n }\n });\n }\n\n useProvider(token: Type<any>, settings?: Partial<IProvider>) {\n this.injector.addProvider(token, settings);\n\n return this;\n }\n\n async bootstrap() {\n return this.runLifecycle();\n }\n\n protected diff() {\n const ms = colors.yellow(`+${new Date().getTime() - this.current.getTime()}ms`);\n this.current = new Date();\n return ms;\n }\n\n protected async importProviders() {\n this.injector.logger.debug(\"Scan components\");\n\n const providers = await importProviders(this.injector.settings, [\"imports\", \"mount\", \"componentsScan\"]);\n const routes = providers.filter((provider) => !!provider.route).map(({route, token}) => ({route, token}));\n\n this.settings.set(\"routes\", routes);\n this.log(\"Providers loaded...\");\n }\n\n /**\n * Load middlewares from configuration for the given hook\n * @param hook\n * @protected\n */\n protected loadMiddlewaresFor(hook: string): void {\n return getMiddlewaresForHook(hook, this.settings, \"$beforeRoutesInit\").forEach(({use}) => {\n this.app.use(use);\n });\n }\n\n protected useRouter(): this {\n return this;\n }\n\n protected useContext(): this {\n return this;\n }\n\n protected async listenServers(): Promise<void> {\n await Promise.all([listenHttpServer(this.injector), listenHttpsServer(this.injector)]);\n }\n\n protected async logRoutes() {\n const {logger, platform} = this;\n\n this.log(\"Routes mounted...\");\n\n if (!this.settings.logger?.disableRoutesSummary && !this.disableBootstrapLog) {\n logger.info(printRoutes(await this.injector.alterAsync(\"$logRoutes\", platform.getRoutes())));\n }\n }\n\n protected async loadRoutes() {\n // istanbul ignore next\n if (this.settings.logger?.level !== \"off\") {\n const {PlatformLogMiddleware} = await import(\"@tsed/platform-log-middleware\");\n this.app.use(PlatformLogMiddleware);\n }\n\n if (this.settings.acceptMimes?.length) {\n this.app.use(GlobalAcceptMimesMiddleware);\n }\n\n this.log(\"Load routes\");\n\n await this.loadStatics(\"$beforeRoutesInit\");\n await this.callHook(\"$beforeRoutesInit\");\n\n const routes = this.injector.settings.get<Route[]>(\"routes\");\n\n this.platform.addRoutes(routes);\n\n await this.callHook(\"$onRoutesInit\");\n\n await this.loadStatics(\"$afterRoutesInit\");\n\n await this.callHook(\"$afterRoutesInit\");\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlatformBuilder.js","sourceRoot":"","sources":["../../../src/builder/PlatformBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import {nameOf, Type} from \"@tsed/core\";\nimport {colors, createContainer, InjectorService, IProvider, ProviderScope, setLoggerLevel} from \"@tsed/di\";\nimport {importProviders} from \"@tsed/components-scan\";\nimport {getMiddlewaresForHook} from \"@tsed/platform-middlewares\";\nimport {GlobalAcceptMimesMiddleware} from \"../middlewares\";\nimport {Platform} from \"../services/Platform\";\nimport {PlatformApplication} from \"../services/PlatformApplication\";\nimport {createHttpServer, createHttpsServer, createInjector, printRoutes} from \"../utils\";\nimport {PlatformStaticsSettings} from \"../config/interfaces/PlatformStaticsSettings\";\nimport {getStaticsOptions} from \"../utils/getStaticsOptions\";\nimport {Route} from \"../interfaces/Route\";\nimport {getConfiguration} from \"../utils/getConfiguration\";\nimport {IncomingMessage, ServerResponse} from \"http\";\nimport {PlatformAdapter, PlatformBuilderSettings} from \"../interfaces/PlatformAdapter\";\n\n/**\n * @platform\n */\nexport class PlatformBuilder<App = TsED.Application, Router = TsED.Router> {\n public static adapter: Type<PlatformAdapter>;\n\n readonly name: string = \"\";\n protected startedAt = new Date();\n protected current = new Date();\n\n #injector: InjectorService;\n #rootModule: Type<any>;\n #promise: Promise<this>;\n #adapter: PlatformAdapter<App, Router>;\n #servers: (() => Promise<void>)[];\n\n protected constructor(adapter: Type<PlatformAdapter<App, Router>> | undefined, module: Type, settings: Partial<TsED.Configuration>) {\n this.#rootModule = module;\n const adapterKlass = adapter || PlatformBuilder.adapter;\n const name = nameOf(adapterKlass).replace(\"Platform\", \"\").toLowerCase();\n\n const configuration = getConfiguration(settings, module);\n configuration.PLATFORM_NAME = name;\n this.name = name;\n this.#adapter = new adapterKlass(this);\n\n this.#injector = createInjector({\n settings: configuration,\n providers: this.#adapter.providers\n });\n\n this.createHttpServers();\n\n this.#adapter.onInit && this.#adapter.onInit();\n\n this.log(\"Injector created...\");\n }\n\n get injector(): InjectorService {\n return this.#injector;\n }\n\n get rootModule(): any {\n return this.#injector.get(this.#rootModule);\n }\n\n get app(): PlatformApplication<App, Router> {\n return this.injector.get<PlatformApplication<App, Router>>(PlatformApplication)!;\n }\n\n get platform() {\n return this.injector.get<Platform>(Platform)!;\n }\n\n /**\n * Return the settings configured by the decorator @@Configuration@@.\n *\n * ```typescript\n * @Configuration({\n * rootDir: Path.resolve(__dirname),\n * port: 8000,\n * httpsPort: 8080,\n * mount: {\n * \"/rest\": \"${rootDir}/controllers/**\\/*.js\"\n * }\n * })\n * export class Server {\n * $onInit(){\n * console.log(this.settings); // {rootDir, port, httpsPort,...}\n * }\n * }\n * ```\n *\n * @returns {PlatformConfiguration}\n */\n get settings() {\n return this.injector.settings;\n }\n\n get logger() {\n return this.injector.logger;\n }\n\n get disableBootstrapLog() {\n return this.settings.logger?.disableBootstrapLog;\n }\n\n static create<App = TsED.Application, Router = TsED.Router>(module: Type<any>, settings: PlatformBuilderSettings<App, Router>) {\n return this.build(module, {\n httpsPort: false,\n httpPort: false,\n ...settings,\n disableComponentsScan: true\n });\n }\n\n static build<App = TsED.Application, Router = TsED.Router>(\n module: Type<any>,\n {adapter, ...settings}: PlatformBuilderSettings<App, Router>\n ) {\n return new PlatformBuilder(adapter, module, settings);\n }\n\n /**\n * Bootstrap a server application\n * @param module\n * @param settings\n */\n static async bootstrap<App = TsED.Application, Router = TsED.Router>(module: Type<any>, settings: PlatformBuilderSettings<App, Router>) {\n return this.build<App, Router>(module, settings).bootstrap();\n }\n\n callback(): (req: IncomingMessage, res: ServerResponse) => void;\n callback(req: IncomingMessage, res: ServerResponse): void;\n callback(req?: IncomingMessage, res?: ServerResponse) {\n if (req && res) {\n return this.app.callback()(req, res);\n }\n\n return this.app.callback();\n }\n\n log(...data: any[]) {\n return !this.disableBootstrapLog && this.logger.info(...data, this.diff());\n }\n\n /**\n * Add classes to the components list\n * @param classes\n */\n public addComponents(classes: any | any[]) {\n this.settings.componentsScan = this.settings.componentsScan.concat(classes);\n\n return this;\n }\n\n /**\n * Add classes decorated by @@Controller@@ to components container.\n *\n * ### Example\n *\n * ```typescript\n * @Controller('/ctrl')\n * class MyController{\n * }\n *\n * platform.addControllers('/rest', [MyController])\n * ```\n *\n * ::: tip\n * If the MyController class isn't decorated, the class will be ignored.\n * :::\n *\n * @param {string} endpoint\n * @param {any[]} controllers\n */\n public addControllers(endpoint: string, controllers: any | string | (any | string)[]) {\n this.settings.mount[endpoint] = (this.settings.mount[endpoint] || []).concat(controllers);\n }\n\n public async runLifecycle() {\n setLoggerLevel(this.injector);\n\n await this.importProviders();\n await this.loadInjector();\n\n this.#adapter.useContext && this.#adapter.useContext();\n this.#adapter.useRouter && this.#adapter.useRouter();\n\n await this.loadRoutes();\n await this.logRoutes();\n\n return this;\n }\n\n async loadInjector() {\n const {injector} = this;\n this.log(\"Build providers\");\n\n const container = createContainer();\n\n container.addProvider(this.#rootModule, {\n type: \"server:module\",\n scope: ProviderScope.SINGLETON\n });\n\n await injector.load(container);\n\n this.log(\"Settings and injector loaded...\");\n\n await this.callHook(\"$afterInit\");\n }\n\n async listen(network = true) {\n if (!this.#promise) {\n await this.bootstrap();\n }\n\n await this.callHook(\"$beforeListen\");\n\n if (network) {\n await this.listenServers();\n }\n\n await this.callHook(\"$afterListen\");\n\n await this.ready();\n }\n\n async stop() {\n await this.callHook(\"$onDestroy\");\n return this.injector.destroy();\n }\n\n public async ready() {\n const {startedAt} = this;\n\n await this.callHook(\"$onReady\");\n await this.injector.emit(\"$onServerReady\");\n\n this.log(`Started in ${new Date().getTime() - startedAt.getTime()} ms`);\n }\n\n async callHook(hook: string, ...args: any[]) {\n const {injector} = this;\n\n if (!this.disableBootstrapLog) {\n injector.logger.debug(`\\x1B[1mCall hook ${hook}\\x1B[22m`);\n }\n\n // Load middlewares for the given hook\n this.loadMiddlewaresFor(hook);\n\n // call hooks added by providers\n await injector.emit(hook, ...args);\n }\n\n async loadStatics(hook: string): Promise<void> {\n const statics = this.settings.get<PlatformStaticsSettings>(\"statics\");\n\n getStaticsOptions(statics).forEach(({path, options}) => {\n if (options.hook === hook) {\n this.platform.app.statics(path, options);\n }\n });\n }\n\n useProvider(token: Type<any>, settings?: Partial<IProvider>) {\n this.injector.addProvider(token, settings);\n\n return this;\n }\n\n async bootstrap() {\n this.#promise = this.#promise || this.runLifecycle();\n\n return this.#promise;\n }\n\n protected async loadRoutes() {\n this.#adapter.beforeLoadRoutes && (await this.#adapter.beforeLoadRoutes());\n\n // istanbul ignore next\n if (this.settings.logger?.level !== \"off\") {\n const {PlatformLogMiddleware} = await import(\"@tsed/platform-log-middleware\");\n this.app.use(PlatformLogMiddleware);\n }\n\n if (this.settings.acceptMimes?.length) {\n this.app.use(GlobalAcceptMimesMiddleware);\n }\n\n this.log(\"Load routes\");\n\n await this.loadStatics(\"$beforeRoutesInit\");\n await this.callHook(\"$beforeRoutesInit\");\n\n const routes = this.injector.settings.get<Route[]>(\"routes\");\n\n this.platform.addRoutes(routes);\n\n await this.callHook(\"$onRoutesInit\");\n\n await this.loadStatics(\"$afterRoutesInit\");\n\n await this.callHook(\"$afterRoutesInit\");\n\n this.#adapter.afterLoadRoutes && (await this.#adapter.afterLoadRoutes());\n }\n\n protected diff() {\n const ms = colors.yellow(`+${new Date().getTime() - this.current.getTime()}ms`);\n this.current = new Date();\n return ms;\n }\n\n protected async importProviders() {\n this.injector.logger.debug(\"Scan components\");\n\n const providers = await importProviders(this.injector.settings, [\"imports\", \"mount\", \"componentsScan\"]);\n const routes = providers.filter((provider) => !!provider.route).map(({route, token}) => ({route, token}));\n\n this.settings.set(\"routes\", routes);\n this.log(\"Providers loaded...\");\n }\n\n /**\n * Load middlewares from configuration for the given hook\n * @param hook\n * @protected\n */\n protected loadMiddlewaresFor(hook: string): void {\n return getMiddlewaresForHook(hook, this.settings, \"$beforeRoutesInit\").forEach(({use}) => {\n this.app.use(use);\n });\n }\n\n protected createHttpServers() {\n this.#servers = [createHttpServer(this.#injector, this.callback()), createHttpsServer(this.#injector, this.callback())].filter(\n Boolean\n ) as any[];\n }\n\n protected async listenServers(): Promise<void> {\n await Promise.all(this.#servers.map((cb) => cb && cb()));\n }\n\n protected async logRoutes() {\n const {logger, platform} = this;\n\n this.log(\"Routes mounted...\");\n\n if (!this.settings.logger?.disableRoutesSummary && !this.disableBootstrapLog) {\n logger.info(printRoutes(await this.injector.alterAsync(\"$logRoutes\", platform.getRoutes())));\n }\n }\n}\n"]}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Env } from "@tsed/core";
|
|
3
|
-
import Https from "https";
|
|
4
3
|
import { ConverterSettings } from "./ConverterSettings";
|
|
5
4
|
import { EndpointDirectoriesSettings } from "./EndpointDirectoriesSettings";
|
|
6
5
|
import { PlatformLoggerSettings } from "./PlatformLoggerSettings";
|
|
7
6
|
import { PlatformMulterSettings } from "./PlatformMulterSettings";
|
|
8
7
|
import { PlatformStaticsSettings } from "./PlatformStaticsSettings";
|
|
8
|
+
import type Http from "http";
|
|
9
|
+
import type Https from "https";
|
|
9
10
|
declare global {
|
|
10
11
|
namespace TsED {
|
|
11
12
|
interface LoggerConfiguration extends Partial<PlatformLoggerSettings> {
|
|
@@ -27,6 +28,14 @@ declare global {
|
|
|
27
28
|
* Port number for the [HTTP.Server](https://nodejs.org/api/http.html#http_class_http_server).
|
|
28
29
|
*/
|
|
29
30
|
httpPort: string | number | boolean;
|
|
31
|
+
/**
|
|
32
|
+
* [Https.ServerOptions](https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener)):
|
|
33
|
+
* - `key` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | <Object[]>: The private key of the server in PEM format. To support multiple keys using different algorithms an array can be provided either as a plain array of key strings or an array of objects in the format `{pem: key, passphrase: passphrase}`. This option is required for ciphers that make use of private keys.
|
|
34
|
+
* - `passphrase` <string> A string containing the passphrase for the private key or pfx.
|
|
35
|
+
* - `cert` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [<Buffer[]>](https://nodejs.org/api/buffer.html#buffer_class_buffer): A string, Buffer, array of strings, or array of Buffers containing the certificate key of the server in PEM format. (Required)
|
|
36
|
+
* - `ca` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [<Buffer[]>](https://nodejs.org/api/buffer.html#buffer_class_buffer): A string, Buffer, array of strings, or array of Buffers of trusted certificates in PEM format. If this is omitted several well known "root" CAs (like VeriSign) will be used. These are used to authorize connections.
|
|
37
|
+
*/
|
|
38
|
+
httpOptions: Http.ServerOptions;
|
|
30
39
|
/**
|
|
31
40
|
* Port number for the [HTTPs.Server](https://nodejs.org/api/https.html#https_class_https_server).
|
|
32
41
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/config/interfaces/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/config/interfaces/index.ts"],"names":[],"mappings":";;;AA6FA,wEAAyC;AACzC,6EAA8C;AAC9C,yEAA0C;AAC1C,wEAAyC","sourcesContent":["import {Env} from \"@tsed/core\";\nimport {ConverterSettings} from \"./ConverterSettings\";\nimport {EndpointDirectoriesSettings} from \"./EndpointDirectoriesSettings\";\nimport {PlatformLoggerSettings} from \"./PlatformLoggerSettings\";\nimport {PlatformMulterSettings} from \"./PlatformMulterSettings\";\nimport {PlatformStaticsSettings} from \"./PlatformStaticsSettings\";\nimport type Http from \"http\";\nimport type Https from \"https\";\n\ndeclare global {\n namespace TsED {\n interface LoggerConfiguration extends Partial<PlatformLoggerSettings> {}\n interface Configuration {\n /**\n * The root directory where you build run project. By default, it's equal to `process.cwd().\n */\n rootDir: string;\n /**\n * The environment profile. By default the environment profile is equals to `NODE_ENV`.\n */\n env: Env;\n /**\n * Port number for the [HTTP.Server](https://nodejs.org/api/http.html#http_class_http_server).\n */\n port: string | number;\n /**\n * Port number for the [HTTP.Server](https://nodejs.org/api/http.html#http_class_http_server).\n */\n httpPort: string | number | boolean;\n /**\n * [Https.ServerOptions](https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener)):\n * - `key` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | <Object[]>: The private key of the server in PEM format. To support multiple keys using different algorithms an array can be provided either as a plain array of key strings or an array of objects in the format `{pem: key, passphrase: passphrase}`. This option is required for ciphers that make use of private keys.\n * - `passphrase` <string> A string containing the passphrase for the private key or pfx.\n * - `cert` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [<Buffer[]>](https://nodejs.org/api/buffer.html#buffer_class_buffer): A string, Buffer, array of strings, or array of Buffers containing the certificate key of the server in PEM format. (Required)\n * - `ca` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [<Buffer[]>](https://nodejs.org/api/buffer.html#buffer_class_buffer): A string, Buffer, array of strings, or array of Buffers of trusted certificates in PEM format. If this is omitted several well known \"root\" CAs (like VeriSign) will be used. These are used to authorize connections.\n */\n httpOptions: Http.ServerOptions;\n /**\n * Port number for the [HTTPs.Server](https://nodejs.org/api/https.html#https_class_https_server).\n */\n httpsPort: string | number | boolean;\n /**\n * [Https.ServerOptions](https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener)):\n * - `key` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | <Object[]>: The private key of the server in PEM format. To support multiple keys using different algorithms an array can be provided either as a plain array of key strings or an array of objects in the format `{pem: key, passphrase: passphrase}`. This option is required for ciphers that make use of private keys.\n * - `passphrase` <string> A string containing the passphrase for the private key or pfx.\n * - `cert` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [<Buffer[]>](https://nodejs.org/api/buffer.html#buffer_class_buffer): A string, Buffer, array of strings, or array of Buffers containing the certificate key of the server in PEM format. (Required)\n * - `ca` <string> | <string[]> | [<Buffer>](https://nodejs.org/api/buffer.html#buffer_class_buffer) | [<Buffer[]>](https://nodejs.org/api/buffer.html#buffer_class_buffer): A string, Buffer, array of strings, or array of Buffers of trusted certificates in PEM format. If this is omitted several well known \"root\" CAs (like VeriSign) will be used. These are used to authorize connections.\n */\n httpsOptions: Https.ServerOptions;\n /**\n * Mount all controllers under a directories to an endpoint.\n */\n mount: EndpointDirectoriesSettings;\n /**\n * List of directories to scan [Services](/docs/services.md), [Middlewares](/docs/middlewares.md) or [Converters](/docs/converters.md).\n */\n componentsScan: (string | RegExp)[];\n /**\n * Disable the glob pattern. In v7 the componentsScan options will be removed in favor of external module loader.\n */\n disableComponentsScan: boolean;\n /**\n * List of glob patterns. Exclude all files which matching with this list when Server scan all components with the `mount` or `scanComponents` options.\n */\n exclude: string[];\n /**\n * Configure the mimes accepted by default by the server.\n */\n acceptMimes: string[];\n /**\n * Enable debug mode. By default debug is false.\n */\n debug: boolean;\n /**\n * Converter configuration.\n */\n converter: Partial<ConverterSettings>;\n /**\n * Logger configuration.\n */\n logger?: LoggerConfiguration;\n /**\n * Object to mount all directories under to his endpoints. See more on [Serve Static](/tutorials/serve-static-files.md).\n */\n statics: PlatformStaticsSettings;\n /**\n * Object configure Multer. See more on [Upload file](/tutorials/serve-static-files.md).\n */\n multer: PlatformMulterSettings;\n }\n }\n}\n\nexport * from \"./PlatformLoggerSettings\";\nexport * from \"./EndpointDirectoriesSettings\";\nexport * from \"./PlatformStaticsSettings\";\nexport * from \"./PlatformMulterSettings\";\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Env } from "@tsed/core";
|
|
2
|
+
import { Env, getHostInfoFromPort } from "@tsed/core";
|
|
3
3
|
import { DIConfiguration } from "@tsed/di";
|
|
4
4
|
import Https from "https";
|
|
5
5
|
import { EndpointDirectoriesSettings, PlatformLoggerSettings } from "../interfaces";
|
|
@@ -39,20 +39,11 @@ export declare class PlatformConfiguration extends DIConfiguration {
|
|
|
39
39
|
set logger(value: Partial<PlatformLoggerSettings>);
|
|
40
40
|
get exclude(): string[];
|
|
41
41
|
set exclude(exclude: string[]);
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
44
|
-
* @param addressPort
|
|
45
|
-
* @returns {{address: string, port: number}}
|
|
46
|
-
*/
|
|
47
|
-
private static buildAddressAndPort;
|
|
48
42
|
/**
|
|
49
43
|
*
|
|
50
44
|
* @returns {string|number}
|
|
51
45
|
*/
|
|
52
|
-
getHttpPort():
|
|
53
|
-
address: string;
|
|
54
|
-
port: number;
|
|
55
|
-
};
|
|
46
|
+
getHttpPort(): ReturnType<typeof getHostInfoFromPort>;
|
|
56
47
|
/**
|
|
57
48
|
*
|
|
58
49
|
* @param settings
|
|
@@ -66,8 +57,10 @@ export declare class PlatformConfiguration extends DIConfiguration {
|
|
|
66
57
|
* @returns {string|number}
|
|
67
58
|
*/
|
|
68
59
|
getHttpsPort(): {
|
|
60
|
+
protocol: string;
|
|
69
61
|
address: string;
|
|
70
62
|
port: number;
|
|
63
|
+
toString(): string;
|
|
71
64
|
};
|
|
72
65
|
/**
|
|
73
66
|
*
|
|
@@ -78,8 +71,11 @@ export declare class PlatformConfiguration extends DIConfiguration {
|
|
|
78
71
|
port: number;
|
|
79
72
|
}): void;
|
|
80
73
|
getBestHost(): {
|
|
74
|
+
protocol: string;
|
|
81
75
|
address: string;
|
|
82
76
|
port: number;
|
|
83
|
-
|
|
84
|
-
} |
|
|
77
|
+
toString(): string;
|
|
78
|
+
} | {
|
|
79
|
+
toString(): string;
|
|
80
|
+
};
|
|
85
81
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var PlatformConfiguration_1;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.PlatformConfiguration = void 0;
|
|
5
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@tsed/core");
|
|
6
6
|
const di_1 = require("@tsed/di");
|
|
7
7
|
const logger_1 = require("@tsed/logger");
|
|
8
8
|
const rootDir = process.cwd();
|
|
9
9
|
/**
|
|
10
10
|
* `PlatformConfiguration` contains all information about your Server configuration.
|
|
11
11
|
*/
|
|
12
|
-
let PlatformConfiguration =
|
|
12
|
+
let PlatformConfiguration = class PlatformConfiguration extends di_1.DIConfiguration {
|
|
13
13
|
constructor() {
|
|
14
14
|
super({ rootDir });
|
|
15
15
|
}
|
|
@@ -124,26 +124,12 @@ let PlatformConfiguration = PlatformConfiguration_1 = class PlatformConfiguratio
|
|
|
124
124
|
set exclude(exclude) {
|
|
125
125
|
this.setRaw("exclude", exclude);
|
|
126
126
|
}
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
* @param addressPort
|
|
130
|
-
* @returns {{address: string, port: number}}
|
|
131
|
-
*/
|
|
132
|
-
static buildAddressAndPort(addressPort) {
|
|
133
|
-
let address = "0.0.0.0";
|
|
134
|
-
let port = addressPort;
|
|
135
|
-
if (typeof addressPort === "string" && addressPort.indexOf(":") > -1) {
|
|
136
|
-
[address, port] = addressPort.split(":");
|
|
137
|
-
port = +port;
|
|
138
|
-
}
|
|
139
|
-
return { address, port: port };
|
|
140
|
-
}
|
|
141
127
|
/**
|
|
142
128
|
*
|
|
143
129
|
* @returns {string|number}
|
|
144
130
|
*/
|
|
145
131
|
getHttpPort() {
|
|
146
|
-
return
|
|
132
|
+
return (0, core_1.getHostInfoFromPort)("http", this.getRaw("httpPort"));
|
|
147
133
|
}
|
|
148
134
|
/**
|
|
149
135
|
*
|
|
@@ -157,7 +143,7 @@ let PlatformConfiguration = PlatformConfiguration_1 = class PlatformConfiguratio
|
|
|
157
143
|
* @returns {string|number}
|
|
158
144
|
*/
|
|
159
145
|
getHttpsPort() {
|
|
160
|
-
return
|
|
146
|
+
return (0, core_1.getHostInfoFromPort)("https", this.getRaw("httpsPort"));
|
|
161
147
|
}
|
|
162
148
|
/**
|
|
163
149
|
*
|
|
@@ -169,22 +155,19 @@ let PlatformConfiguration = PlatformConfiguration_1 = class PlatformConfiguratio
|
|
|
169
155
|
getBestHost() {
|
|
170
156
|
const { httpsPort, httpPort } = this;
|
|
171
157
|
if (httpsPort) {
|
|
172
|
-
|
|
173
|
-
return {
|
|
174
|
-
protocol: "https",
|
|
175
|
-
...host
|
|
176
|
-
};
|
|
158
|
+
return this.getHttpsPort();
|
|
177
159
|
}
|
|
178
160
|
if (httpPort) {
|
|
179
|
-
|
|
180
|
-
return {
|
|
181
|
-
protocol: "http",
|
|
182
|
-
...host
|
|
183
|
-
};
|
|
161
|
+
return this.getHttpPort();
|
|
184
162
|
}
|
|
163
|
+
return {
|
|
164
|
+
toString() {
|
|
165
|
+
return "/";
|
|
166
|
+
}
|
|
167
|
+
};
|
|
185
168
|
}
|
|
186
169
|
};
|
|
187
|
-
PlatformConfiguration =
|
|
170
|
+
PlatformConfiguration = (0, tslib_1.__decorate)([
|
|
188
171
|
(0, di_1.Injectable)({
|
|
189
172
|
scope: di_1.ProviderScope.SINGLETON,
|
|
190
173
|
global: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlatformConfiguration.js","sourceRoot":"","sources":["../../../../src/config/services/PlatformConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import {Env} from \"@tsed/core\";\nimport {DIConfiguration, Injectable, ProviderScope, ProviderType} from \"@tsed/di\";\nimport {$log} from \"@tsed/logger\";\nimport Https from \"https\";\nimport {EndpointDirectoriesSettings, PlatformLoggerSettings} from \"../interfaces\";\nimport {ConverterSettings} from \"../interfaces/ConverterSettings\";\n\nconst rootDir = process.cwd();\n\n/**\n * `PlatformConfiguration` contains all information about your Server configuration.\n */\n@Injectable({\n scope: ProviderScope.SINGLETON,\n global: true\n})\nexport class PlatformConfiguration extends DIConfiguration {\n constructor() {\n super({rootDir});\n }\n\n get version() {\n return this.getRaw(\"version\");\n }\n\n set version(v: string) {\n this.setRaw(\"version\", v);\n }\n\n get rootDir() {\n return this.getRaw(\"rootDir\");\n }\n\n set rootDir(value: string) {\n this.setRaw(\"rootDir\", value);\n }\n\n get port(): string | number | false {\n return this.httpPort;\n }\n\n set port(value: string | number | false) {\n this.httpPort = value;\n }\n\n get httpsOptions(): Https.ServerOptions {\n return this.getRaw(\"httpsOptions\");\n }\n\n set httpsOptions(value: Https.ServerOptions) {\n this.setRaw(\"httpsOptions\", value);\n }\n\n get httpPort(): string | number | false {\n return this.getRaw(\"httpPort\");\n }\n\n set httpPort(value: string | number | false) {\n this.setRaw(\"httpPort\", value);\n }\n\n get httpsPort(): string | number | false {\n return this.getRaw(\"httpsPort\");\n }\n\n set httpsPort(value: string | number | false) {\n this.setRaw(\"httpsPort\", value);\n }\n\n get env(): Env {\n return this.getRaw(\"env\");\n }\n\n set env(value: Env) {\n this.setRaw(\"env\", value);\n }\n\n get mount(): EndpointDirectoriesSettings {\n return this.get(\"mount\");\n }\n\n set mount(value: EndpointDirectoriesSettings) {\n this.setRaw(\"mount\", value);\n }\n\n get componentsScan(): string[] {\n return this.resolve(this.getRaw(\"componentsScan\"));\n }\n\n set componentsScan(value: string[]) {\n this.setRaw(\"componentsScan\", value);\n }\n\n get statics(): EndpointDirectoriesSettings {\n return this.getRaw(\"statics\") || this.getRaw(\"serveStatic\") || {};\n }\n\n set statics(value: EndpointDirectoriesSettings) {\n this.setRaw(\"statics\", value);\n }\n\n get acceptMimes(): string[] {\n return this.getRaw(\"acceptMimes\");\n }\n\n set acceptMimes(value: string[]) {\n this.setRaw(\"acceptMimes\", value || []);\n }\n\n get debug(): boolean {\n return this.logger.level === \"debug\";\n }\n\n set debug(debug: boolean) {\n this.logger = {...this.logger, level: debug ? \"debug\" : \"info\"};\n }\n\n get converter(): Partial<ConverterSettings> {\n return this.get(\"converter\") || {};\n }\n\n set converter(options: Partial<ConverterSettings>) {\n this.setRaw(\"converter\", options);\n }\n\n get logger(): Partial<PlatformLoggerSettings> {\n return this.get(\"logger\");\n }\n\n set logger(value: Partial<PlatformLoggerSettings>) {\n const logger = {...this.logger, ...value};\n logger.debug = logger.level === \"debug\";\n\n this.setRaw(\"logger\", logger);\n this.setRaw(\"debug\", logger.debug);\n\n if (logger.format) {\n $log.appenders.set(\"stdout\", {\n type: \"stdout\",\n levels: [\"info\", \"debug\"],\n layout: {\n type: \"pattern\",\n pattern: logger.format\n }\n });\n\n $log.appenders.set(\"stderr\", {\n levels: [\"trace\", \"fatal\", \"error\", \"warn\"],\n type: \"stderr\",\n layout: {\n type: \"pattern\",\n pattern: logger.format\n }\n });\n }\n }\n\n get exclude() {\n return this.get(\"exclude\");\n }\n\n set exclude(exclude: string[]) {\n this.setRaw(\"exclude\", exclude);\n }\n\n /**\n *\n * @param addressPort\n * @returns {{address: string, port: number}}\n */\n private static buildAddressAndPort(addressPort: string | number): {address: string; port: number} {\n let address = \"0.0.0.0\";\n let port = addressPort;\n\n if (typeof addressPort === \"string\" && addressPort.indexOf(\":\") > -1) {\n [address, port] = addressPort.split(\":\");\n port = +port;\n }\n\n return {address, port: port as number};\n }\n\n /**\n *\n * @returns {string|number}\n */\n getHttpPort(): {address: string; port: number} {\n return PlatformConfiguration.buildAddressAndPort(this.getRaw(\"httpPort\"));\n }\n\n /**\n *\n * @param settings\n */\n setHttpPort(settings: {address: string; port: number}) {\n this.setRaw(\"httpPort\", `${settings.address}:${settings.port}`);\n }\n\n /**\n *\n * @returns {string|number}\n */\n getHttpsPort(): {address: string; port: number} {\n return PlatformConfiguration.buildAddressAndPort(this.getRaw(\"httpsPort\"));\n }\n\n /**\n *\n * @param settings\n */\n setHttpsPort(settings: {address: string; port: number}) {\n this.setRaw(\"httpsPort\", `${settings.address}:${settings.port}`);\n }\n\n getBestHost() {\n const {httpsPort, httpPort} = this;\n if (httpsPort) {\n const host = this.getHttpsPort();\n return {\n protocol: \"https\",\n ...host\n };\n }\n\n if (httpPort) {\n const host = this.getHttpPort();\n\n return {\n protocol: \"http\",\n ...host\n };\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlatformConfiguration.js","sourceRoot":"","sources":["../../../../src/config/services/PlatformConfiguration.ts"],"names":[],"mappings":"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","sourcesContent":["import {Env, getHostInfoFromPort} from \"@tsed/core\";\nimport {DIConfiguration, Injectable, ProviderScope} from \"@tsed/di\";\nimport {$log} from \"@tsed/logger\";\nimport Https from \"https\";\nimport {EndpointDirectoriesSettings, PlatformLoggerSettings} from \"../interfaces\";\nimport {ConverterSettings} from \"../interfaces/ConverterSettings\";\n\nconst rootDir = process.cwd();\n\n/**\n * `PlatformConfiguration` contains all information about your Server configuration.\n */\n@Injectable({\n scope: ProviderScope.SINGLETON,\n global: true\n})\nexport class PlatformConfiguration extends DIConfiguration {\n constructor() {\n super({rootDir});\n }\n\n get version() {\n return this.getRaw(\"version\");\n }\n\n set version(v: string) {\n this.setRaw(\"version\", v);\n }\n\n get rootDir() {\n return this.getRaw(\"rootDir\");\n }\n\n set rootDir(value: string) {\n this.setRaw(\"rootDir\", value);\n }\n\n get port(): string | number | false {\n return this.httpPort;\n }\n\n set port(value: string | number | false) {\n this.httpPort = value;\n }\n\n get httpsOptions(): Https.ServerOptions {\n return this.getRaw(\"httpsOptions\");\n }\n\n set httpsOptions(value: Https.ServerOptions) {\n this.setRaw(\"httpsOptions\", value);\n }\n\n get httpPort(): string | number | false {\n return this.getRaw(\"httpPort\");\n }\n\n set httpPort(value: string | number | false) {\n this.setRaw(\"httpPort\", value);\n }\n\n get httpsPort(): string | number | false {\n return this.getRaw(\"httpsPort\");\n }\n\n set httpsPort(value: string | number | false) {\n this.setRaw(\"httpsPort\", value);\n }\n\n get env(): Env {\n return this.getRaw(\"env\");\n }\n\n set env(value: Env) {\n this.setRaw(\"env\", value);\n }\n\n get mount(): EndpointDirectoriesSettings {\n return this.get(\"mount\");\n }\n\n set mount(value: EndpointDirectoriesSettings) {\n this.setRaw(\"mount\", value);\n }\n\n get componentsScan(): string[] {\n return this.resolve(this.getRaw(\"componentsScan\"));\n }\n\n set componentsScan(value: string[]) {\n this.setRaw(\"componentsScan\", value);\n }\n\n get statics(): EndpointDirectoriesSettings {\n return this.getRaw(\"statics\") || this.getRaw(\"serveStatic\") || {};\n }\n\n set statics(value: EndpointDirectoriesSettings) {\n this.setRaw(\"statics\", value);\n }\n\n get acceptMimes(): string[] {\n return this.getRaw(\"acceptMimes\");\n }\n\n set acceptMimes(value: string[]) {\n this.setRaw(\"acceptMimes\", value || []);\n }\n\n get debug(): boolean {\n return this.logger.level === \"debug\";\n }\n\n set debug(debug: boolean) {\n this.logger = {...this.logger, level: debug ? \"debug\" : \"info\"};\n }\n\n get converter(): Partial<ConverterSettings> {\n return this.get(\"converter\") || {};\n }\n\n set converter(options: Partial<ConverterSettings>) {\n this.setRaw(\"converter\", options);\n }\n\n get logger(): Partial<PlatformLoggerSettings> {\n return this.get(\"logger\");\n }\n\n set logger(value: Partial<PlatformLoggerSettings>) {\n const logger = {...this.logger, ...value};\n logger.debug = logger.level === \"debug\";\n\n this.setRaw(\"logger\", logger);\n this.setRaw(\"debug\", logger.debug);\n\n if (logger.format) {\n $log.appenders.set(\"stdout\", {\n type: \"stdout\",\n levels: [\"info\", \"debug\"],\n layout: {\n type: \"pattern\",\n pattern: logger.format\n }\n });\n\n $log.appenders.set(\"stderr\", {\n levels: [\"trace\", \"fatal\", \"error\", \"warn\"],\n type: \"stderr\",\n layout: {\n type: \"pattern\",\n pattern: logger.format\n }\n });\n }\n }\n\n get exclude() {\n return this.get(\"exclude\");\n }\n\n set exclude(exclude: string[]) {\n this.setRaw(\"exclude\", exclude);\n }\n\n /**\n *\n * @returns {string|number}\n */\n getHttpPort(): ReturnType<typeof getHostInfoFromPort> {\n return getHostInfoFromPort(\"http\", this.getRaw(\"httpPort\"));\n }\n\n /**\n *\n * @param settings\n */\n setHttpPort(settings: {address: string; port: number}) {\n this.setRaw(\"httpPort\", `${settings.address}:${settings.port}`);\n }\n\n /**\n *\n * @returns {string|number}\n */\n getHttpsPort() {\n return getHostInfoFromPort(\"https\", this.getRaw(\"httpsPort\"));\n }\n\n /**\n *\n * @param settings\n */\n setHttpsPort(settings: {address: string; port: number}) {\n this.setRaw(\"httpsPort\", `${settings.address}:${settings.port}`);\n }\n\n getBestHost() {\n const {httpsPort, httpPort} = this;\n\n if (httpsPort) {\n return this.getHttpsPort();\n }\n\n if (httpPort) {\n return this.getHttpPort();\n }\n\n return {\n toString() {\n return \"/\";\n }\n };\n }\n}\n"]}
|
|
@@ -22,6 +22,7 @@ import Http from "http";
|
|
|
22
22
|
* @param {TypedPropertyDescriptor<Function> | number} descriptor
|
|
23
23
|
* @returns {any}
|
|
24
24
|
* @decorator
|
|
25
|
+
* @deprecated Use Https.Server from "http"
|
|
25
26
|
*/
|
|
26
27
|
export declare function HttpServer(target: Type<any>, targetKey: string, descriptor: TypedPropertyDescriptor<Function> | number): any;
|
|
27
28
|
export declare type HttpServer = Http.Server;
|
|
@@ -23,6 +23,7 @@ const di_1 = require("@tsed/di");
|
|
|
23
23
|
* @param {TypedPropertyDescriptor<Function> | number} descriptor
|
|
24
24
|
* @returns {any}
|
|
25
25
|
* @decorator
|
|
26
|
+
* @deprecated Use Https.Server from "http"
|
|
26
27
|
*/
|
|
27
28
|
function HttpServer(target, targetKey, descriptor) {
|
|
28
29
|
return (0, di_1.Inject)(HttpServer)(target, targetKey, descriptor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpServer.js","sourceRoot":"","sources":["../../../src/decorators/httpServer.ts"],"names":[],"mappings":";;;AACA,iCAAgC;AAGhC
|
|
1
|
+
{"version":3,"file":"httpServer.js","sourceRoot":"","sources":["../../../src/decorators/httpServer.ts"],"names":[],"mappings":";;;AACA,iCAAgC;AAGhC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,UAAU,CAAC,MAAiB,EAAE,SAAiB,EAAE,UAAsD;IACrH,OAAO,IAAA,WAAM,EAAC,UAAU,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAFD,gCAEC","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Inject} from \"@tsed/di\";\nimport Http from \"http\";\n\n/**\n * Inject the Http.Server instance.\n *\n * ### Example\n *\n * ```typescript\n * import {HttpServer, Service} from \"@tsed/common\";\n *\n * @Service()\n * export default class OtherService {\n * constructor(@HttpServer httpServer: HttpServer) {}\n * }\n * ```\n *\n * > Note: TypeScript transform and store `HttpServer` as `Function` type in the metadata. So to inject a factory, you must use the `@Inject(type)` decorator.\n *\n * @param {Type<any>} target\n * @param {string} targetKey\n * @param {TypedPropertyDescriptor<Function> | number} descriptor\n * @returns {any}\n * @decorator\n * @deprecated Use Https.Server from \"http\"\n */\nexport function HttpServer(target: Type<any>, targetKey: string, descriptor: TypedPropertyDescriptor<Function> | number) {\n return Inject(HttpServer)(target, targetKey, descriptor);\n}\n\nexport type HttpServer = Http.Server;\n"]}
|
|
@@ -22,6 +22,7 @@ import Https from "https";
|
|
|
22
22
|
* @param {TypedPropertyDescriptor<Function> | number} descriptor
|
|
23
23
|
* @returns {any}
|
|
24
24
|
* @decorator
|
|
25
|
+
* @deprecated Use Https.Server from "https"
|
|
25
26
|
*/
|
|
26
27
|
export declare function HttpsServer(target: Type<any>, targetKey: string, descriptor: TypedPropertyDescriptor<Function> | number): any;
|
|
27
28
|
export declare type HttpsServer = Https.Server;
|