vortez 4.1.3 → 5.0.0-dev.15
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/.gitignore +0 -0
- package/LICENSE +0 -0
- package/README.md +235 -289
- package/build/Template.d.ts +16 -2
- package/build/Template.js +20 -8
- package/build/Template.js.map +1 -1
- package/build/Vortez.d.ts +8 -15
- package/build/Vortez.js +8 -16
- package/build/Vortez.js.map +1 -1
- package/build/beta/Beta.d.ts +8 -0
- package/build/beta/Beta.js +9 -0
- package/build/beta/Beta.js.map +1 -0
- package/build/{Beta → beta}/JwtManager.d.ts +0 -0
- package/build/{Beta → beta}/JwtManager.js +1 -1
- package/build/{Beta → beta}/JwtManager.js.map +1 -1
- package/build/{Beta → beta}/Mail.d.ts +1 -1
- package/build/{Beta → beta}/Mail.js +1 -1
- package/build/beta/Mail.js.map +1 -0
- package/build/logger/Debug.d.ts +174 -0
- package/build/logger/Debug.js +295 -0
- package/build/logger/Debug.js.map +1 -0
- package/build/logger/Logger.d.ts +38 -0
- package/build/logger/Logger.js +48 -0
- package/build/logger/Logger.js.map +1 -0
- package/build/{Server → server}/BodyParser.d.ts +0 -0
- package/build/{Server → server}/BodyParser.js +0 -0
- package/build/{Server → server}/BodyParser.js.map +1 -1
- package/build/{Server → server}/Cookie.d.ts +0 -0
- package/build/{Server → server}/Cookie.js +0 -0
- package/build/{Server → server}/Cookie.js.map +1 -1
- package/build/server/LoggerManager.d.ts +21 -0
- package/build/server/LoggerManager.js +30 -0
- package/build/server/LoggerManager.js.map +1 -0
- package/build/{Server → server}/Request.d.ts +4 -2
- package/build/{Server → server}/Request.js +2 -1
- package/build/server/Request.js.map +1 -0
- package/build/{Server → server}/Response.d.ts +4 -1
- package/build/{Server → server}/Response.js +24 -8
- package/build/server/Response.js.map +1 -0
- package/build/{Server → server}/Server.d.ts +20 -67
- package/build/server/Server.js +211 -0
- package/build/server/Server.js.map +1 -0
- package/build/server/ServerDebug.d.ts +17 -0
- package/build/server/ServerDebug.js +67 -0
- package/build/server/ServerDebug.js.map +1 -0
- package/build/server/ServerError.d.ts +18 -0
- package/build/server/ServerError.js +15 -0
- package/build/server/ServerError.js.map +1 -0
- package/build/{Server → server}/Session.d.ts +9 -13
- package/build/{Server → server}/Session.js +34 -35
- package/build/server/Session.js.map +1 -0
- package/build/{Config.d.ts → server/config/Config.d.ts} +19 -3
- package/build/server/config/Config.js +60 -0
- package/build/server/config/Config.js.map +1 -0
- package/build/server/config/ConfigLoader.d.ts +24 -0
- package/build/server/config/ConfigLoader.js +53 -0
- package/build/server/config/ConfigLoader.js.map +1 -0
- package/build/server/config/ConfigValidator.d.ts +71 -0
- package/build/server/config/ConfigValidator.js +131 -0
- package/build/server/config/ConfigValidator.js.map +1 -0
- package/build/server/router/HttpRule.d.ts +69 -0
- package/build/server/router/HttpRule.js +96 -0
- package/build/server/router/HttpRule.js.map +1 -0
- package/build/server/router/Router.d.ts +127 -0
- package/build/server/router/Router.js +211 -0
- package/build/server/router/Router.js.map +1 -0
- package/build/server/router/Rule.d.ts +71 -0
- package/build/server/router/Rule.js +113 -0
- package/build/server/router/Rule.js.map +1 -0
- package/build/server/router/WsRule.d.ts +25 -0
- package/build/server/router/WsRule.js +34 -0
- package/build/server/router/WsRule.js.map +1 -0
- package/build/server/router/middleware/HttpMiddleware.d.ts +35 -0
- package/build/server/router/middleware/HttpMiddleware.js +90 -0
- package/build/server/router/middleware/HttpMiddleware.js.map +1 -0
- package/build/server/router/middleware/Middleware.d.ts +77 -0
- package/build/server/router/middleware/Middleware.js +69 -0
- package/build/server/router/middleware/Middleware.js.map +1 -0
- package/build/server/router/middleware/WsMiddleware.d.ts +24 -0
- package/build/server/router/middleware/WsMiddleware.js +90 -0
- package/build/server/router/middleware/WsMiddleware.js.map +1 -0
- package/build/{Server/WebSocket → server/websocket}/Chunk.d.ts +0 -0
- package/build/{Server/WebSocket → server/websocket}/Chunk.js +0 -0
- package/build/{Server/WebSocket → server/websocket}/Chunk.js.map +1 -1
- package/build/server/websocket/Websocket.d.ts +88 -0
- package/build/{Server/WebSocket/WebSocket.js → server/websocket/Websocket.js} +91 -53
- package/build/server/websocket/Websocket.js.map +1 -0
- package/build/utilities/ConsoleUI.d.ts +88 -0
- package/build/utilities/ConsoleUI.js +141 -0
- package/build/utilities/ConsoleUI.js.map +1 -0
- package/build/utilities/DebugUI.d.ts +66 -0
- package/build/utilities/DebugUI.js +98 -0
- package/build/utilities/DebugUI.js.map +1 -0
- package/build/utilities/Env.d.ts +81 -0
- package/build/{Utilities → utilities}/Env.js +47 -35
- package/build/utilities/Env.js.map +1 -0
- package/build/utilities/Path.d.ts +24 -0
- package/build/utilities/Path.js +36 -0
- package/build/{Utilities → utilities}/Path.js.map +1 -1
- package/build/{Utilities → utilities}/Utilities.d.ts +68 -55
- package/build/{Utilities → utilities}/Utilities.js +36 -19
- package/build/utilities/Utilities.js.map +1 -0
- package/changes.md +122 -88
- package/examples/in-docs.js +0 -0
- package/global/Source/Logo_960.png +0 -0
- package/global/Source/Logo_SM_960.png +0 -0
- package/global/Style/Template/Error.css +0 -0
- package/global/Style/Template/Folder.css +0 -0
- package/global/Style/Template/Template.css +0 -0
- package/global/Template/Error.vhtml +0 -0
- package/global/Template/Folder.vhtml +0 -0
- package/package.json +10 -13
- package/tests/Template/template.js +0 -0
- package/tests/Template/template.txt +0 -0
- package/tests/Template/template.vhtml +0 -0
- package/tests/debug.js +9 -3
- package/tests/jwtManager/jwtManager.js +0 -0
- package/tests/test.env +0 -0
- package/tests/test.js +50 -48
- package/tests/test.vhtml +0 -0
- package/tests/utilities.js +1 -1
- package/tests/websocket.vhtml +0 -0
- package/Notes.md +0 -12
- package/build/Beta/Mail.js.map +0 -1
- package/build/Config.js +0 -33
- package/build/Config.js.map +0 -1
- package/build/ConsoleUI.d.ts +0 -57
- package/build/ConsoleUI.js +0 -110
- package/build/ConsoleUI.js.map +0 -1
- package/build/Debug.d.ts +0 -154
- package/build/Debug.js +0 -256
- package/build/Debug.js.map +0 -1
- package/build/LoggerManager/Logger.d.ts +0 -23
- package/build/LoggerManager/Logger.js +0 -23
- package/build/LoggerManager/Logger.js.map +0 -1
- package/build/LoggerManager/LoggerManager.d.ts +0 -18
- package/build/LoggerManager/LoggerManager.js +0 -30
- package/build/LoggerManager/LoggerManager.js.map +0 -1
- package/build/Server/Request.js.map +0 -1
- package/build/Server/Response.js.map +0 -1
- package/build/Server/Rule.d.ts +0 -81
- package/build/Server/Rule.js +0 -146
- package/build/Server/Rule.js.map +0 -1
- package/build/Server/Server.js +0 -330
- package/build/Server/Server.js.map +0 -1
- package/build/Server/Session.js.map +0 -1
- package/build/Server/WebSocket/WebSocket.d.ts +0 -70
- package/build/Server/WebSocket/WebSocket.js.map +0 -1
- package/build/Utilities/Env.d.ts +0 -75
- package/build/Utilities/Env.js.map +0 -1
- package/build/Utilities/Path.d.ts +0 -18
- package/build/Utilities/Path.js +0 -27
- package/build/Utilities/Utilities.js.map +0 -1
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import FS from 'fs';
|
|
7
7
|
import PATH from 'path';
|
|
8
|
-
import
|
|
8
|
+
import Logger from '../logger/Logger.js';
|
|
9
|
+
import Utilities from '../utilities/Utilities.js';
|
|
9
10
|
import Template from '../Template.js';
|
|
11
|
+
const logger = new Logger({ prefix: 'Response' });
|
|
10
12
|
export class Response {
|
|
11
13
|
/** Contains the request received by the server. */
|
|
12
14
|
request;
|
|
@@ -14,6 +16,7 @@ export class Response {
|
|
|
14
16
|
templates;
|
|
15
17
|
/** Contains the response to be sent by the server. */
|
|
16
18
|
httpResponse;
|
|
19
|
+
_isSended = false;
|
|
17
20
|
/**
|
|
18
21
|
* Creates the `NetFeez-Labs/Server` response format.
|
|
19
22
|
* @param request - The request received by the server.
|
|
@@ -27,6 +30,8 @@ export class Response {
|
|
|
27
30
|
this.httpResponse.setHeader('X-Powered-By', 'MyNetFeez-Labs Vortez');
|
|
28
31
|
this.httpResponse.setHeader('X-Version', '3.7.0-dev.18');
|
|
29
32
|
}
|
|
33
|
+
/** Checks if the response has been sent. */
|
|
34
|
+
get isSended() { return this._isSended || this.httpResponse.writableEnded || this.httpResponse.headersSent; }
|
|
30
35
|
/**
|
|
31
36
|
* Generates headers for supported file types.
|
|
32
37
|
* More types will be supported over time.
|
|
@@ -79,13 +84,14 @@ export class Response {
|
|
|
79
84
|
* @param encode - The encoding used for the response.
|
|
80
85
|
*/
|
|
81
86
|
send(data, options = {}) {
|
|
87
|
+
this._isSended = true;
|
|
82
88
|
const status = options.status ?? 200;
|
|
83
89
|
const encode = options.encode || 'utf-8';
|
|
84
90
|
const headers = options.headers || this.generateHeaders('txt');
|
|
85
91
|
this.sendHeaders(status, headers);
|
|
86
|
-
if (
|
|
87
|
-
return void this.httpResponse
|
|
88
|
-
|
|
92
|
+
if (data instanceof FS.ReadStream)
|
|
93
|
+
return void data.pipe(this.httpResponse);
|
|
94
|
+
this.httpResponse.end(data, encode);
|
|
89
95
|
}
|
|
90
96
|
/**
|
|
91
97
|
* Sends a file as a response.
|
|
@@ -131,6 +137,7 @@ export class Response {
|
|
|
131
137
|
}
|
|
132
138
|
catch (error) {
|
|
133
139
|
this.sendError(500, error instanceof Error ? error.message : '[Response Error] - File does not exist.');
|
|
140
|
+
logger.error(`error sending file ${this.request.session.id}`, error);
|
|
134
141
|
}
|
|
135
142
|
}
|
|
136
143
|
/**
|
|
@@ -167,6 +174,7 @@ export class Response {
|
|
|
167
174
|
}
|
|
168
175
|
catch (error) {
|
|
169
176
|
this.sendError(500, error instanceof Error ? error.message : '[Response Error] - File/Directory does not exist.');
|
|
177
|
+
logger.error(`error sending folder ${this.request.session.id}`, error);
|
|
170
178
|
}
|
|
171
179
|
}
|
|
172
180
|
/**
|
|
@@ -186,6 +194,7 @@ export class Response {
|
|
|
186
194
|
}
|
|
187
195
|
catch (error) {
|
|
188
196
|
this.sendError(500, error instanceof Error ? error.message : '[Response Error] - Template does not exist.');
|
|
197
|
+
logger.error(`error sending template ${this.request.session.id}`, error);
|
|
189
198
|
}
|
|
190
199
|
}
|
|
191
200
|
/**
|
|
@@ -194,10 +203,16 @@ export class Response {
|
|
|
194
203
|
* @param options - The response options.
|
|
195
204
|
*/
|
|
196
205
|
sendJson(data, options = {}) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
206
|
+
try {
|
|
207
|
+
const json = JSON.stringify(data);
|
|
208
|
+
const status = options.status ?? 200;
|
|
209
|
+
const headers = options.headers || this.generateHeaders('json');
|
|
210
|
+
this.send(json, { status, headers });
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
this.sendError(500, error instanceof Error ? error.message : '[Response Error] - Data cannot be converted to JSON.');
|
|
214
|
+
logger.error(`error sending json ${this.request.session.id}`, error);
|
|
215
|
+
}
|
|
201
216
|
}
|
|
202
217
|
/**
|
|
203
218
|
* Sends an error as a response.
|
|
@@ -225,6 +240,7 @@ export class Response {
|
|
|
225
240
|
console.error(error);
|
|
226
241
|
const headers = this.generateHeaders('txt');
|
|
227
242
|
this.send(`Error: ${status} -> ${message}`, { status: status, headers });
|
|
243
|
+
logger.error(`error sending error: ${this.request.session.id}`, error);
|
|
228
244
|
}
|
|
229
245
|
}
|
|
230
246
|
async fileExist(path) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Response.js","sourceRoot":"","sources":["../../src/server/Response.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,31 @@
|
|
|
3
3
|
* @description Adds a simple way to create HTTP/S and WS/S servers.
|
|
4
4
|
* @license Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import _LoggerManager from '
|
|
7
|
-
import
|
|
6
|
+
import _LoggerManager from './LoggerManager.js';
|
|
7
|
+
import _ServerDebug from './ServerDebug.js';
|
|
8
|
+
import _Config from './config/Config.js';
|
|
8
9
|
import _Request from "./Request.js";
|
|
9
10
|
import _Response from "./Response.js";
|
|
10
11
|
import _Session from "./Session.js";
|
|
11
12
|
import _Cookie from "./Cookie.js";
|
|
12
|
-
import _WebSocket from "./
|
|
13
|
-
import
|
|
13
|
+
import _WebSocket from "./websocket/Websocket.js";
|
|
14
|
+
import _Router from "./router/Router.js";
|
|
15
|
+
import _ServerError from "./ServerError.js";
|
|
16
|
+
export { LoggerManager } from './LoggerManager.js';
|
|
17
|
+
export { ServerDebug } from './ServerDebug.js';
|
|
18
|
+
export { Config } from './config/Config.js';
|
|
19
|
+
export { Request } from "./Request.js";
|
|
20
|
+
export { Response } from "./Response.js";
|
|
21
|
+
export { Session } from "./Session.js";
|
|
22
|
+
export { Cookie } from "./Cookie.js";
|
|
23
|
+
export { Websocket as WebSocket } from "./websocket/Websocket.js";
|
|
24
|
+
export { Router } from "./router/Router.js";
|
|
25
|
+
export { ServerError } from "./ServerError.js";
|
|
14
26
|
export declare class Server {
|
|
15
27
|
private protocol;
|
|
16
28
|
private HttpServer;
|
|
17
29
|
private HttpsServer;
|
|
18
|
-
|
|
30
|
+
router: Server.Router;
|
|
19
31
|
config: Server.Config;
|
|
20
32
|
logger: Server.LoggerManager;
|
|
21
33
|
/**
|
|
@@ -59,72 +71,12 @@ export declare class Server {
|
|
|
59
71
|
* @returns A promise that resolves with the created HTTPS server.
|
|
60
72
|
*/
|
|
61
73
|
private initHTTPS;
|
|
62
|
-
/**
|
|
63
|
-
* Adds one or more routing rules to the server.
|
|
64
|
-
* @param rules - The rule(s) to be added.
|
|
65
|
-
*/
|
|
66
|
-
addRules(...rules: Server.Rule[]): Server;
|
|
67
|
-
/**
|
|
68
|
-
* Adds an action routing rule.
|
|
69
|
-
* @param method - The HTTP method to respond to.
|
|
70
|
-
* @param urlRule - The URL path for the action.
|
|
71
|
-
* @param action - The action to be executed.
|
|
72
|
-
* @param auth - The optional authorization check function.
|
|
73
|
-
*/
|
|
74
|
-
addAction(method: Server.Request.Method, urlRule: string, action: Server.Rule.ActionExec, auth?: Server.Rule.AuthExec): Server;
|
|
75
|
-
/**
|
|
76
|
-
* Adds a file routing rule.
|
|
77
|
-
* @param urlRule - The URL path to listen on.
|
|
78
|
-
* @param source - The path to the file to be served.
|
|
79
|
-
* @param auth - The optional authorization check function.
|
|
80
|
-
*/
|
|
81
|
-
addFile(urlRule: string, source: string, auth?: Server.Rule.AuthExec): Server;
|
|
82
|
-
/**
|
|
83
|
-
* Adds a folder routing rule.
|
|
84
|
-
* @param urlRule - The URL path to listen on.
|
|
85
|
-
* @param source - The directory path to be served.
|
|
86
|
-
* @param auth - The optional authorization check function.
|
|
87
|
-
*/
|
|
88
|
-
addFolder(urlRule: string, source: string, auth?: Server.Rule.AuthExec): Server;
|
|
89
|
-
/**
|
|
90
|
-
* Adds a WebSocket routing rule.
|
|
91
|
-
* @param urlRule - The URL path to listen on.
|
|
92
|
-
* @param action - The action to be executed on connection.
|
|
93
|
-
* @param auth - The optional authorization check function.
|
|
94
|
-
*/
|
|
95
|
-
addWebSocket(urlRule: string, action: Server.Rule.WebSocketExec, auth?: Server.Rule.AuthExec): Server;
|
|
96
74
|
/**
|
|
97
75
|
* Defines default `.vhtml` templates for the server.
|
|
98
76
|
* @param name - The name of the template.
|
|
99
77
|
* @param path - The path to the `.vhtml` template file.
|
|
100
78
|
*/
|
|
101
79
|
setTemplate(name: keyof Server.Config.Templates, path: string): Server;
|
|
102
|
-
/**
|
|
103
|
-
* Routes incoming HTTP requests to be processed.
|
|
104
|
-
* @param request - The received HTTP request.
|
|
105
|
-
* @param response - The server response handler.
|
|
106
|
-
* @throws If no routing rule matches the request.
|
|
107
|
-
*/
|
|
108
|
-
private routeRequest;
|
|
109
|
-
/**
|
|
110
|
-
* Routes WebSocket connection requests.
|
|
111
|
-
* @param request - The received HTTP request.
|
|
112
|
-
* @param webSocket - The WebSocket connection with the client.
|
|
113
|
-
* @throws If no WebSocket routing rule matches.
|
|
114
|
-
*/
|
|
115
|
-
private routeWebSocket;
|
|
116
|
-
/**
|
|
117
|
-
* Triggered when the server receives an HTTP request.
|
|
118
|
-
* @param HttpRequest - The incoming HTTP request.
|
|
119
|
-
* @param HttpResponse - The server response stream.
|
|
120
|
-
*/
|
|
121
|
-
private requestManager;
|
|
122
|
-
/**
|
|
123
|
-
* Will be executed when the server receives an upgrade request.
|
|
124
|
-
* @param HttpRequest The request received by the server.
|
|
125
|
-
* @param Socket The socket to respond with (WebSocket upgrade).
|
|
126
|
-
*/
|
|
127
|
-
private upgradeManager;
|
|
128
80
|
/**
|
|
129
81
|
* Loads the SSL key and certificate and returns their content as strings.
|
|
130
82
|
* @param pathCert Path to the SSL certificate.
|
|
@@ -140,8 +92,10 @@ export declare namespace Server {
|
|
|
140
92
|
export import Response = _Response;
|
|
141
93
|
export import Session = _Session;
|
|
142
94
|
export import WebSocket = _WebSocket;
|
|
143
|
-
export import
|
|
95
|
+
export import Router = _Router;
|
|
144
96
|
export import LoggerManager = _LoggerManager;
|
|
97
|
+
export import ServerDebug = _ServerDebug;
|
|
98
|
+
export import ServerError = _ServerError;
|
|
145
99
|
interface Certificates {
|
|
146
100
|
cert: Buffer | string;
|
|
147
101
|
key: Buffer | string;
|
|
@@ -152,6 +106,5 @@ export declare namespace Server {
|
|
|
152
106
|
port?: number;
|
|
153
107
|
};
|
|
154
108
|
type Protocol = 'HTTP' | 'HTTPS' | 'HTTP/S';
|
|
155
|
-
type Rules = Array<Rule>;
|
|
156
109
|
}
|
|
157
110
|
export default Server;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author NetFeez <codefeez.dev@gmail.com>
|
|
3
|
+
* @description Adds a simple way to create HTTP/S and WS/S servers.
|
|
4
|
+
* @license Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import HTTP from 'http';
|
|
7
|
+
import FS from 'fs';
|
|
8
|
+
import HTTPS from 'https';
|
|
9
|
+
import Utilities from '../utilities/Utilities.js';
|
|
10
|
+
import _LoggerManager from './LoggerManager.js';
|
|
11
|
+
import _ServerDebug from './ServerDebug.js';
|
|
12
|
+
import _Config from './config/Config.js';
|
|
13
|
+
import _Request from "./Request.js";
|
|
14
|
+
import _Response from "./Response.js";
|
|
15
|
+
import _Session from "./Session.js";
|
|
16
|
+
import _Cookie from "./Cookie.js";
|
|
17
|
+
import _WebSocket from "./websocket/Websocket.js";
|
|
18
|
+
import _Router from "./router/Router.js";
|
|
19
|
+
import _ServerError from "./ServerError.js";
|
|
20
|
+
export { LoggerManager } from './LoggerManager.js';
|
|
21
|
+
export { ServerDebug } from './ServerDebug.js';
|
|
22
|
+
export { Config } from './config/Config.js';
|
|
23
|
+
export { Request } from "./Request.js";
|
|
24
|
+
export { Response } from "./Response.js";
|
|
25
|
+
export { Session } from "./Session.js";
|
|
26
|
+
export { Cookie } from "./Cookie.js";
|
|
27
|
+
export { Websocket as WebSocket } from "./websocket/Websocket.js";
|
|
28
|
+
export { Router } from "./router/Router.js";
|
|
29
|
+
export { ServerError } from "./ServerError.js";
|
|
30
|
+
const logger = _LoggerManager.getInstance();
|
|
31
|
+
export class Server {
|
|
32
|
+
protocol;
|
|
33
|
+
HttpServer;
|
|
34
|
+
HttpsServer;
|
|
35
|
+
router;
|
|
36
|
+
config;
|
|
37
|
+
logger;
|
|
38
|
+
/**
|
|
39
|
+
* Creates an HTTP/S server.
|
|
40
|
+
* @param port - The port the server will listen on.
|
|
41
|
+
* @param host - The host the server will bind to.
|
|
42
|
+
* @param sslOptions - The SSL configuration.
|
|
43
|
+
*/
|
|
44
|
+
constructor(options) {
|
|
45
|
+
this.config = options instanceof Server.Config ? options : new Server.Config(options);
|
|
46
|
+
this.router = new Server.Router(this.config);
|
|
47
|
+
this.HttpServer = null;
|
|
48
|
+
this.HttpsServer = null;
|
|
49
|
+
this.protocol = null;
|
|
50
|
+
this.logger = _LoggerManager.getInstance();
|
|
51
|
+
this.router.addFolder('/NetFeez-Labs:Global', Utilities.Path.normalize(`${Utilities.Path.moduleDir}/global`));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Starts the server.
|
|
55
|
+
*/
|
|
56
|
+
async start() {
|
|
57
|
+
const { port, host, ssl: sslOptions } = this.config;
|
|
58
|
+
this.protocol = sslOptions ? 'HTTP/S' : 'HTTP';
|
|
59
|
+
logger.info('&C(255,180,220)╭─────────────────────────────────────────────');
|
|
60
|
+
logger.info('&C(255,180,220)│ &C1Vortez by NetFeez');
|
|
61
|
+
logger.info('&C(255,180,220)│ &C1Server starting...');
|
|
62
|
+
logger.info('&C(255,180,220)├─────────────────────────────────────────────');
|
|
63
|
+
try {
|
|
64
|
+
this.HttpServer = await this.initHTTP(port, host);
|
|
65
|
+
logger.info(`&C(255,180,220)│ &C3Protocol: &R${this.protocol}`);
|
|
66
|
+
logger.info(`&C(255,180,220)│ &C3Host: &R${host}`);
|
|
67
|
+
logger.info(`&C(255,180,220)│ &C3HTTP Port: &R${port}`);
|
|
68
|
+
logger.info(`&C(255,180,220)│ &C3HTTP URL: &C6http://${host}:${port}`);
|
|
69
|
+
try {
|
|
70
|
+
if (sslOptions) {
|
|
71
|
+
this.HttpsServer = await this.initHTTPS(host, sslOptions);
|
|
72
|
+
logger.info(`&C(255,180,220)│ &C3HTTPS Port: &R${sslOptions.port ?? 443}`);
|
|
73
|
+
logger.info(`&C(255,180,220)│ &C3HTTPS URL: &C6https://${host}:${sslOptions.port ?? 443}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw Error('Certificate error ' + (error instanceof Error ? error.message : error), { cause: error });
|
|
78
|
+
}
|
|
79
|
+
logger.info('&C(255,180,220)╰─────────────────────────────────────────────');
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.error(`&C(255,180,220)│ &C1✖ Error starting server: &R&C6${error instanceof Error ? error.message : error}`);
|
|
83
|
+
logger.info('&C(255,180,220)╰─────────────────────────────────────────────');
|
|
84
|
+
this.stop();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Stops the server.
|
|
89
|
+
*/
|
|
90
|
+
async stop() {
|
|
91
|
+
try {
|
|
92
|
+
logger.info('&C(255,180,220)╭─────────────────────────────');
|
|
93
|
+
logger.info('&C(255,180,220)│ &C1Stopping server...');
|
|
94
|
+
if (!this.HttpServer && !this.HttpsServer)
|
|
95
|
+
throw Error('No server to stop');
|
|
96
|
+
if (this.HttpServer) {
|
|
97
|
+
await this.stopHTTP();
|
|
98
|
+
this.HttpServer = null;
|
|
99
|
+
logger.info('&C(255,180,220)│ &C3✔ HTTP server stopped');
|
|
100
|
+
}
|
|
101
|
+
if (this.HttpsServer) {
|
|
102
|
+
await this.stopHTTPS();
|
|
103
|
+
this.HttpsServer = null;
|
|
104
|
+
logger.info('&C(255,180,220)│ &C3✔ HTTPS server stopped');
|
|
105
|
+
}
|
|
106
|
+
logger.info('&C(255,180,220)│ &C2✔ All servers stopped successfully');
|
|
107
|
+
logger.info('&C(255,180,220)╰─────────────────────────────');
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger.error('&C(255,180,220)│ &C1✖ Error stopping server: &R&C6' + (error instanceof Error ? error.message : error));
|
|
111
|
+
logger.info('&C(255,180,220)╰─────────────────────────────');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Stops the HTTP server.
|
|
116
|
+
*/
|
|
117
|
+
async stopHTTP() {
|
|
118
|
+
return new Promise((resolve, reject) => {
|
|
119
|
+
if (this.HttpServer)
|
|
120
|
+
this.HttpServer.close((error) => error ? reject(error) : resolve());
|
|
121
|
+
else
|
|
122
|
+
resolve();
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Stops the HTTPS server.
|
|
127
|
+
*/
|
|
128
|
+
async stopHTTPS() {
|
|
129
|
+
return new Promise((resolve, reject) => {
|
|
130
|
+
if (this.HttpsServer)
|
|
131
|
+
this.HttpsServer.close((error) => error ? reject(error) : resolve());
|
|
132
|
+
else
|
|
133
|
+
resolve();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Restarts the server.
|
|
138
|
+
*/
|
|
139
|
+
async restart() {
|
|
140
|
+
await this.stop();
|
|
141
|
+
await this.start();
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Initializes the HTTP server.
|
|
145
|
+
* @param port - The port the HTTP server will listen on.
|
|
146
|
+
* @param host - The host the HTTP server will bind to.
|
|
147
|
+
* @returns A promise that resolves with the created HTTP server.
|
|
148
|
+
*/
|
|
149
|
+
async initHTTP(port, host) {
|
|
150
|
+
const http = HTTP.createServer();
|
|
151
|
+
http.on('request', this.router.requestManager.bind(this.router));
|
|
152
|
+
http.on('upgrade', this.router.upgradeManager.bind(this.router));
|
|
153
|
+
return new Promise((resolve) => http.listen(port, host, () => resolve(http)));
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Initializes the HTTPS server.
|
|
157
|
+
* @param host - The host the HTTPS server will bind to.
|
|
158
|
+
* @param sslOptions - The SSL configuration.
|
|
159
|
+
* @returns A promise that resolves with the created HTTPS server.
|
|
160
|
+
*/
|
|
161
|
+
async initHTTPS(host, sslOptions) {
|
|
162
|
+
const port = sslOptions.port ?? 443;
|
|
163
|
+
const cert = await Server.loadCertificates(sslOptions.pubKey, sslOptions.privKey);
|
|
164
|
+
const https = HTTPS.createServer(cert);
|
|
165
|
+
https.on('request', this.router.requestManager.bind(this.router));
|
|
166
|
+
https.on('upgrade', this.router.upgradeManager.bind(this.router));
|
|
167
|
+
return new Promise((resolve) => https.listen(port, host, () => resolve(https)));
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Defines default `.vhtml` templates for the server.
|
|
171
|
+
* @param name - The name of the template.
|
|
172
|
+
* @param path - The path to the `.vhtml` template file.
|
|
173
|
+
*/
|
|
174
|
+
setTemplate(name, path) {
|
|
175
|
+
this.config.templates[name] = path;
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Loads the SSL key and certificate and returns their content as strings.
|
|
180
|
+
* @param pathCert Path to the SSL certificate.
|
|
181
|
+
* @param pathKey Path to the SSL key.
|
|
182
|
+
* @returns An object containing the certificate and key as Buffers.
|
|
183
|
+
*/
|
|
184
|
+
static async loadCertificates(pathCert, pathKey) {
|
|
185
|
+
pathCert = Utilities.Path.normalize(pathCert);
|
|
186
|
+
pathKey = Utilities.Path.normalize(pathKey);
|
|
187
|
+
const certInfo = await FS.promises.stat(pathCert);
|
|
188
|
+
const keyInfo = await FS.promises.stat(pathKey);
|
|
189
|
+
if (!(certInfo.isFile()))
|
|
190
|
+
return Promise.reject('The certificate path is not a file');
|
|
191
|
+
if (!(keyInfo.isFile()))
|
|
192
|
+
return Promise.reject('The key path is not a file');
|
|
193
|
+
const cert = await FS.promises.readFile(pathCert);
|
|
194
|
+
const key = await FS.promises.readFile(pathKey);
|
|
195
|
+
return { cert, key };
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
(function (Server) {
|
|
199
|
+
Server.Config = _Config;
|
|
200
|
+
Server.Cookie = _Cookie;
|
|
201
|
+
Server.Request = _Request;
|
|
202
|
+
Server.Response = _Response;
|
|
203
|
+
Server.Session = _Session;
|
|
204
|
+
Server.WebSocket = _WebSocket;
|
|
205
|
+
Server.Router = _Router;
|
|
206
|
+
Server.LoggerManager = _LoggerManager;
|
|
207
|
+
Server.ServerDebug = _ServerDebug;
|
|
208
|
+
Server.ServerError = _ServerError;
|
|
209
|
+
})(Server || (Server = {}));
|
|
210
|
+
export default Server;
|
|
211
|
+
//# sourceMappingURL=Server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../../src/server/Server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author NetFeez <codefeez.dev@gmail.com>
|
|
3
|
+
* @description Utility to help with debugging tasks and server development.
|
|
4
|
+
* @license Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type Server from './Server.js';
|
|
7
|
+
import DebugUI from '../utilities/DebugUI.js';
|
|
8
|
+
export declare class ServerDebug extends DebugUI {
|
|
9
|
+
server: Server;
|
|
10
|
+
constructor(server: Server);
|
|
11
|
+
/** Prints the server rules to the console. */
|
|
12
|
+
showRules(): void;
|
|
13
|
+
/** Prints the server configuration to the console. */
|
|
14
|
+
showConfig(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare namespace ServerDebug { }
|
|
17
|
+
export default ServerDebug;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author NetFeez <codefeez.dev@gmail.com>
|
|
3
|
+
* @description Utility to help with debugging tasks and server development.
|
|
4
|
+
* @license Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import DebugUI from '../utilities/DebugUI.js';
|
|
7
|
+
export class ServerDebug extends DebugUI {
|
|
8
|
+
server;
|
|
9
|
+
constructor(server) {
|
|
10
|
+
super();
|
|
11
|
+
this.server = server;
|
|
12
|
+
this.addCommand('sv-start', this.server.start.bind(this.server), { description: '&C6Starts the server', usage: 'start' });
|
|
13
|
+
this.addCommand('sv-stop', this.server.stop.bind(this.server), { description: '&C6Stops the server', usage: 'stop' });
|
|
14
|
+
this.addCommand('sv-restart', this.server.restart.bind(this.server), { description: '&C6Restarts the server', usage: 'restart' });
|
|
15
|
+
this.addCommand('sv-rules', this.showRules.bind(this), { description: '&C6Shows the server rules', usage: 'rules' });
|
|
16
|
+
this.addCommand('sv-config', this.showConfig.bind(this), { description: '&C6Shows the server configuration', usage: 'config' });
|
|
17
|
+
this.addCommand('exit-debug', this.stopReadIn.bind(this), { description: '&C6Exits the debug UI', usage: 'exit-debug' });
|
|
18
|
+
this.addCommand('exit', () => process.exit(), { description: '&C6Exits the process', usage: 'exit' });
|
|
19
|
+
;
|
|
20
|
+
}
|
|
21
|
+
/** Prints the server rules to the console. */
|
|
22
|
+
showRules() {
|
|
23
|
+
this.out.info('&C(255,180,220)╭─────────────────────────────────────────────');
|
|
24
|
+
this.out.info('&C(255,180,220)│ &C2 Rules added to server router');
|
|
25
|
+
this.out.info('&C(255,180,220)├─────────────────────────────────────────────');
|
|
26
|
+
for (const rule of this.server.router.httpRules) {
|
|
27
|
+
this.out.info(`&C(255,180,220)│ &C3 http rule: &C2${rule.method.padStart(5, ' ')} &R-> &C6${rule.urlRule}`);
|
|
28
|
+
}
|
|
29
|
+
for (const rule of this.server.router.wsRules) {
|
|
30
|
+
this.out.info(`&C(255,180,220)│ &C3 ws rule: &C6${rule.urlRule}`);
|
|
31
|
+
}
|
|
32
|
+
this.out.info('&C(255,180,220)╰─────────────────────────────────────────────');
|
|
33
|
+
}
|
|
34
|
+
/** Prints the server configuration to the console. */
|
|
35
|
+
showConfig() {
|
|
36
|
+
const { config } = this.server;
|
|
37
|
+
this.out.info('&C(255,180,220)╭─────────────────────────────────────────────');
|
|
38
|
+
this.out.info('&C(255,180,220)│ &C2 Server Configuration');
|
|
39
|
+
this.out.info('&C(255,180,220)├─────────────────────────────────────────────');
|
|
40
|
+
this.out.info(`&C(255,180,220)│ &C3Port: &C6${config.port}`);
|
|
41
|
+
this.out.info(`&C(255,180,220)│ &C3Host: &C6${config.host}`);
|
|
42
|
+
if (config.ssl) {
|
|
43
|
+
this.out.info(`&C(255,180,220)│ &C3ssl options`);
|
|
44
|
+
this.out.info(`&C(255,180,220)│ - &C3enabled: &C6${config.ssl.port ?? 443}`);
|
|
45
|
+
this.out.info(`&C(255,180,220)│ - &C3cert: &C6${config.ssl.pubKey}`);
|
|
46
|
+
this.out.info(`&C(255,180,220)│ - &C3key: &C6${config.ssl.privKey}`);
|
|
47
|
+
}
|
|
48
|
+
this.out.info(`&C(255,180,220)│ &C3server templates`);
|
|
49
|
+
for (const name in config.templates) {
|
|
50
|
+
const path = config.templates[name];
|
|
51
|
+
this.out.info(`&C(255,180,220)│ - &C3${name}: &C6${path}`);
|
|
52
|
+
}
|
|
53
|
+
this.out.info(`&C(255,180,220)│ &C3Debug options`);
|
|
54
|
+
this.out.info(`&C(255,180,220)│ - &C3 showAll: &C6${config.showAll}`);
|
|
55
|
+
this.out.info(`&C(255,180,220)│ - &C3 show server logs: &C6${config.logger.server.show}`);
|
|
56
|
+
this.out.info(`&C(255,180,220)│ - &C3 save server logs: &C6${config.logger.server.save}`);
|
|
57
|
+
this.out.info(`&C(255,180,220)│ - &C3 show requests logs: &C6${config.logger.request.show}`);
|
|
58
|
+
this.out.info(`&C(255,180,220)│ - &C3 save requests logs: &C6${config.logger.request.save}`);
|
|
59
|
+
this.out.info(`&C(255,180,220)│ - &C3 show responses logs: &C6${config.logger.response.show}`);
|
|
60
|
+
this.out.info(`&C(255,180,220)│ - &C3 save responses logs: &C6${config.logger.response.save}`);
|
|
61
|
+
this.out.info(`&C(255,180,220)│ - &C3 show websockets logs: &C6${config.logger.webSocket.show}`);
|
|
62
|
+
this.out.info(`&C(255,180,220)│ - &C3 save websockets logs: &C6${config.logger.webSocket.save}`);
|
|
63
|
+
this.out.info('&C(255,180,220)╰─────────────────────────────────────────────');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export default ServerDebug;
|
|
67
|
+
//# sourceMappingURL=ServerDebug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerDebug.js","sourceRoot":"","sources":["../../src/server/ServerDebug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare class ServerError extends Error {
|
|
2
|
+
readonly message: string;
|
|
3
|
+
readonly status: number;
|
|
4
|
+
readonly options: ServerError.Options;
|
|
5
|
+
constructor(message: string, status?: number, options?: ServerError.Options);
|
|
6
|
+
get isSended(): boolean;
|
|
7
|
+
toJSON(): {
|
|
8
|
+
message: string;
|
|
9
|
+
status: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare namespace ServerError {
|
|
13
|
+
interface Options {
|
|
14
|
+
isSended?: boolean;
|
|
15
|
+
cause?: Error;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export default ServerError;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class ServerError extends Error {
|
|
2
|
+
message;
|
|
3
|
+
status;
|
|
4
|
+
options;
|
|
5
|
+
constructor(message, status = 500, options = {}) {
|
|
6
|
+
super(message, { cause: options.cause });
|
|
7
|
+
this.message = message;
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.options = options;
|
|
10
|
+
}
|
|
11
|
+
get isSended() { return this.options.isSended ?? false; }
|
|
12
|
+
toJSON() { return { message: this.message, status: this.status }; }
|
|
13
|
+
}
|
|
14
|
+
export default ServerError;
|
|
15
|
+
//# sourceMappingURL=ServerError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerError.js","sourceRoot":"","sources":["../../src/server/ServerError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IAEd;IACA;IACA;IAHpB,YACoB,OAAe,EACf,SAAiB,GAAG,EACpB,UAA+B,EAAE;QACjD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;QAHxB,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAc;QACpB,YAAO,GAAP,OAAO,CAA0B;IACR,CAAC;IAC9C,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,CAAC;CAC5E;AAOD,eAAe,WAAW,CAAC"}
|
|
@@ -3,31 +3,27 @@
|
|
|
3
3
|
* @description Adds a session system to `Vortez`.
|
|
4
4
|
* @license Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import EVENTS from 'events';
|
|
7
6
|
import Cookie from './Cookie.js';
|
|
8
|
-
export declare class Session
|
|
7
|
+
export declare class Session {
|
|
9
8
|
/** Stores session instances. */
|
|
10
|
-
private static
|
|
11
|
-
/** Stores session data. */
|
|
12
|
-
private data;
|
|
13
|
-
/** Stores the session's SS_UUID. */
|
|
14
|
-
private sessionID;
|
|
9
|
+
private static instances;
|
|
15
10
|
/**
|
|
16
11
|
* Creates or retrieves the current session instance from cookies.
|
|
17
12
|
* @param cookies - The Cookie instance from the request.
|
|
18
13
|
* @returns The current session instance.
|
|
19
14
|
*/
|
|
20
|
-
static
|
|
15
|
+
static get(cookies: Cookie): Session;
|
|
16
|
+
private static extractID;
|
|
17
|
+
private static getExpiration;
|
|
18
|
+
/** Stores the session's SS_UUID. */
|
|
19
|
+
readonly id: string;
|
|
20
|
+
/** Stores session data. */
|
|
21
|
+
private data;
|
|
21
22
|
/**
|
|
22
23
|
* Constructs a session instance with the given ID.
|
|
23
24
|
* @param sessionID - The session's unique ID.
|
|
24
25
|
*/
|
|
25
26
|
private constructor();
|
|
26
|
-
/**
|
|
27
|
-
* Returns the session's SS_UUID.
|
|
28
|
-
* @returns The session ID string.
|
|
29
|
-
*/
|
|
30
|
-
getID(): string;
|
|
31
27
|
/**
|
|
32
28
|
* Checks whether a given key exists in the session.
|
|
33
29
|
* @param name - The key to check in the session data.
|