xypriss 1.3.8 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +219 -31
- package/dist/cjs/mods/security/src/components/cache/index.js +0 -72
- package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/cjs/mods/security/src/index.js +0 -3
- package/dist/cjs/mods/security/src/index.js.map +1 -1
- package/dist/cjs/shared/logger/Logger.js +2 -0
- package/dist/cjs/shared/logger/Logger.js.map +1 -1
- package/dist/cjs/src/index.js +55 -61
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +281 -0
- package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/index.js +325 -0
- package/dist/cjs/src/middleware/built-in/index.js.map +1 -0
- package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
- package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
- package/dist/cjs/src/quick-start.js +0 -4
- package/dist/cjs/src/quick-start.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +53 -411
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +7 -62
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +1 -1
- package/dist/cjs/src/server/components/fastapi/PerformanceManager.js +1 -1
- package/dist/cjs/src/server/components/fastapi/PerformanceManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/RouteManager.js +0 -82
- package/dist/cjs/src/server/components/fastapi/RouteManager.js.map +1 -1
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +384 -0
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
- package/dist/cjs/src/server/const/default.js +0 -8
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +500 -0
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -0
- package/dist/cjs/src/server/core/XyprissApp.js +412 -0
- package/dist/cjs/src/server/core/XyprissApp.js.map +1 -0
- package/dist/cjs/src/server/middleware/MiddlewareManager.js +146 -0
- package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -0
- package/dist/cjs/src/server/routing/Router.js +341 -0
- package/dist/cjs/src/server/routing/Router.js.map +1 -0
- package/dist/cjs/src/server/utils/PortManager.js +1 -0
- package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
- package/dist/cjs/src/server/utils/forceClosePort.js +294 -88
- package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/index.js +1 -70
- package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/esm/mods/security/src/index.js +1 -1
- package/dist/esm/shared/logger/Logger.js +2 -0
- package/dist/esm/shared/logger/Logger.js.map +1 -1
- package/dist/esm/src/index.js +41 -11
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +279 -0
- package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
- package/dist/esm/src/middleware/built-in/index.js +323 -0
- package/dist/esm/src/middleware/built-in/index.js.map +1 -0
- package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
- package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
- package/dist/esm/src/quick-start.js +0 -4
- package/dist/esm/src/quick-start.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +53 -411
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +8 -59
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +1 -1
- package/dist/esm/src/server/components/fastapi/PerformanceManager.js +1 -1
- package/dist/esm/src/server/components/fastapi/PerformanceManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/RouteManager.js +0 -82
- package/dist/esm/src/server/components/fastapi/RouteManager.js.map +1 -1
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +382 -0
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
- package/dist/esm/src/server/const/default.js +0 -8
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +498 -0
- package/dist/esm/src/server/core/HttpServer.js.map +1 -0
- package/dist/esm/src/server/core/XyprissApp.js +410 -0
- package/dist/esm/src/server/core/XyprissApp.js.map +1 -0
- package/dist/esm/src/server/middleware/MiddlewareManager.js +144 -0
- package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -0
- package/dist/esm/src/server/routing/Router.js +339 -0
- package/dist/esm/src/server/routing/Router.js.map +1 -0
- package/dist/esm/src/server/utils/PortManager.js +1 -0
- package/dist/esm/src/server/utils/PortManager.js.map +1 -1
- package/dist/esm/src/server/utils/forceClosePort.js +294 -88
- package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
- package/dist/index.d.ts +2166 -4273
- package/package.json +31 -19
|
@@ -1,125 +1,331 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var Logger = require('../../../shared/logger/Logger.js');
|
|
4
|
+
var childProcess = require('child_process');
|
|
5
|
+
var util = require('util');
|
|
4
6
|
|
|
5
7
|
class Port {
|
|
6
8
|
constructor(port) {
|
|
7
|
-
this.
|
|
9
|
+
this.MAX_RETRIES = 3;
|
|
10
|
+
this.RETRY_DELAY = 500;
|
|
11
|
+
this.PORT_FREE_WAIT = 1000;
|
|
12
|
+
this.port = this._validatePort(port);
|
|
8
13
|
this.logger = Logger.Logger.getInstance();
|
|
14
|
+
this.execAsync = util.promisify(childProcess.exec);
|
|
9
15
|
}
|
|
10
16
|
/**
|
|
11
17
|
* Attempt to forcefully close/free up the specified port
|
|
12
|
-
* @param port - The port number to force close
|
|
13
18
|
* @returns Promise<boolean> - true if successful, false if failed
|
|
14
19
|
*/
|
|
15
20
|
async forceClosePort() {
|
|
16
21
|
try {
|
|
17
22
|
this.logger.debug("server", `Attempting to force close port ${this.port}...`);
|
|
18
|
-
//
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
23
|
+
// Check if port is actually in use
|
|
24
|
+
const portCheck = await this._checkPortStatus();
|
|
25
|
+
if (!portCheck.isInUse) {
|
|
26
|
+
this.logger.info("server", `Port ${this.port} is already free`);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
// Kill processes using the port
|
|
30
|
+
const success = await this._killPortProcesses(portCheck.processes);
|
|
31
|
+
if (!success) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
// Wait for port to be freed
|
|
35
|
+
await this._waitForPortFree();
|
|
36
|
+
// Final verification
|
|
37
|
+
const finalCheck = await this._verifyPortIsFree();
|
|
38
|
+
if (finalCheck) {
|
|
39
|
+
this.logger.info("server", `Port ${this.port} is now free`);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.logger.warn("server", `Port ${this.port} may still be in use after cleanup attempt`);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
this.logger.error("server", `Error force closing port ${this.port}:`, error.message);
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Validates that the port number is within valid range
|
|
54
|
+
* @param port - The port number to validate
|
|
55
|
+
* @returns The validated port number
|
|
56
|
+
* @throws Error if port is invalid
|
|
57
|
+
*/
|
|
58
|
+
_validatePort(port) {
|
|
59
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
60
|
+
throw new Error(`Invalid port number: ${port}. Port must be between 1 and 65535.`);
|
|
61
|
+
}
|
|
62
|
+
return port;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Checks the current status of the port
|
|
66
|
+
* @returns Promise<PortCheckResult> - Information about port usage
|
|
67
|
+
*/
|
|
68
|
+
async _checkPortStatus() {
|
|
69
|
+
try {
|
|
70
|
+
const processes = await this._getPortProcesses();
|
|
71
|
+
return {
|
|
72
|
+
isInUse: processes.length > 0,
|
|
73
|
+
processes,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
this.logger.debug("server", `Error checking port status: ${error.message}`);
|
|
78
|
+
return { isInUse: false, processes: [] };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Gets list of processes using the port
|
|
83
|
+
* @returns Promise<PortProcess[]> - Array of processes using the port
|
|
84
|
+
*/
|
|
85
|
+
async _getPortProcesses() {
|
|
86
|
+
if (process.platform === "win32") {
|
|
87
|
+
return this._getWindowsPortProcesses();
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return this._getUnixPortProcesses();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gets processes using the port on Windows
|
|
95
|
+
* @returns Promise<PortProcess[]> - Array of Windows processes
|
|
96
|
+
*/
|
|
97
|
+
async _getWindowsPortProcesses() {
|
|
98
|
+
const processes = [];
|
|
99
|
+
try {
|
|
100
|
+
const { stdout } = await this._executeWithRetry(`netstat -ano | findstr :${this.port}`);
|
|
101
|
+
const lines = stdout.split("\n").filter((line) => line.trim());
|
|
102
|
+
for (const line of lines) {
|
|
103
|
+
const parts = line.trim().split(/\s+/);
|
|
104
|
+
if (parts.length >= 5) {
|
|
105
|
+
const localAddress = parts[1];
|
|
106
|
+
const protocol = parts[0];
|
|
107
|
+
const state = parts[3];
|
|
108
|
+
const pid = parts[4];
|
|
109
|
+
// Ensure this is exactly our port (not a port that contains our port number)
|
|
110
|
+
if (this._isExactPortMatch(localAddress, this.port) &&
|
|
111
|
+
pid &&
|
|
112
|
+
pid !== "0") {
|
|
113
|
+
processes.push({ pid, protocol, state });
|
|
52
114
|
}
|
|
53
115
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
this.logger.debug("server", `Windows netstat command failed: ${error.message}`);
|
|
120
|
+
}
|
|
121
|
+
return processes;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Gets processes using the port on Unix-like systems
|
|
125
|
+
* @returns Promise<PortProcess[]> - Array of Unix processes
|
|
126
|
+
*/
|
|
127
|
+
async _getUnixPortProcesses() {
|
|
128
|
+
const processes = [];
|
|
129
|
+
try {
|
|
130
|
+
const { stdout } = await this._executeWithRetry(`lsof -ti:${this.port}`);
|
|
131
|
+
const pids = stdout
|
|
132
|
+
.trim()
|
|
133
|
+
.split("\n")
|
|
134
|
+
.filter((pid) => pid && pid.trim());
|
|
135
|
+
for (const pid of pids) {
|
|
136
|
+
if (pid.trim()) {
|
|
137
|
+
// Get additional process info
|
|
138
|
+
try {
|
|
139
|
+
const { stdout: processInfo } = await this.execAsync(`lsof -p ${pid.trim()} | grep :${this.port}`);
|
|
140
|
+
const protocol = this._extractProtocolFromLsof(processInfo);
|
|
141
|
+
processes.push({ pid: pid.trim(), protocol });
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Fallback if detailed info fails
|
|
145
|
+
processes.push({
|
|
146
|
+
pid: pid.trim(),
|
|
147
|
+
protocol: "unknown",
|
|
148
|
+
});
|
|
149
|
+
}
|
|
57
150
|
}
|
|
58
151
|
}
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
this.logger.debug("server", `Unix lsof command failed: ${error.message}`);
|
|
155
|
+
}
|
|
156
|
+
return processes;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Kills all processes using the port
|
|
160
|
+
* @param processes - Array of processes to kill
|
|
161
|
+
* @returns Promise<boolean> - true if all processes were handled successfully
|
|
162
|
+
*/
|
|
163
|
+
async _killPortProcesses(processes) {
|
|
164
|
+
let allSuccessful = true;
|
|
165
|
+
for (const process of processes) {
|
|
166
|
+
const success = await this._killSingleProcess(process);
|
|
167
|
+
if (!success) {
|
|
168
|
+
allSuccessful = false;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return allSuccessful;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Kills a single process
|
|
175
|
+
* @param process - The process to kill
|
|
176
|
+
* @returns Promise<boolean> - true if successful or process no longer exists
|
|
177
|
+
*/
|
|
178
|
+
async _killSingleProcess(process) {
|
|
179
|
+
try {
|
|
180
|
+
this.logger.debug("server", `Attempting to kill process ${process.pid} (${process.protocol}) using port ${this.port}`);
|
|
181
|
+
if (globalThis.process.platform === "win32") {
|
|
182
|
+
await this._executeWithRetry(`taskkill /F /PID ${process.pid}`);
|
|
183
|
+
}
|
|
59
184
|
else {
|
|
60
|
-
//
|
|
185
|
+
// Try graceful kill first, then force kill
|
|
61
186
|
try {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (pid) {
|
|
69
|
-
try {
|
|
70
|
-
await execAsync(`kill -9 ${pid}`);
|
|
71
|
-
this.logger.info("server", `Forcefully closed process ${pid} using port ${this.port}`);
|
|
72
|
-
}
|
|
73
|
-
catch (killError) {
|
|
74
|
-
// Handle race condition - process may have already exited
|
|
75
|
-
if (killError.message.includes("No such process") ||
|
|
76
|
-
killError.message.includes("Operation not permitted")) {
|
|
77
|
-
this.logger.info("server", `Process ${pid} using port ${this.port} had already exited or is protected`);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this.logger.warn("server", `Failed to kill process ${pid}: ${killError.message}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
187
|
+
await this._executeWithRetry(`kill ${process.pid}`);
|
|
188
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
189
|
+
// Check if process still exists
|
|
190
|
+
const stillExists = await this._processExists(process.pid);
|
|
191
|
+
if (stillExists) {
|
|
192
|
+
await this._executeWithRetry(`kill -9 ${process.pid}`);
|
|
84
193
|
}
|
|
85
194
|
}
|
|
86
|
-
catch
|
|
87
|
-
|
|
88
|
-
|
|
195
|
+
catch {
|
|
196
|
+
// Fallback to force kill
|
|
197
|
+
await this._executeWithRetry(`kill -9 ${process.pid}`);
|
|
89
198
|
}
|
|
90
199
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
200
|
+
this.logger.info("server", `Successfully killed process ${process.pid} using port ${this.port}`);
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
// Handle common scenarios where process is already gone or protected
|
|
205
|
+
if (this._isProcessAlreadyGoneError(error.message)) {
|
|
206
|
+
this.logger.info("server", `Process ${process.pid} using port ${this.port} had already exited`);
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
else if (this._isProcessProtectedError(error.message)) {
|
|
210
|
+
this.logger.warn("server", `Process ${process.pid} is protected and cannot be killed`);
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
this.logger.warn("server", `Failed to kill process ${process.pid}: ${error.message}`);
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Executes a command with retry logic
|
|
221
|
+
* @param command - Command to execute
|
|
222
|
+
* @returns Promise with command result
|
|
223
|
+
*/
|
|
224
|
+
async _executeWithRetry(command) {
|
|
225
|
+
let lastError;
|
|
226
|
+
for (let attempt = 1; attempt <= this.MAX_RETRIES; attempt++) {
|
|
94
227
|
try {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
else {
|
|
103
|
-
const { stdout } = await execAsync(`lsof -ti:${this.port}`);
|
|
104
|
-
if (!stdout.trim()) {
|
|
105
|
-
this.logger.info("server", `Port ${this.port} is now free`);
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
228
|
+
return await this.execAsync(command);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
lastError = error;
|
|
232
|
+
if (attempt < this.MAX_RETRIES) {
|
|
233
|
+
this.logger.debug("server", `Command failed (attempt ${attempt}/${this.MAX_RETRIES}), retrying: ${command}`);
|
|
234
|
+
await new Promise((resolve) => setTimeout(resolve, this.RETRY_DELAY));
|
|
108
235
|
}
|
|
109
236
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
237
|
+
}
|
|
238
|
+
throw lastError;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Waits for the port to be freed
|
|
242
|
+
*/
|
|
243
|
+
async _waitForPortFree() {
|
|
244
|
+
await new Promise((resolve) => setTimeout(resolve, this.PORT_FREE_WAIT));
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Verifies that the port is now free
|
|
248
|
+
* @returns Promise<boolean> - true if port is free
|
|
249
|
+
*/
|
|
250
|
+
async _verifyPortIsFree() {
|
|
251
|
+
try {
|
|
252
|
+
const portCheck = await this._checkPortStatus();
|
|
253
|
+
return !portCheck.isInUse;
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
// If check fails, assume port is free (commands typically fail when nothing is using the port)
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Checks if a process still exists
|
|
262
|
+
* @param pid - Process ID to check
|
|
263
|
+
* @returns Promise<boolean> - true if process exists
|
|
264
|
+
*/
|
|
265
|
+
async _processExists(pid) {
|
|
266
|
+
try {
|
|
267
|
+
if (process.platform === "win32") {
|
|
268
|
+
await this.execAsync(`tasklist /FI "PID eq ${pid}" | findstr ${pid}`);
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
await this.execAsync(`kill -0 ${pid}`);
|
|
114
272
|
}
|
|
115
|
-
this.logger.info("server", `Successfully processed port ${this.port} closure request`);
|
|
116
273
|
return true;
|
|
117
274
|
}
|
|
118
|
-
catch
|
|
119
|
-
this.logger.error("server", `Error force closing port ${this.port}:`, error.message);
|
|
275
|
+
catch {
|
|
120
276
|
return false;
|
|
121
277
|
}
|
|
122
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Checks if the address exactly matches our port
|
|
281
|
+
* @param address - Network address string (e.g., "0.0.0.0:3000")
|
|
282
|
+
* @param port - Port number to match
|
|
283
|
+
* @returns boolean - true if exact match
|
|
284
|
+
*/
|
|
285
|
+
_isExactPortMatch(address, port) {
|
|
286
|
+
const portPattern = new RegExp(`:${port}$`);
|
|
287
|
+
return portPattern.test(address);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Extracts protocol information from lsof output
|
|
291
|
+
* @param lsofOutput - Output from lsof command
|
|
292
|
+
* @returns string - Protocol type
|
|
293
|
+
*/
|
|
294
|
+
_extractProtocolFromLsof(lsofOutput) {
|
|
295
|
+
if (lsofOutput.includes("TCP"))
|
|
296
|
+
return "TCP";
|
|
297
|
+
if (lsofOutput.includes("UDP"))
|
|
298
|
+
return "UDP";
|
|
299
|
+
return "unknown";
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Determines if error indicates process is already gone
|
|
303
|
+
* @param errorMessage - Error message to check
|
|
304
|
+
* @returns boolean - true if process no longer exists
|
|
305
|
+
*/
|
|
306
|
+
_isProcessAlreadyGoneError(errorMessage) {
|
|
307
|
+
const goneIndicators = [
|
|
308
|
+
"n'a pas pu être arrêté",
|
|
309
|
+
"could not be terminated",
|
|
310
|
+
"No such process",
|
|
311
|
+
"not found",
|
|
312
|
+
"ERROR: The process",
|
|
313
|
+
];
|
|
314
|
+
return goneIndicators.some((indicator) => errorMessage.toLowerCase().includes(indicator.toLowerCase()));
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Determines if error indicates process is protected
|
|
318
|
+
* @param errorMessage - Error message to check
|
|
319
|
+
* @returns boolean - true if process is protected
|
|
320
|
+
*/
|
|
321
|
+
_isProcessProtectedError(errorMessage) {
|
|
322
|
+
const protectedIndicators = [
|
|
323
|
+
"Operation not permitted",
|
|
324
|
+
"Access denied",
|
|
325
|
+
"insufficient privilege",
|
|
326
|
+
];
|
|
327
|
+
return protectedIndicators.some((indicator) => errorMessage.toLowerCase().includes(indicator.toLowerCase()));
|
|
328
|
+
}
|
|
123
329
|
}
|
|
124
330
|
|
|
125
331
|
exports.Port = Port;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forceClosePort.js","sources":["../../../../../src/server/utils/forceClosePort.ts"],"sourcesContent":[null],"names":["Logger"],"mappings":"
|
|
1
|
+
{"version":3,"file":"forceClosePort.js","sources":["../../../../../src/server/utils/forceClosePort.ts"],"sourcesContent":[null],"names":["Logger","promisify","exec"],"mappings":"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"}
|
|
@@ -285,75 +285,6 @@ new Proxy({}, {
|
|
|
285
285
|
},
|
|
286
286
|
});
|
|
287
287
|
// ========================================
|
|
288
|
-
// MEMORY CACHE API
|
|
289
|
-
// ========================================
|
|
290
|
-
/**
|
|
291
|
-
* Read data from memory cache with fallback
|
|
292
|
-
*
|
|
293
|
-
* Retrieves data from the default memory cache instance.
|
|
294
|
-
* Returns empty object if key is not found (legacy behavior).
|
|
295
|
-
*
|
|
296
|
-
* @param args - Arguments passed to Cache.get()
|
|
297
|
-
* @returns Promise resolving to cached data or empty object
|
|
298
|
-
*
|
|
299
|
-
* @example
|
|
300
|
-
* ```typescript
|
|
301
|
-
* import { readCache } from "xypriss-security";
|
|
302
|
-
*
|
|
303
|
-
* const sessionData = await readCache('session:user123');
|
|
304
|
-
* console.log('User ID:', sessionData.userId || 'Not found');
|
|
305
|
-
* ```
|
|
306
|
-
*
|
|
307
|
-
* @since 4.2.2
|
|
308
|
-
*/
|
|
309
|
-
const readCache = async (...args) => {
|
|
310
|
-
const result = await Cache.get(...args);
|
|
311
|
-
return result || {};
|
|
312
|
-
};
|
|
313
|
-
/**
|
|
314
|
-
* Write data to memory cache
|
|
315
|
-
*
|
|
316
|
-
* Stores data in the default memory cache instance with encryption
|
|
317
|
-
* and automatic compression for large values.
|
|
318
|
-
*
|
|
319
|
-
* @param args - Arguments passed to Cache.set()
|
|
320
|
-
* @returns Promise resolving to true if successful
|
|
321
|
-
*
|
|
322
|
-
* @example
|
|
323
|
-
* ```typescript
|
|
324
|
-
* import { writeCache } from "xypriss-security";
|
|
325
|
-
*
|
|
326
|
-
* await writeCache('user:profile', userData, { ttl: 1800000 }); // 30 min
|
|
327
|
-
* ```
|
|
328
|
-
*
|
|
329
|
-
* @since 4.2.2
|
|
330
|
-
*/
|
|
331
|
-
const writeCache = async (...args) => {
|
|
332
|
-
return Cache.set(...args);
|
|
333
|
-
};
|
|
334
|
-
/**
|
|
335
|
-
* Get memory cache performance statistics
|
|
336
|
-
*
|
|
337
|
-
* Returns comprehensive statistics including hit rates, memory usage,
|
|
338
|
-
* and performance metrics for the default cache instance.
|
|
339
|
-
*
|
|
340
|
-
* @returns Current cache statistics
|
|
341
|
-
*
|
|
342
|
-
* @example
|
|
343
|
-
* ```typescript
|
|
344
|
-
* import { getCacheStats } from "xypriss-security";
|
|
345
|
-
*
|
|
346
|
-
* const stats = getCacheStats();
|
|
347
|
-
* console.log(`Hit rate: ${stats.hitRate}%`);
|
|
348
|
-
* console.log(`Memory usage: ${stats.memoryUsage} bytes`);
|
|
349
|
-
* ```
|
|
350
|
-
*
|
|
351
|
-
* @since 4.2.2
|
|
352
|
-
*/
|
|
353
|
-
const getCacheStats = () => {
|
|
354
|
-
return Cache.getStats;
|
|
355
|
-
};
|
|
356
|
-
// ========================================
|
|
357
288
|
// UTILITY FUNCTIONS
|
|
358
289
|
// ========================================
|
|
359
290
|
/**
|
|
@@ -456,5 +387,5 @@ const handleGracefulShutdown = () => {
|
|
|
456
387
|
process.on("SIGTERM", handleGracefulShutdown);
|
|
457
388
|
process.on("SIGINT", handleGracefulShutdown);
|
|
458
389
|
|
|
459
|
-
export { Cache, DEFAULT_FILE_CACHE_CONFIG, FileCache, SIMC as SecureInMemoryCache, createOptimalCache, generateFilePath
|
|
390
|
+
export { Cache, DEFAULT_FILE_CACHE_CONFIG, FileCache, SIMC as SecureInMemoryCache, createOptimalCache, generateFilePath };
|
|
460
391
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../../mods/security/src/components/cache/index.ts"],"sourcesContent":[null],"names":["SecureInMemoryCache","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BiF;AAwCjF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEG;AAEH;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;AACU,MAAA,KAAK,GAAG,IAAIA,IAAmB,GAAG;AA+F/C;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACU,MAAA,gBAAgB,GAAG,CAC5B,GAAW,EACX,OAAA,GAAqC,EAAE,KAC/B;IACR,MAAM,MAAM,GAAG,EAAE,GAAG,yBAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5D,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAW,CAAC;AAEtE,IAAA,IAAI,QAAgB,CAAC;AAErB,IAAA,QAAQ,MAAM,CAAC,cAAc;AACzB,QAAA,KAAK,cAAc;YACf,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,QAAQ,GAAGC,aAAI,CAAC,OAAO,CACnB,MAAM,CAAC,SAAS,EAChB,GAAG,EACH,MAAM,EACN,GAAG,SAAS,CAAA,EAAG,MAAM,CAAC,SAAS,CAAE,CAAA,CACpC,CAAC;YACF,MAAM;AAEV,QAAA,KAAK,OAAO;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,YAAA,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;AAC/B,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACnD,QAAQ,GAAGA,aAAI,CAAC,OAAO,CACnB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,IAAI,CAAC,EACZ,KAAK,EACL,GAAG,EACH,CAAG,EAAA,SAAS,CAAG,EAAA,MAAM,CAAC,SAAS,CAAE,CAAA,CACpC,CAAC;YACF,MAAM;AAEV,QAAA,KAAK,QAAQ;YACT,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AACpD,YAAA,QAAQ,GAAGA,aAAI,CAAC,OAAO,CACnB,MAAM,CAAC,SAAS,EAChB,CAAA,EAAG,OAAO,CAAG,EAAA,MAAM,CAAC,SAAS,CAAA,CAAE,CAClC,CAAC;YACF,MAAM;AAEV,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA;AACI,YAAA,QAAQ,GAAGA,aAAI,CAAC,OAAO,CACnB,MAAM,CAAC,SAAS,EAChB,CAAA,EAAG,SAAS,CAAG,EAAA,MAAM,CAAC,SAAS,CAAA,CAAE,CACpC,CAAC;YACF,MAAM;KACb;AAED,IAAA,OAAO,QAAQ,CAAC;AACpB,EAAE;AAEF;AACA;AACA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACH,IAAI,iBAAiB,GAAqB,IAAI,CAAC;AACf,IAAI,KAAK,CAAC,EAAe,EAAE;IACvD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAA;QACZ,IAAI,CAAC,iBAAiB,EAAE;AACpB,YAAA,iBAAiB,GAAG,IAAI,SAAS,EAAE,CAAC;SACvC;AACD,QAAA,MAAM,KAAK,GAAI,iBAAyB,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,OAAO,KAAK,KAAK,UAAU;AAC9B,cAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;cAC7B,KAAK,CAAC;KACf;AACJ,CAAA,EAAE;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../mods/security/src/components/cache/index.ts"],"sourcesContent":[null],"names":["SecureInMemoryCache","path"],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ import './components/fortified-function/serializer/safe-serializer.js';
|
|
|
35
35
|
import 'nehoid';
|
|
36
36
|
import '../../../shared/logger/Logger.js';
|
|
37
37
|
import './components/fortified-function/UFA/ultra-fast-allocator.js';
|
|
38
|
-
export { Cache, createOptimalCache, generateFilePath
|
|
38
|
+
export { Cache, createOptimalCache, generateFilePath } from './components/cache/index.js';
|
|
39
39
|
import { PasswordManager } from './core/password/password-core.js';
|
|
40
40
|
|
|
41
41
|
/***************************************************************************
|
|
@@ -17,6 +17,8 @@ class Logger {
|
|
|
17
17
|
console: false, // Console interception system logs (can be verbose)
|
|
18
18
|
ipc: true, // Inter-process communication logs
|
|
19
19
|
memory: true, // Memory monitoring and detection logs
|
|
20
|
+
lifecycle: true, // Server lifecycle management logs
|
|
21
|
+
routing: true, // Fast routing system logs
|
|
20
22
|
},
|
|
21
23
|
types: {
|
|
22
24
|
startup: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sources":["../../../../shared/logger/Logger.ts"],"sourcesContent":[null],"names":[],"mappings":"MAOa,MAAM,CAAA;AAIf,IAAA,WAAA,CAAY,MAAiC,EAAA;AACzC,QAAA,MAAM,aAAa,GAAG;AAClB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE,MAAe;AACtB,YAAA,UAAU,EAAE;AACR,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,UAAU,EAAE,IAAI;AAChB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,IAAI;gBACT,MAAM,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"Logger.js","sources":["../../../../shared/logger/Logger.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|