@mondart/nestjs-common-module-core 3.2.5 → 3.2.7
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 +25 -1
- package/dist/constants/nest-exceptions-api-response.const.d.ts.map +1 -1
- package/dist/constants/nest-exceptions-api-response.const.js +4 -0
- package/dist/constants/nest-exceptions-api-response.const.js.map +1 -1
- package/dist/filters/global-exception.filter.d.ts +1 -1
- package/dist/filters/global-exception.filter.d.ts.map +1 -1
- package/dist/filters/global-exception.filter.js +12 -9
- package/dist/filters/global-exception.filter.js.map +1 -1
- package/dist/helpers/graceful-shutdown.helper.d.ts +15 -0
- package/dist/helpers/graceful-shutdown.helper.d.ts.map +1 -0
- package/dist/helpers/graceful-shutdown.helper.js +96 -0
- package/dist/helpers/graceful-shutdown.helper.js.map +1 -0
- package/dist/helpers/index.d.ts +1 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +1 -0
- package/dist/helpers/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -79,7 +79,11 @@ directly:
|
|
|
79
79
|
```ts
|
|
80
80
|
import { ErrorResponse } from '@mondart/nestjs-common-module-core';
|
|
81
81
|
|
|
82
|
-
new ErrorResponse({
|
|
82
|
+
new ErrorResponse({
|
|
83
|
+
name: 'NotFoundException',
|
|
84
|
+
message: 'Not found',
|
|
85
|
+
status: 404,
|
|
86
|
+
});
|
|
83
87
|
```
|
|
84
88
|
|
|
85
89
|
Common request DTOs — `IdDto`, `IdsDto` (comma-separated `ids` query param),
|
|
@@ -208,6 +212,26 @@ for `{0}`-style `SharedMessages` interpolation, `EnvValidator` for validating
|
|
|
208
212
|
`RxjsCatchErrorHelper` / `RxjsCustomTimeoutHelper` RxJS operators for mapping
|
|
209
213
|
errors/timeouts on outbound calls to Nest exceptions.
|
|
210
214
|
|
|
215
|
+
### Graceful HTTP shutdown
|
|
216
|
+
|
|
217
|
+
Use `GracefulShutdownHelper.enable()` instead of `app.enableShutdownHooks()`
|
|
218
|
+
in an HTTP service bootstrap:
|
|
219
|
+
|
|
220
|
+
```ts
|
|
221
|
+
import { GracefulShutdownHelper } from '@mondart/nestjs-common-module-core';
|
|
222
|
+
|
|
223
|
+
const app = await NestFactory.create(AppModule);
|
|
224
|
+
GracefulShutdownHelper.enable(app);
|
|
225
|
+
await app.listen(appPort);
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
On `SIGTERM` or `SIGINT`, the helper rejects new requests with `503` and a
|
|
229
|
+
`Connection: close` header, closes idle keep-alive connections, waits up to
|
|
230
|
+
110 seconds for active responses, and then calls `app.close()` so Nest module,
|
|
231
|
+
Kafka, queue, and database shutdown hooks run. Configure the container stop
|
|
232
|
+
grace period above that deadline (the Swarm deployment uses two minutes).
|
|
233
|
+
Do not register Nest's default shutdown signal handlers alongside this helper.
|
|
234
|
+
|
|
211
235
|
## Kafka-related exports
|
|
212
236
|
|
|
213
237
|
`BaseKafkaEventDto`, `KafkaRequestDto`, `KafkaSuccessResponse`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-exceptions-api-response.const.d.ts","sourceRoot":"","sources":["../../src/constants/nest-exceptions-api-response.const.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"nest-exceptions-api-response.const.d.ts","sourceRoot":"","sources":["../../src/constants/nest-exceptions-api-response.const.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,EAwCxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nest-exceptions-api-response.const.js","sourceRoot":"","sources":["../../src/constants/nest-exceptions-api-response.const.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sEAAwD;AAExD,wCAAqD;AAGxC,QAAA,yBAAyB,GAAyB,MAAM,CAAC,IAAI,CACxE,UAAU,CACX,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;IAClB,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAEtD,OAAO;QACL,MAAM,EAAE,iBAAiB,CAAC,MAAM;QAChC,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,iCAAuB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;iBACtE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,iBAAiB,CAAC,OAAO;iBACnC;gBACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE;gBAC7D,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;yBACd;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,iBAAiB,CAAC,OAAO;yBACnC;qBACF;iBACF;aACF;SACF;QACD,WAAW,EAAE,iCAAuB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;KAC1E,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"nest-exceptions-api-response.const.js","sourceRoot":"","sources":["../../src/constants/nest-exceptions-api-response.const.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sEAAwD;AAExD,wCAAqD;AAGxC,QAAA,yBAAyB,GAAyB,MAAM,CAAC,IAAI,CACxE,UAAU,CACX,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;IAClB,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAEtD,OAAO;QACL,MAAM,EAAE,iBAAiB,CAAC,MAAM;QAChC,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,iCAAuB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;iBACtE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,iBAAiB,CAAC,OAAO;iBACnC;gBACD,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,EAAE;gBAC7D,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;yBACd;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,iBAAiB,CAAC,OAAO;yBACnC;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;yBACd;qBACF;iBACF;aACF;SACF;QACD,WAAW,EAAE,iCAAuB,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC;KAC1E,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -10,7 +10,7 @@ export declare class GlobalExceptionFilter implements ExceptionFilter {
|
|
|
10
10
|
private handleI18nValidationException;
|
|
11
11
|
private flattenValidationErrors;
|
|
12
12
|
private translateValidationConstraints;
|
|
13
|
-
private
|
|
13
|
+
private attachRpcMessageKey;
|
|
14
14
|
private translateException;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=global-exception.filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-exception.filter.d.ts","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2BnC,qBACa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAG3B,YAAY,GAAE,OAAe;IAIzC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"global-exception.filter.d.ts","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2BnC,qBACa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;gBAG3B,YAAY,GAAE,OAAe;IAIzC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;IA8HzC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,6BAA6B;IA4BrC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;CAiC3B"}
|
|
@@ -87,15 +87,15 @@ let GlobalExceptionFilter = class GlobalExceptionFilter {
|
|
|
87
87
|
...customExceptionsArray,
|
|
88
88
|
].map((exception) => exception.name);
|
|
89
89
|
if (type === 'rpc') {
|
|
90
|
-
this.
|
|
90
|
+
this.attachRpcMessageKey(exception, messageKey);
|
|
91
91
|
if (exceptionsName.includes(exception.name)) {
|
|
92
92
|
return (0, rxjs_1.throwError)(exception);
|
|
93
93
|
}
|
|
94
94
|
else {
|
|
95
95
|
const internalServerErrorException = new common_1.InternalServerErrorException(exception, {
|
|
96
|
-
cause:
|
|
96
|
+
cause: exception?.cause,
|
|
97
97
|
});
|
|
98
|
-
this.
|
|
98
|
+
this.attachRpcMessageKey(internalServerErrorException, messageKey);
|
|
99
99
|
return (0, rxjs_1.throwError)(internalServerErrorException);
|
|
100
100
|
}
|
|
101
101
|
}
|
|
@@ -117,10 +117,12 @@ let GlobalExceptionFilter = class GlobalExceptionFilter {
|
|
|
117
117
|
? {
|
|
118
118
|
cause: result?.message,
|
|
119
119
|
description: result?.error ?? null,
|
|
120
|
+
...(messageKey ? { messageKey } : {}),
|
|
120
121
|
}
|
|
121
122
|
: {
|
|
122
|
-
cause:
|
|
123
|
+
cause: exception?.cause ?? null,
|
|
123
124
|
description: result?.error ?? null,
|
|
125
|
+
...(messageKey ? { messageKey } : {}),
|
|
124
126
|
};
|
|
125
127
|
return response.status(status).json(new dto_1.ErrorResponse({
|
|
126
128
|
name: helpers_1.ConvertStringCaseHelper.toTitleCase(exception?.name),
|
|
@@ -137,8 +139,9 @@ let GlobalExceptionFilter = class GlobalExceptionFilter {
|
|
|
137
139
|
message: helpers_1.MessageFormatter.replace(enums_1.SharedMessages.INTERNAL_SERVER_ERROR),
|
|
138
140
|
status: common_1.HttpStatus.INTERNAL_SERVER_ERROR,
|
|
139
141
|
details: {
|
|
140
|
-
cause:
|
|
142
|
+
cause: exception?.cause ?? null,
|
|
141
143
|
description: exception?.message ?? null,
|
|
144
|
+
...(messageKey ? { messageKey } : {}),
|
|
142
145
|
},
|
|
143
146
|
}));
|
|
144
147
|
}
|
|
@@ -184,18 +187,18 @@ let GlobalExceptionFilter = class GlobalExceptionFilter {
|
|
|
184
187
|
value: error.value,
|
|
185
188
|
}));
|
|
186
189
|
}
|
|
187
|
-
|
|
190
|
+
attachRpcMessageKey(exception, messageKey) {
|
|
188
191
|
if (!messageKey)
|
|
189
192
|
return;
|
|
190
|
-
exception.
|
|
193
|
+
exception.messageKey = messageKey;
|
|
191
194
|
const response = exception?.getResponse?.();
|
|
192
195
|
if (response && typeof response === 'object') {
|
|
193
|
-
response.
|
|
196
|
+
response.messageKey = messageKey;
|
|
194
197
|
}
|
|
195
198
|
else if (typeof response === 'string') {
|
|
196
199
|
exception.response = {
|
|
197
200
|
message: response,
|
|
198
|
-
|
|
201
|
+
messageKey,
|
|
199
202
|
};
|
|
200
203
|
}
|
|
201
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAQwB;AAExB,+BAAkC;AAClC,gCAAuC;AACvC,oCAAgE;AAChE,wCAIoB;AACpB,sEAAwD;AACxD,gEAAkD;AAClD,uDAAyC;AACzC,6CAIqB;AAYd,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAOhC,YAAY,eAAwB,KAAK;QANxB,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAuB,EAAE;YAC5D,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAKD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAc,EAAE,IAAmB;QACvC,MAAM,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;QAC7B,MAAM,yBAAyB,GAC7B,SAAS,YAAY,qCAAuB,CAAC;QAC/C,MAAM,UAAU,GAAG,yBAAyB;YAC1C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAG7C,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,yBAAyB;YACjD,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpC,MAAM,OAAO,GACX,OAAO,SAAS,EAAE,OAAO,KAAK,QAAQ;YACpC,CAAC,CAAC,SAAS,EAAE,OAAO,KAAK,EAAE;gBACzB,CAAC,CAAC,SAAS,EAAE,OAAO;gBACpB,CAAC,CAAC,6BAA6B;YACjC,CAAC,CAAC,CAAC,OAAO,SAAS,EAAE,OAAO,KAAK,QAAQ;gBACnC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC;gBAChD,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;oBAChC,SAAS,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC;gBACrC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;gBACpC,CAAC,CAAC,6BAA6B,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,EAAE,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEpC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAE9D,MAAM,cAAc,GAAG;YACrB,GAAG,mBAAmB;YACtB,GAAG,qBAAqB;SACzB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { INestApplication, Logger } from '@nestjs/common';
|
|
2
|
+
export interface GracefulShutdownOptions {
|
|
3
|
+
timeoutMs?: number;
|
|
4
|
+
signals?: NodeJS.Signals[];
|
|
5
|
+
logger?: Pick<Logger, 'log' | 'warn' | 'error'>;
|
|
6
|
+
}
|
|
7
|
+
export interface GracefulShutdownController {
|
|
8
|
+
readonly isDraining: () => boolean;
|
|
9
|
+
readonly activeRequests: () => number;
|
|
10
|
+
shutdown(signal?: NodeJS.Signals): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare class GracefulShutdownHelper {
|
|
13
|
+
static enable(app: INestApplication, options?: GracefulShutdownOptions): GracefulShutdownController;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=graceful-shutdown.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graceful-shutdown.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAU1D,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAWD,qBAAa,sBAAsB;IACjC,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,uBAA4B,GACpC,0BAA0B;CAwG9B"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GracefulShutdownHelper = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 110_000;
|
|
6
|
+
class GracefulShutdownHelper {
|
|
7
|
+
static enable(app, options = {}) {
|
|
8
|
+
const server = app.getHttpServer();
|
|
9
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
10
|
+
const signals = options.signals ?? ['SIGTERM', 'SIGINT'];
|
|
11
|
+
const logger = options.logger ?? new common_1.Logger('GracefulShutdown');
|
|
12
|
+
let draining = false;
|
|
13
|
+
let activeRequests = 0;
|
|
14
|
+
let shutdownPromise;
|
|
15
|
+
app.use((_request, response, next) => {
|
|
16
|
+
if (draining) {
|
|
17
|
+
response.statusCode = 503;
|
|
18
|
+
response.setHeader('Connection', 'close');
|
|
19
|
+
response.setHeader('Content-Type', 'application/json');
|
|
20
|
+
response.end(JSON.stringify({
|
|
21
|
+
statusCode: 503,
|
|
22
|
+
message: 'Service is shutting down',
|
|
23
|
+
}));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
activeRequests += 1;
|
|
27
|
+
let completed = false;
|
|
28
|
+
const complete = () => {
|
|
29
|
+
if (completed)
|
|
30
|
+
return;
|
|
31
|
+
completed = true;
|
|
32
|
+
activeRequests = Math.max(0, activeRequests - 1);
|
|
33
|
+
};
|
|
34
|
+
response.once('finish', complete);
|
|
35
|
+
response.once('close', complete);
|
|
36
|
+
next();
|
|
37
|
+
});
|
|
38
|
+
const shutdown = async (signal) => {
|
|
39
|
+
if (shutdownPromise)
|
|
40
|
+
return shutdownPromise;
|
|
41
|
+
shutdownPromise = (async () => {
|
|
42
|
+
draining = true;
|
|
43
|
+
logger.log(`${signal ?? 'Shutdown'} received; draining ${activeRequests} active request(s)`);
|
|
44
|
+
let closeServer = () => undefined;
|
|
45
|
+
const serverClosed = new Promise((resolve, reject) => {
|
|
46
|
+
closeServer = (error) => {
|
|
47
|
+
if (error)
|
|
48
|
+
reject(error);
|
|
49
|
+
else
|
|
50
|
+
resolve();
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
server.close(closeServer);
|
|
54
|
+
server.closeIdleConnections?.();
|
|
55
|
+
let timeout;
|
|
56
|
+
try {
|
|
57
|
+
await Promise.race([
|
|
58
|
+
serverClosed,
|
|
59
|
+
new Promise((resolve) => {
|
|
60
|
+
timeout = setTimeout(() => {
|
|
61
|
+
logger.warn(`Graceful shutdown timed out with ${activeRequests} active request(s)`);
|
|
62
|
+
server.closeAllConnections?.();
|
|
63
|
+
resolve();
|
|
64
|
+
}, timeoutMs);
|
|
65
|
+
timeout.unref();
|
|
66
|
+
}),
|
|
67
|
+
]);
|
|
68
|
+
await app.close();
|
|
69
|
+
logger.log('Graceful shutdown completed');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
process.exitCode = 1;
|
|
73
|
+
logger.error('Graceful shutdown failed', error instanceof Error ? error.stack : String(error));
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
if (timeout)
|
|
78
|
+
clearTimeout(timeout);
|
|
79
|
+
}
|
|
80
|
+
})();
|
|
81
|
+
return shutdownPromise;
|
|
82
|
+
};
|
|
83
|
+
for (const signal of signals) {
|
|
84
|
+
process.once(signal, () => {
|
|
85
|
+
void shutdown(signal).catch(() => undefined);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
isDraining: () => draining,
|
|
90
|
+
activeRequests: () => activeRequests,
|
|
91
|
+
shutdown,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.GracefulShutdownHelper = GracefulShutdownHelper;
|
|
96
|
+
//# sourceMappingURL=graceful-shutdown.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graceful-shutdown.helper.js","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './cli-command.helper';
|
|
|
3
3
|
export * from './convert-string-case.helper';
|
|
4
4
|
export * from './generate-hash.helper';
|
|
5
5
|
export * from './get-env.helper';
|
|
6
|
+
export * from './graceful-shutdown.helper';
|
|
6
7
|
export * from './hmac.helper';
|
|
7
8
|
export * from './i18n-message.helper';
|
|
8
9
|
export * from './message-formatter.helper';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uCAAuC,CAAC;AACtD,cAAc,uCAAuC,CAAC;AACtD,cAAc,cAAc,CAAC"}
|
package/dist/helpers/index.js
CHANGED
|
@@ -19,6 +19,7 @@ __exportStar(require("./cli-command.helper"), exports);
|
|
|
19
19
|
__exportStar(require("./convert-string-case.helper"), exports);
|
|
20
20
|
__exportStar(require("./generate-hash.helper"), exports);
|
|
21
21
|
__exportStar(require("./get-env.helper"), exports);
|
|
22
|
+
__exportStar(require("./graceful-shutdown.helper"), exports);
|
|
22
23
|
__exportStar(require("./hmac.helper"), exports);
|
|
23
24
|
__exportStar(require("./i18n-message.helper"), exports);
|
|
24
25
|
__exportStar(require("./message-formatter.helper"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,uDAAqC;AACrC,+DAA6C;AAC7C,yDAAuC;AACvC,mDAAiC;AACjC,gDAA8B;AAC9B,wDAAsC;AACtC,6DAA2C;AAC3C,kDAAgC;AAChC,6DAA2C;AAC3C,iDAA+B;AAC/B,qDAAmC;AACnC,4DAA0C;AAC1C,wEAAsD;AACtD,wEAAsD;AACtD,+CAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,uDAAqC;AACrC,+DAA6C;AAC7C,yDAAuC;AACvC,mDAAiC;AACjC,6DAA2C;AAC3C,gDAA8B;AAC9B,wDAAsC;AACtC,6DAA2C;AAC3C,kDAAgC;AAChC,6DAA2C;AAC3C,iDAA+B;AAC/B,qDAAmC;AACnC,4DAA0C;AAC1C,wEAAsD;AACtD,wEAAsD;AACtD,+CAA6B"}
|