@spinajs/http 2.0.385 → 2.0.386
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/server.d.ts +12 -0
- package/lib/cjs/server.d.ts.map +1 -1
- package/lib/cjs/server.js +72 -0
- package/lib/cjs/server.js.map +1 -1
- package/lib/mjs/server.d.ts +12 -0
- package/lib/mjs/server.d.ts.map +1 -1
- package/lib/mjs/server.js +72 -0
- package/lib/mjs/server.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +11 -11
package/lib/cjs/server.d.ts
CHANGED
|
@@ -29,6 +29,10 @@ export declare class HttpServer extends AsyncService {
|
|
|
29
29
|
*/
|
|
30
30
|
protected _httpServer: Http;
|
|
31
31
|
protected _httpsServer: Https;
|
|
32
|
+
/**
|
|
33
|
+
* Track active connections for cleanup
|
|
34
|
+
*/
|
|
35
|
+
protected _connections: Set<any>;
|
|
32
36
|
get Server(): Http | Https;
|
|
33
37
|
/**
|
|
34
38
|
* Logger for this module
|
|
@@ -49,6 +53,14 @@ export declare class HttpServer extends AsyncService {
|
|
|
49
53
|
*/
|
|
50
54
|
start(): Promise<void>;
|
|
51
55
|
stop(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Enhanced dispose method with proper connection cleanup and timeout handling
|
|
58
|
+
*/
|
|
59
|
+
dispose(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Force close all tracked connections
|
|
62
|
+
*/
|
|
63
|
+
private _forceCloseConnections;
|
|
52
64
|
/**
|
|
53
65
|
* Registers global middleware to express app
|
|
54
66
|
*
|
package/lib/cjs/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAG3E,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIlD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AAErC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAG1C,SAAS,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAG/C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;IAKhC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAC5B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAE9B,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;;IAMN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDrC;;OAEG;IACH,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAG3E,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIlD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AAErC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAG1C,SAAS,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAG/C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;IAKhC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAC5B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,YAAY,WAAkB;IAExC,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;;IAMN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDrC;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACI,KAAK;IAwBL,IAAI;IAMX;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;;OAIG;IACI,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;CAG7C"}
|
package/lib/cjs/server.js
CHANGED
|
@@ -37,6 +37,10 @@ let HttpServer = class HttpServer extends di_1.AsyncService {
|
|
|
37
37
|
}
|
|
38
38
|
constructor() {
|
|
39
39
|
super();
|
|
40
|
+
/**
|
|
41
|
+
* Track active connections for cleanup
|
|
42
|
+
*/
|
|
43
|
+
this._connections = new Set();
|
|
40
44
|
}
|
|
41
45
|
async resolve() {
|
|
42
46
|
this.Express = (0, express_1.default)();
|
|
@@ -102,10 +106,24 @@ let HttpServer = class HttpServer extends di_1.AsyncService {
|
|
|
102
106
|
key: key,
|
|
103
107
|
cert: cert,
|
|
104
108
|
}, this.Express);
|
|
109
|
+
// Track connections for cleanup
|
|
110
|
+
this._httpsServer.on('connection', (socket) => {
|
|
111
|
+
this._connections.add(socket);
|
|
112
|
+
socket.on('close', () => {
|
|
113
|
+
this._connections.delete(socket);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
105
116
|
}
|
|
106
117
|
else {
|
|
107
118
|
this.Log.info(`HTTP enabled !`);
|
|
108
119
|
this._httpServer = (0, http_1.createServer)(this.Express);
|
|
120
|
+
// Track connections for cleanup
|
|
121
|
+
this._httpServer.on('connection', (socket) => {
|
|
122
|
+
this._connections.add(socket);
|
|
123
|
+
socket.on('close', () => {
|
|
124
|
+
this._connections.delete(socket);
|
|
125
|
+
});
|
|
126
|
+
});
|
|
109
127
|
}
|
|
110
128
|
}
|
|
111
129
|
/**
|
|
@@ -151,6 +169,60 @@ let HttpServer = class HttpServer extends di_1.AsyncService {
|
|
|
151
169
|
this.Server.close();
|
|
152
170
|
}
|
|
153
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Enhanced dispose method with proper connection cleanup and timeout handling
|
|
174
|
+
*/
|
|
175
|
+
async dispose() {
|
|
176
|
+
if (!this.Server) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
return new Promise((resolve, reject) => {
|
|
180
|
+
// Set a timeout for graceful shutdown
|
|
181
|
+
const timeout = setTimeout(() => {
|
|
182
|
+
this.Log.warn('Server shutdown timeout, forcing close');
|
|
183
|
+
// Force close all tracked connections
|
|
184
|
+
this._forceCloseConnections();
|
|
185
|
+
// Force close connections if available (Node.js 18.2+)
|
|
186
|
+
if (typeof this.Server.closeAllConnections === 'function') {
|
|
187
|
+
this.Server.closeAllConnections();
|
|
188
|
+
}
|
|
189
|
+
// Still resolve as we've done our best to clean up
|
|
190
|
+
resolve();
|
|
191
|
+
}, 10000);
|
|
192
|
+
this.Server.close((err) => {
|
|
193
|
+
clearTimeout(timeout);
|
|
194
|
+
if (err) {
|
|
195
|
+
this.Log.error('Error during server close:', err);
|
|
196
|
+
reject(err);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
this.Log.info('Server closed successfully');
|
|
200
|
+
resolve();
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
// For tracked connections, manually close them after grace period
|
|
204
|
+
setTimeout(() => {
|
|
205
|
+
if (this._connections.size > 0) {
|
|
206
|
+
this.Log.warn(`Forcing closure of ${this._connections.size} remaining connections`);
|
|
207
|
+
this._forceCloseConnections();
|
|
208
|
+
}
|
|
209
|
+
}, 5000);
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Force close all tracked connections
|
|
214
|
+
*/
|
|
215
|
+
_forceCloseConnections() {
|
|
216
|
+
for (const connection of this._connections) {
|
|
217
|
+
try {
|
|
218
|
+
connection.destroy();
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
this.Log.warn('Error destroying connection:', err.message);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
this._connections.clear();
|
|
225
|
+
}
|
|
154
226
|
/**
|
|
155
227
|
* Registers global middleware to express app
|
|
156
228
|
*
|
package/lib/cjs/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oCAAsG;AACtG,0DAA+D;AAC/D,sCAA2C;AAE3C,kDAA+C;AAC/C,kCAAgC;AAEhC,+BAAwE;AACxE,iCAA2E;AAC3E,2BAAgC;AAChC,gDAAwB;AACxB,sDAAkD;AAClD,oDAAuB;AACvB,4CAAoB;AAEpB,mDAA6E;AAC7E,mCAAiC;AACjC,yCAAuC;AACvC,sCAAoC;AACpC,mCAAiC;AACjC,uCAAqC;AAI9B,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,iBAAY;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
package/lib/mjs/server.d.ts
CHANGED
|
@@ -29,6 +29,10 @@ export declare class HttpServer extends AsyncService {
|
|
|
29
29
|
*/
|
|
30
30
|
protected _httpServer: Http;
|
|
31
31
|
protected _httpsServer: Https;
|
|
32
|
+
/**
|
|
33
|
+
* Track active connections for cleanup
|
|
34
|
+
*/
|
|
35
|
+
protected _connections: Set<any>;
|
|
32
36
|
get Server(): Http | Https;
|
|
33
37
|
/**
|
|
34
38
|
* Logger for this module
|
|
@@ -49,6 +53,14 @@ export declare class HttpServer extends AsyncService {
|
|
|
49
53
|
*/
|
|
50
54
|
start(): Promise<void>;
|
|
51
55
|
stop(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Enhanced dispose method with proper connection cleanup and timeout handling
|
|
58
|
+
*/
|
|
59
|
+
dispose(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Force close all tracked connections
|
|
62
|
+
*/
|
|
63
|
+
private _forceCloseConnections;
|
|
52
64
|
/**
|
|
53
65
|
* Registers global middleware to express app
|
|
54
66
|
*
|
package/lib/mjs/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAG3E,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIlD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AAErC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAG1C,SAAS,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAG/C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;IAKhC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAC5B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAE9B,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;;IAMN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDrC;;OAEG;IACH,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAiD,MAAM,aAAa,CAAC;AACtG,OAAO,EAAU,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,IAAI,IAAI,EAAoC,MAAM,MAAM,CAAC;AACxE,OAAO,EAAE,MAAM,IAAI,KAAK,EAAqC,MAAM,OAAO,CAAC;AAG3E,OAAO,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIlD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AAErC,qBAEa,UAAW,SAAQ,YAAY;IAE1C,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC;IAGhC,SAAS,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAG1C,SAAS,CAAC,UAAU,EAAE,wBAAwB,CAAC;IAG/C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC;IAKhC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IAEnC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC;IAC5B,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,YAAY,WAAkB;IAExC,IAAW,MAAM,IAAI,IAAI,GAAG,KAAK,CAEhC;IAED;;OAEG;IAEH,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;;IAMN,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDrC;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACI,KAAK;IAwBL,IAAI;IAMX;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CrC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;;OAIG;IACI,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI;CAG7C"}
|
package/lib/mjs/server.js
CHANGED
|
@@ -31,6 +31,10 @@ let HttpServer = class HttpServer extends AsyncService {
|
|
|
31
31
|
}
|
|
32
32
|
constructor() {
|
|
33
33
|
super();
|
|
34
|
+
/**
|
|
35
|
+
* Track active connections for cleanup
|
|
36
|
+
*/
|
|
37
|
+
this._connections = new Set();
|
|
34
38
|
}
|
|
35
39
|
async resolve() {
|
|
36
40
|
this.Express = Express();
|
|
@@ -96,10 +100,24 @@ let HttpServer = class HttpServer extends AsyncService {
|
|
|
96
100
|
key: key,
|
|
97
101
|
cert: cert,
|
|
98
102
|
}, this.Express);
|
|
103
|
+
// Track connections for cleanup
|
|
104
|
+
this._httpsServer.on('connection', (socket) => {
|
|
105
|
+
this._connections.add(socket);
|
|
106
|
+
socket.on('close', () => {
|
|
107
|
+
this._connections.delete(socket);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
99
110
|
}
|
|
100
111
|
else {
|
|
101
112
|
this.Log.info(`HTTP enabled !`);
|
|
102
113
|
this._httpServer = HttpCreateServer(this.Express);
|
|
114
|
+
// Track connections for cleanup
|
|
115
|
+
this._httpServer.on('connection', (socket) => {
|
|
116
|
+
this._connections.add(socket);
|
|
117
|
+
socket.on('close', () => {
|
|
118
|
+
this._connections.delete(socket);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
103
121
|
}
|
|
104
122
|
}
|
|
105
123
|
/**
|
|
@@ -145,6 +163,60 @@ let HttpServer = class HttpServer extends AsyncService {
|
|
|
145
163
|
this.Server.close();
|
|
146
164
|
}
|
|
147
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Enhanced dispose method with proper connection cleanup and timeout handling
|
|
168
|
+
*/
|
|
169
|
+
async dispose() {
|
|
170
|
+
if (!this.Server) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
return new Promise((resolve, reject) => {
|
|
174
|
+
// Set a timeout for graceful shutdown
|
|
175
|
+
const timeout = setTimeout(() => {
|
|
176
|
+
this.Log.warn('Server shutdown timeout, forcing close');
|
|
177
|
+
// Force close all tracked connections
|
|
178
|
+
this._forceCloseConnections();
|
|
179
|
+
// Force close connections if available (Node.js 18.2+)
|
|
180
|
+
if (typeof this.Server.closeAllConnections === 'function') {
|
|
181
|
+
this.Server.closeAllConnections();
|
|
182
|
+
}
|
|
183
|
+
// Still resolve as we've done our best to clean up
|
|
184
|
+
resolve();
|
|
185
|
+
}, 10000);
|
|
186
|
+
this.Server.close((err) => {
|
|
187
|
+
clearTimeout(timeout);
|
|
188
|
+
if (err) {
|
|
189
|
+
this.Log.error('Error during server close:', err);
|
|
190
|
+
reject(err);
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
this.Log.info('Server closed successfully');
|
|
194
|
+
resolve();
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
// For tracked connections, manually close them after grace period
|
|
198
|
+
setTimeout(() => {
|
|
199
|
+
if (this._connections.size > 0) {
|
|
200
|
+
this.Log.warn(`Forcing closure of ${this._connections.size} remaining connections`);
|
|
201
|
+
this._forceCloseConnections();
|
|
202
|
+
}
|
|
203
|
+
}, 5000);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Force close all tracked connections
|
|
208
|
+
*/
|
|
209
|
+
_forceCloseConnections() {
|
|
210
|
+
for (const connection of this._connections) {
|
|
211
|
+
try {
|
|
212
|
+
connection.destroy();
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
this.Log.warn('Error destroying connection:', err.message);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
this._connections.clear();
|
|
219
|
+
}
|
|
148
220
|
/**
|
|
149
221
|
* Registers global middleware to express app
|
|
150
222
|
*
|
package/lib/mjs/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAc,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,wBAAwB,CAAC;AAEhC,OAAO,EAAkB,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxE,OAAO,EAAmB,YAAY,IAAI,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAA2B,MAAM,SAAS,CAAC;AAClD,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAA4B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,yBAAyB,CAAC;AACjC,OAAO,+BAA+B,CAAC;AACvC,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,6BAA6B,CAAC;AAI9B,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|