@mondart/nestjs-common-module-core 3.2.9 → 3.2.11

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 CHANGED
@@ -220,28 +220,59 @@ for `{0}`-style `SharedMessages` interpolation, `EnvValidator` for validating
220
220
  `RxjsCatchErrorHelper` / `RxjsCustomTimeoutHelper` RxJS operators for mapping
221
221
  errors/timeouts on outbound calls to Nest exceptions.
222
222
 
223
- ### Graceful HTTP shutdown
223
+ ### Graceful shutdown
224
224
 
225
225
  Use `GracefulShutdownHelper.enable()` instead of `app.enableShutdownHooks()`
226
- in an HTTP service bootstrap:
226
+ in a service bootstrap, before connecting microservices:
227
227
 
228
228
  ```ts
229
229
  import { GracefulShutdownHelper } from '@mondart/nestjs-common-module-core';
230
230
 
231
231
  const app = await NestFactory.create(AppModule);
232
232
  GracefulShutdownHelper.enable(app);
233
+ app.connectMicroservice(kafkaOptions, { inheritAppConfig: true });
234
+ await app.startAllMicroservices();
233
235
  await app.listen(appPort);
234
236
  ```
235
237
 
236
- On `SIGTERM` or `SIGINT`, the helper rejects new requests with `503` and a
237
- `Connection: close` header, closes idle keep-alive connections, waits up to
238
- 110 seconds for active responses, and then calls `app.close()` so Nest module,
239
- Kafka, queue, and database shutdown hooks run. Configure the container stop
240
- grace period above that deadline (the Swarm deployment uses two minutes).
241
- Do not register Nest's default shutdown signal handlers alongside this helper.
242
- During `app.close()`, the helper suppresses only ioredis's known
243
- `Connection is closed.` rejection caused by an already-closing Bull connection;
244
- any other unhandled shutdown rejection is logged and produces a failed exit.
238
+ On `SIGTERM` or `SIGINT` the helper stops taking new work, lets everything in
239
+ flight finish, then closes Nest and exits:
240
+
241
+ 1. **Not ready** (immediately): `/health-check` requests return `503` so load
242
+ balancers stop routing to the task, while other HTTP and WebSocket traffic
243
+ is still served. `/health-check/live` is excluded and keeps returning `200`:
244
+ a failing liveness probe during termination makes Kubernetes kill the
245
+ container before the drain finishes. Point liveness at `/health-check/live`
246
+ and readiness at `/health-check/ready`. Background intake stops at once: Kafka server consumers
247
+ (`consumer.stop()` finishes fetched messages and leaves the group), Bull
248
+ queues are paused locally (active jobs finish, Redis stays open so running
249
+ handlers can still add jobs), BullMQ workers close, and cron jobs,
250
+ intervals, and timeouts stop.
251
+ 2. **Draining** (after `drainDelayMs`, or at once when HTTP is not listening):
252
+ new HTTP requests get `503` with `Connection: close`, the HTTP server
253
+ closes, socket.io clients are disconnected so they reconnect elsewhere, and
254
+ the helper waits for active HTTP requests, transport handlers, pending
255
+ Kafka replies, Bull/BullMQ jobs, and running cron callbacks.
256
+ 3. **Closing**: `app.close()` runs so Nest closes Kafka, queues, and database
257
+ connections. If draining exceeded `timeoutMs`, the helper first logs what
258
+ was still busy and closes remaining HTTP connections.
259
+ 4. **Exit**: after a signal, the process exits with `process.exitCode`.
260
+
261
+ | Option | Env | Default |
262
+ |---|---|---|
263
+ | `drainDelayMs` | `GRACEFUL_SHUTDOWN_DRAIN_DELAY_MS` | `10000` |
264
+ | `timeoutMs` (from the signal, includes the delay) | `GRACEFUL_SHUTDOWN_TIMEOUT_MS` | `90000` |
265
+ | `closeTimeoutMs` | `GRACEFUL_SHUTDOWN_CLOSE_TIMEOUT_MS` | `15000` |
266
+
267
+ Options passed in code win over env values; `drainDelayMs` must stay below
268
+ `timeoutMs` or the deadline fires before intake closes and nothing drains (the
269
+ helper warns at startup when it does not). Keep the container stop grace
270
+ period above `timeoutMs + closeTimeoutMs` (Swarm uses two minutes); work still
271
+ running at the deadline is abandoned, so Bull retries stalled jobs and Kafka
272
+ redelivers uncommitted messages. Do not register Nest's default shutdown signal
273
+ handlers alongside this helper. During `app.close()`, the helper suppresses
274
+ only ioredis's known `Connection is closed.` rejection; any other unhandled
275
+ shutdown rejection is logged and produces a failed exit.
245
276
 
246
277
  ## Kafka-related exports
247
278
 
@@ -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;AAmCnC,qBACa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAsB;gBAOhE,YAAY,GAAE,OAAe,EAC7B,2BAA2B,GAAE,SAAS,MAAM,EACX;IAMnC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;IAyIzC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,6BAA6B;IA4BrC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;CAiC3B"}
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;AAmCnC,qBACa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAEpB;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAU;IACvC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAsB;gBAOhE,YAAY,GAAE,OAAe,EAC7B,2BAA2B,GAAE,SAAS,MAAM,EAAoC;IAMlF,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa;IAyIzC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,6BAA6B;IA4BrC,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,8BAA8B;IAatC,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;CAiC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../src/filters/global-exception.filter.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,19 @@
1
1
  import { INestApplication, Logger } from '@nestjs/common';
2
+ interface HttpRequestLike {
3
+ url?: string;
4
+ originalUrl?: string;
5
+ }
6
+ export type GracefulShutdownPhase = 'running' | 'not-ready' | 'draining' | 'closing';
2
7
  export interface GracefulShutdownOptions {
8
+ drainDelayMs?: number;
3
9
  timeoutMs?: number;
10
+ closeTimeoutMs?: number;
4
11
  signals?: NodeJS.Signals[];
5
12
  logger?: Pick<Logger, 'log' | 'warn' | 'error'>;
6
13
  autoDiscoverParticipants?: boolean;
7
14
  participants?: GracefulShutdownParticipant[];
15
+ isHealthCheckRequest?: (request: HttpRequestLike) => boolean;
16
+ exit?: (code: number) => void;
8
17
  }
9
18
  export interface GracefulShutdownParticipant {
10
19
  readonly name: string;
@@ -13,6 +22,7 @@ export interface GracefulShutdownParticipant {
13
22
  }
14
23
  export interface GracefulShutdownController {
15
24
  readonly isDraining: () => boolean;
25
+ readonly phase: () => GracefulShutdownPhase;
16
26
  readonly activeRequests: () => number;
17
27
  readonly activeHandlers: () => number;
18
28
  shutdown(signal?: NodeJS.Signals): Promise<void>;
@@ -21,10 +31,17 @@ export declare class GracefulShutdownHelper {
21
31
  private static isExpectedRedisShutdownError;
22
32
  static enable(app: INestApplication, options?: GracefulShutdownOptions): GracefulShutdownController;
23
33
  private static discoverParticipants;
34
+ private static discoverSocketServers;
24
35
  private static getProviderInstances;
36
+ private static readProperty;
37
+ private static resolveMs;
25
38
  private static isClosable;
39
+ private static isBullQueue;
40
+ private static isBullMqWorker;
26
41
  private static isSchedulerRegistry;
27
42
  private static uniqueParticipants;
28
43
  private static waitUntil;
44
+ private static sleep;
29
45
  }
46
+ export {};
30
47
  //# sourceMappingURL=graceful-shutdown.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAChB,MAAM,EAGP,MAAM,gBAAgB,CAAC;AAYxB,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;IAChD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,2BAA2B,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,aAAa,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAgED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAS3C,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,uBAA4B,GACpC,0BAA0B;IA8J7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkFnC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAenC,OAAO,CAAC,MAAM,CAAC,UAAU;IAQzB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC,OAAO,CAAC,MAAM,CAAC,kBAAkB;mBAWZ,SAAS;CAO/B"}
1
+ {"version":3,"file":"graceful-shutdown.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAChB,MAAM,EAGP,MAAM,gBAAgB,CAAC;AAKxB,UAAU,eAAe;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD,MAAM,MAAM,qBAAqB,GAC/B,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IAOtC,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAChD,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,2BAA2B,EAAE,CAAC;IAE7C,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC;IAE7D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,aAAa,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,WAAW,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAwFD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAS3C,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,uBAA4B,GACpC,0BAA0B;IAwS7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA2HnC,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAiBpC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAgBnC,OAAO,CAAC,MAAM,CAAC,YAAY;IAS3B,OAAO,CAAC,MAAM,CAAC,SAAS;IAgBxB,OAAO,CAAC,MAAM,CAAC,UAAU;IAQzB,OAAO,CAAC,MAAM,CAAC,WAAW;IAS1B,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAclC,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAYjC,OAAO,CAAC,MAAM,CAAC,SAAS;IA2BxB,OAAO,CAAC,MAAM,CAAC,KAAK;CAerB"}
@@ -4,17 +4,21 @@ exports.GracefulShutdownHelper = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const core_1 = require("@nestjs/core");
6
6
  const rxjs_1 = require("rxjs");
7
- const DEFAULT_TIMEOUT_MS = 110_000;
7
+ const DEFAULT_DRAIN_DELAY_MS = 10_000;
8
+ const DEFAULT_TIMEOUT_MS = 90_000;
9
+ const DEFAULT_CLOSE_TIMEOUT_MS = 15_000;
10
+ const EXIT_FALLBACK_MS = 1_000;
8
11
  const PARTICIPANT_POLL_INTERVAL_MS = 50;
12
+ const HEALTH_CHECK_PATH = /\/health-check(?!\/live\b)(\/|\?|$)/;
9
13
  class TransportActivityInterceptor {
10
- constructor(isDraining) {
11
- this.isDraining = isDraining;
14
+ constructor(isRejectingTransport) {
15
+ this.isRejectingTransport = isRejectingTransport;
12
16
  this.active = 0;
13
17
  }
14
18
  intercept(context, next) {
15
19
  if (context.getType() === 'http')
16
20
  return next.handle();
17
- if (this.isDraining()) {
21
+ if (context.getType() !== 'rpc' && this.isRejectingTransport()) {
18
22
  return (0, rxjs_1.throwError)(() => new common_1.ServiceUnavailableException('Service is shutting down'));
19
23
  }
20
24
  this.active += 1;
@@ -35,16 +39,26 @@ class GracefulShutdownHelper {
35
39
  }
36
40
  static enable(app, options = {}) {
37
41
  const server = app.getHttpServer();
38
- const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
42
+ const drainDelayMs = GracefulShutdownHelper.resolveMs(options.drainDelayMs, 'GRACEFUL_SHUTDOWN_DRAIN_DELAY_MS', DEFAULT_DRAIN_DELAY_MS);
43
+ const timeoutMs = GracefulShutdownHelper.resolveMs(options.timeoutMs, 'GRACEFUL_SHUTDOWN_TIMEOUT_MS', DEFAULT_TIMEOUT_MS);
44
+ const closeTimeoutMs = GracefulShutdownHelper.resolveMs(options.closeTimeoutMs, 'GRACEFUL_SHUTDOWN_CLOSE_TIMEOUT_MS', DEFAULT_CLOSE_TIMEOUT_MS);
39
45
  const signals = options.signals ?? ['SIGTERM', 'SIGINT'];
40
46
  const logger = options.logger ?? new common_1.Logger('GracefulShutdown');
41
- let draining = false;
47
+ if (drainDelayMs >= timeoutMs) {
48
+ logger.warn(`drainDelayMs (${drainDelayMs}ms) is not below timeoutMs (${timeoutMs}ms); the deadline fires before HTTP intake closes, so nothing drains`);
49
+ }
50
+ const isHealthCheckRequest = options.isHealthCheckRequest ??
51
+ ((request) => HEALTH_CHECK_PATH.test(request?.originalUrl ?? request?.url ?? ''));
52
+ const exit = options.exit ?? ((code) => process.exit(code));
53
+ let phase = 'running';
42
54
  let activeRequests = 0;
43
55
  let shutdownPromise;
44
- const transportActivity = new TransportActivityInterceptor(() => draining);
56
+ const isIntakeClosed = () => phase === 'draining' || phase === 'closing';
57
+ const transportActivity = new TransportActivityInterceptor(isIntakeClosed);
45
58
  app.useGlobalInterceptors(transportActivity);
46
- app.use((_request, response, next) => {
47
- if (draining) {
59
+ app.use((request, response, next) => {
60
+ if (isIntakeClosed() ||
61
+ (phase === 'not-ready' && isHealthCheckRequest(request))) {
48
62
  response.statusCode = 503;
49
63
  response.setHeader('Connection', 'close');
50
64
  response.setHeader('Content-Type', 'application/json');
@@ -54,6 +68,8 @@ class GracefulShutdownHelper {
54
68
  }));
55
69
  return;
56
70
  }
71
+ if (phase === 'not-ready')
72
+ response.setHeader('Connection', 'close');
57
73
  activeRequests += 1;
58
74
  let completed = false;
59
75
  const complete = () => {
@@ -66,126 +82,226 @@ class GracefulShutdownHelper {
66
82
  response.once('close', complete);
67
83
  next();
68
84
  });
69
- const shutdown = async (signal) => {
70
- if (shutdownPromise)
71
- return shutdownPromise;
72
- shutdownPromise = (async () => {
73
- draining = true;
74
- logger.log(`${signal ?? 'Shutdown'} received; draining ${activeRequests} active request(s)`);
75
- const participants = [
85
+ const closeApp = async () => {
86
+ let unexpectedShutdownRejection = false;
87
+ const handleShutdownRejection = (reason) => {
88
+ if (GracefulShutdownHelper.isExpectedRedisShutdownError(reason)) {
89
+ logger.warn('Ignored an expected ioredis connection-closed rejection during shutdown');
90
+ return;
91
+ }
92
+ unexpectedShutdownRejection = true;
93
+ process.exitCode = 1;
94
+ logger.error('Unhandled rejection occurred during graceful shutdown', reason instanceof Error ? reason.stack : String(reason));
95
+ };
96
+ process.on('unhandledRejection', handleShutdownRejection);
97
+ let closeTimer;
98
+ try {
99
+ const closed = await Promise.race([
100
+ Promise.resolve(app.close()).then(() => true),
101
+ new Promise((resolve) => {
102
+ closeTimer = setTimeout(() => resolve(false), closeTimeoutMs);
103
+ closeTimer.unref?.();
104
+ }),
105
+ ]);
106
+ if (!closed) {
107
+ throw new Error(`app.close() did not finish within ${closeTimeoutMs}ms`);
108
+ }
109
+ }
110
+ finally {
111
+ clearTimeout(closeTimer);
112
+ process.off('unhandledRejection', handleShutdownRejection);
113
+ }
114
+ if (unexpectedShutdownRejection) {
115
+ throw new Error('Graceful shutdown encountered an unexpected asynchronous error');
116
+ }
117
+ };
118
+ const run = async (signal) => {
119
+ const startedAt = Date.now();
120
+ const elapsed = () => `${Date.now() - startedAt}ms`;
121
+ phase = 'not-ready';
122
+ logger.log(`${signal ?? 'Shutdown'} received; not ready, draining ${activeRequests} active request(s)`);
123
+ const abort = new AbortController();
124
+ let deadlineTimer;
125
+ let httpClosed = typeof server?.close !== 'function';
126
+ let socketServers = [];
127
+ const stopHttpIntake = () => {
128
+ if (phase !== 'not-ready')
129
+ return;
130
+ phase = 'draining';
131
+ logger.log(`Closing HTTP/WebSocket intake after ${elapsed()}`);
132
+ if (!httpClosed) {
133
+ try {
134
+ server.close(() => {
135
+ httpClosed = true;
136
+ });
137
+ }
138
+ catch {
139
+ httpClosed = true;
140
+ }
141
+ }
142
+ server?.closeIdleConnections?.();
143
+ };
144
+ let socketsDisconnected = false;
145
+ const disconnectSockets = () => {
146
+ if (socketsDisconnected)
147
+ return;
148
+ socketsDisconnected = true;
149
+ for (const socketServer of socketServers) {
150
+ try {
151
+ socketServer.disconnectSockets(true);
152
+ }
153
+ catch (error) {
154
+ logger.warn(`Failed to disconnect WebSocket clients: ${error instanceof Error ? error.message : String(error)}`);
155
+ }
156
+ }
157
+ };
158
+ try {
159
+ const providers = options.autoDiscoverParticipants === false
160
+ ? []
161
+ : GracefulShutdownHelper.getProviderInstances(app);
162
+ socketServers = GracefulShutdownHelper.discoverSocketServers(providers);
163
+ const participants = GracefulShutdownHelper.uniqueParticipants([
76
164
  ...(options.autoDiscoverParticipants === false
77
165
  ? []
78
- : GracefulShutdownHelper.discoverParticipants(app, logger)),
166
+ : GracefulShutdownHelper.discoverParticipants(app, providers, logger, abort.signal)),
79
167
  ...(options.participants ?? []),
80
- ];
81
- const uniqueParticipants = GracefulShutdownHelper.uniqueParticipants(participants);
82
- let closeServer = () => undefined;
83
- const serverClosed = new Promise((resolve, reject) => {
84
- closeServer = (error) => {
85
- if (error)
86
- reject(error);
87
- else
88
- resolve();
89
- };
90
- });
91
- server.close(closeServer);
92
- server.closeIdleConnections?.();
93
- let timeout;
94
- try {
95
- const participantsDrained = Promise.all(uniqueParticipants.map(async (participant) => {
168
+ ]);
169
+ const busyParticipants = new Set(participants.map((p) => p.name));
170
+ const participantsIdle = Promise.all(participants.map(async (participant) => {
171
+ try {
96
172
  logger.log(`Stopping ${participant.name} intake`);
97
173
  await participant.stopAccepting();
98
174
  await participant.waitForIdle?.();
99
- })).then(() => undefined);
100
- await Promise.race([
101
- Promise.all([
102
- serverClosed,
103
- GracefulShutdownHelper.waitUntil(() => transportActivity.count() === 0),
104
- participantsDrained,
105
- ]).then(() => undefined),
106
- new Promise((resolve) => {
107
- timeout = setTimeout(() => {
108
- logger.warn(`Graceful shutdown timed out with ${activeRequests} active HTTP request(s) and ${transportActivity.count()} active transport handler(s)`);
109
- server.closeAllConnections?.();
110
- resolve();
111
- }, timeoutMs);
112
- timeout.unref();
113
- }),
114
- ]);
115
- let unexpectedShutdownRejection = false;
116
- const handleShutdownRejection = (reason) => {
117
- if (GracefulShutdownHelper.isExpectedRedisShutdownError(reason)) {
118
- logger.warn('Ignored an expected ioredis connection-closed rejection during shutdown');
119
- return;
120
- }
121
- unexpectedShutdownRejection = true;
122
- process.exitCode = 1;
123
- logger.error('Unhandled rejection occurred during graceful shutdown', reason instanceof Error ? reason.stack : String(reason));
124
- };
125
- process.on('unhandledRejection', handleShutdownRejection);
126
- try {
127
- await app.close();
128
175
  }
129
- finally {
130
- process.off('unhandledRejection', handleShutdownRejection);
176
+ catch (error) {
177
+ logger.error(`Failed to drain ${participant.name}`, error instanceof Error ? error.stack : String(error));
131
178
  }
132
- if (unexpectedShutdownRejection) {
133
- throw new Error('Graceful shutdown encountered an unexpected asynchronous error');
179
+ finally {
180
+ busyParticipants.delete(participant.name);
134
181
  }
135
- logger.log('Graceful shutdown completed');
136
- }
137
- catch (error) {
138
- process.exitCode = 1;
139
- logger.error('Graceful shutdown failed', error instanceof Error ? error.stack : String(error));
140
- throw error;
182
+ }));
183
+ const drained = await Promise.race([
184
+ (async () => {
185
+ if (server?.listening) {
186
+ await GracefulShutdownHelper.sleep(drainDelayMs, abort.signal);
187
+ }
188
+ stopHttpIntake();
189
+ await Promise.all([
190
+ participantsIdle,
191
+ GracefulShutdownHelper.waitUntil(() => activeRequests === 0 && transportActivity.count() === 0, abort.signal, () => server?.closeIdleConnections?.()),
192
+ ]);
193
+ disconnectSockets();
194
+ await GracefulShutdownHelper.waitUntil(() => httpClosed, abort.signal, () => server?.closeIdleConnections?.());
195
+ return true;
196
+ })(),
197
+ new Promise((resolve) => {
198
+ deadlineTimer = setTimeout(() => resolve(false), timeoutMs);
199
+ deadlineTimer.unref?.();
200
+ }),
201
+ ]);
202
+ if (drained) {
203
+ logger.log(`All in-flight work finished after ${elapsed()}`);
141
204
  }
142
- finally {
143
- if (timeout)
144
- clearTimeout(timeout);
205
+ else {
206
+ stopHttpIntake();
207
+ disconnectSockets();
208
+ logger.warn(`Graceful shutdown timed out after ${elapsed()} with ${activeRequests} active HTTP request(s), ${transportActivity.count()} active transport handler(s), busy participants: [${[...busyParticipants].join(', ')}]`);
209
+ server?.closeAllConnections?.();
145
210
  }
146
- })();
211
+ }
212
+ catch (error) {
213
+ process.exitCode = 1;
214
+ logger.error('Graceful shutdown drain failed', error instanceof Error ? error.stack : String(error));
215
+ }
216
+ finally {
217
+ clearTimeout(deadlineTimer);
218
+ abort.abort();
219
+ }
220
+ phase = 'closing';
221
+ try {
222
+ await closeApp();
223
+ logger.log(`Graceful shutdown completed in ${elapsed()}`);
224
+ }
225
+ catch (error) {
226
+ process.exitCode = 1;
227
+ logger.error('Graceful shutdown failed', error instanceof Error ? error.stack : String(error));
228
+ throw error;
229
+ }
230
+ };
231
+ const shutdown = (signal) => {
232
+ shutdownPromise ??= run(signal);
147
233
  return shutdownPromise;
148
234
  };
149
235
  for (const signal of signals) {
150
236
  process.once(signal, () => {
151
- void shutdown(signal).catch(() => undefined);
237
+ void shutdown(signal)
238
+ .catch(() => undefined)
239
+ .finally(() => {
240
+ setTimeout(() => exit(Number(process.exitCode ?? 0)), EXIT_FALLBACK_MS).unref();
241
+ });
152
242
  });
153
243
  }
154
244
  return {
155
- isDraining: () => draining,
245
+ isDraining: () => phase !== 'running',
246
+ phase: () => phase,
156
247
  activeRequests: () => activeRequests,
157
248
  activeHandlers: () => transportActivity.count(),
158
249
  shutdown,
159
250
  };
160
251
  }
161
- static discoverParticipants(app, logger) {
162
- const providers = GracefulShutdownHelper.getProviderInstances(app);
252
+ static discoverParticipants(app, providers, logger, signal) {
163
253
  const participants = [];
164
254
  const microserviceServers = app
165
255
  .getMicroservices()
166
256
  .map((microservice) => microservice.serverInstance)
167
257
  .filter((server) => GracefulShutdownHelper.isClosable(server));
168
258
  if (microserviceServers.length > 0) {
259
+ let pendingReplies = 0;
260
+ for (const server of microserviceServers) {
261
+ if (typeof server.sendMessage !== 'function')
262
+ continue;
263
+ const sendMessage = server.sendMessage.bind(server);
264
+ server.sendMessage = async (...args) => {
265
+ pendingReplies += 1;
266
+ try {
267
+ return await sendMessage(...args);
268
+ }
269
+ finally {
270
+ pendingReplies -= 1;
271
+ }
272
+ };
273
+ }
169
274
  participants.push({
170
275
  name: 'Kafka/microservice',
171
- stopAccepting: () => Promise.all(microserviceServers.map((server) => server.close())).then(() => undefined),
276
+ stopAccepting: () => Promise.all(microserviceServers.map((server) => {
277
+ if (server.consumer &&
278
+ typeof server.consumer.stop === 'function') {
279
+ return server.consumer.stop();
280
+ }
281
+ return server.close();
282
+ })).then(() => undefined),
283
+ waitForIdle: () => GracefulShutdownHelper.waitUntil(() => pendingReplies === 0, signal),
172
284
  });
173
285
  }
174
- const queueResources = new Set();
286
+ const localQueues = new Set();
287
+ const workers = new Set();
175
288
  for (const [token, instance] of providers) {
176
289
  if (typeof token === 'string' &&
177
290
  token.startsWith('BullQueue_') &&
178
- GracefulShutdownHelper.isClosable(instance)) {
179
- queueResources.add(instance);
291
+ GracefulShutdownHelper.isBullQueue(instance)) {
292
+ localQueues.add(instance);
180
293
  }
181
- const worker = instance?.worker;
182
- if (GracefulShutdownHelper.isClosable(worker))
183
- queueResources.add(worker);
294
+ const worker = GracefulShutdownHelper.readProperty(instance, 'worker');
295
+ if (GracefulShutdownHelper.isBullMqWorker(worker))
296
+ workers.add(worker);
184
297
  }
185
- if (queueResources.size > 0) {
298
+ if (localQueues.size > 0 || workers.size > 0) {
186
299
  participants.push({
187
300
  name: 'Bull/BullMQ',
188
- stopAccepting: () => Promise.all([...queueResources].map((resource) => resource.close(false))).then(() => undefined),
301
+ stopAccepting: () => Promise.all([
302
+ ...[...localQueues].map((queue) => queue.pause(true, false)),
303
+ ...[...workers].map((worker) => worker.close()),
304
+ ]).then(() => undefined),
189
305
  });
190
306
  }
191
307
  const scheduler = providers
@@ -205,7 +321,7 @@ class GracefulShutdownHelper {
205
321
  scheduler.deleteTimeout(timeoutName);
206
322
  }
207
323
  },
208
- waitForIdle: () => GracefulShutdownHelper.waitUntil(() => cronJobs.every((cronJob) => !cronJob.isCallbackRunning)),
324
+ waitForIdle: () => GracefulShutdownHelper.waitUntil(() => cronJobs.every((cronJob) => !cronJob.isCallbackRunning), signal),
209
325
  });
210
326
  }
211
327
  logger.log(participants.length === 0
@@ -215,6 +331,18 @@ class GracefulShutdownHelper {
215
331
  .join(', ')}`);
216
332
  return participants;
217
333
  }
334
+ static discoverSocketServers(providers) {
335
+ const servers = new Set();
336
+ for (const [, instance] of providers) {
337
+ const server = GracefulShutdownHelper.readProperty(instance, 'server');
338
+ if (typeof server === 'object' &&
339
+ server !== null &&
340
+ typeof server.disconnectSockets === 'function') {
341
+ servers.add(server);
342
+ }
343
+ }
344
+ return [...servers];
345
+ }
218
346
  static getProviderInstances(app) {
219
347
  try {
220
348
  const modules = app.get(core_1.ModulesContainer, { strict: false });
@@ -224,11 +352,47 @@ class GracefulShutdownHelper {
224
352
  return [];
225
353
  }
226
354
  }
355
+ static readProperty(value, key) {
356
+ if (typeof value !== 'object' || value === null)
357
+ return undefined;
358
+ try {
359
+ return value[key];
360
+ }
361
+ catch {
362
+ return undefined;
363
+ }
364
+ }
365
+ static resolveMs(value, envName, fallback) {
366
+ if (value !== undefined)
367
+ return value;
368
+ const raw = process.env[envName];
369
+ const parsed = Number(raw);
370
+ return raw !== undefined &&
371
+ raw !== '' &&
372
+ Number.isFinite(parsed) &&
373
+ parsed >= 0
374
+ ? parsed
375
+ : fallback;
376
+ }
227
377
  static isClosable(value) {
228
378
  return (typeof value === 'object' &&
229
379
  value !== null &&
230
380
  typeof value.close === 'function');
231
381
  }
382
+ static isBullQueue(value) {
383
+ return (typeof value === 'object' &&
384
+ value !== null &&
385
+ typeof value.pause === 'function' &&
386
+ typeof value.whenCurrentJobsFinished === 'function');
387
+ }
388
+ static isBullMqWorker(value) {
389
+ if (typeof value !== 'object' || value === null)
390
+ return false;
391
+ const worker = value;
392
+ return (typeof worker.close === 'function' &&
393
+ typeof worker.run === 'function' &&
394
+ typeof worker.isRunning === 'function');
395
+ }
232
396
  static isSchedulerRegistry(value) {
233
397
  if (typeof value !== 'object' || value === null)
234
398
  return false;
@@ -248,10 +412,42 @@ class GracefulShutdownHelper {
248
412
  return true;
249
413
  });
250
414
  }
251
- static async waitUntil(predicate) {
252
- while (!predicate()) {
253
- await new Promise((resolve) => setTimeout(resolve, PARTICIPANT_POLL_INTERVAL_MS));
254
- }
415
+ static waitUntil(predicate, signal, onPoll) {
416
+ return new Promise((resolve) => {
417
+ let timer;
418
+ const done = () => {
419
+ clearTimeout(timer);
420
+ signal?.removeEventListener('abort', done);
421
+ resolve();
422
+ };
423
+ const check = () => {
424
+ if (signal?.aborted || predicate()) {
425
+ done();
426
+ return;
427
+ }
428
+ timer = setTimeout(() => {
429
+ onPoll?.();
430
+ check();
431
+ }, PARTICIPANT_POLL_INTERVAL_MS);
432
+ };
433
+ signal?.addEventListener('abort', done, { once: true });
434
+ check();
435
+ });
436
+ }
437
+ static sleep(ms, signal) {
438
+ return new Promise((resolve) => {
439
+ if (signal?.aborted) {
440
+ resolve();
441
+ return;
442
+ }
443
+ const done = () => {
444
+ clearTimeout(timer);
445
+ signal?.removeEventListener('abort', done);
446
+ resolve();
447
+ };
448
+ const timer = setTimeout(done, ms);
449
+ signal?.addEventListener('abort', done, { once: true });
450
+ });
255
451
  }
256
452
  }
257
453
  exports.GracefulShutdownHelper = GracefulShutdownHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.helper.js","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graceful-shutdown.helper.js","sourceRoot":"","sources":["../../src/helpers/graceful-shutdown.helper.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from './global-logger.interceptor';
2
+ export * from './kafka-trace-context.interceptor';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./global-logger.interceptor"), exports);
18
+ __exportStar(require("./kafka-trace-context.interceptor"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,oEAAkD"}
@@ -0,0 +1,8 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ export declare class KafkaTraceContextInterceptor implements NestInterceptor {
4
+ private readonly serviceName;
5
+ constructor(serviceName: string);
6
+ intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
7
+ }
8
+ //# sourceMappingURL=kafka-trace-context.interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka-trace-context.interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptors/kafka-trace-context.interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAEhB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAS,MAAM,MAAM,CAAC;AAGzC,qBACa,4BAA6B,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEhD,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;CA0B7E"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.KafkaTraceContextInterceptor = void 0;
46
+ const common_1 = require("@nestjs/common");
47
+ const microservices_1 = require("@nestjs/microservices");
48
+ const Sentry = __importStar(require("@sentry/nestjs"));
49
+ const rxjs_1 = require("rxjs");
50
+ let KafkaTraceContextInterceptor = class KafkaTraceContextInterceptor {
51
+ constructor(serviceName) {
52
+ this.serviceName = serviceName;
53
+ }
54
+ intercept(context, next) {
55
+ return (0, rxjs_1.defer)(() => {
56
+ if (context.getType() === 'rpc') {
57
+ const kafka = context.switchToRpc().getContext();
58
+ if (kafka instanceof microservices_1.KafkaContext) {
59
+ const span = Sentry.getActiveSpan();
60
+ if (span) {
61
+ const attributes = {
62
+ 'service.name': this.serviceName,
63
+ 'service.instance.id': process.env.SWARM_TASK_ID || process.env.HOSTNAME || 'unknown',
64
+ 'messaging.system': 'kafka',
65
+ 'messaging.destination.name': kafka.getTopic(),
66
+ 'messaging.destination.partition.id': String(kafka.getPartition()),
67
+ 'messaging.kafka.offset': kafka.getMessage().offset,
68
+ };
69
+ span.setAttributes(attributes);
70
+ Sentry.getRootSpan(span).setAttributes(attributes);
71
+ }
72
+ }
73
+ }
74
+ return next.handle();
75
+ });
76
+ }
77
+ };
78
+ exports.KafkaTraceContextInterceptor = KafkaTraceContextInterceptor;
79
+ exports.KafkaTraceContextInterceptor = KafkaTraceContextInterceptor = __decorate([
80
+ (0, common_1.Injectable)(),
81
+ __metadata("design:paramtypes", [String])
82
+ ], KafkaTraceContextInterceptor);
83
+ //# sourceMappingURL=kafka-trace-context.interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kafka-trace-context.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/kafka-trace-context.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAKwB;AACxB,yDAAqD;AACrD,uDAAyC;AACzC,+BAAyC;AAIlC,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IACvC,YAA6B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAEpD,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,OAAO,IAAA,YAAK,EAAC,GAAG,EAAE;YAChB,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;gBACjD,IAAI,KAAK,YAAY,4BAAY,EAAE,CAAC;oBAClC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;oBACpC,IAAI,IAAI,EAAE,CAAC;wBACT,MAAM,UAAU,GAAG;4BACjB,cAAc,EAAE,IAAI,CAAC,WAAW;4BAChC,qBAAqB,EACnB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS;4BAChE,kBAAkB,EAAE,OAAO;4BAC3B,4BAA4B,EAAE,KAAK,CAAC,QAAQ,EAAE;4BAC9C,oCAAoC,EAAE,MAAM,CAC1C,KAAK,CAAC,YAAY,EAAE,CACrB;4BACD,wBAAwB,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM;yBACpD,CAAC;wBACF,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;wBAC/B,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AA7BY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;;GACA,4BAA4B,CA6BxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"custom-validation-arguments.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/custom-validation-arguments.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,+DAA+D,CAAC;AAE7G,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,WAAW,EAAE,0BAA0B,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AACD,MAAM,WAAW,kCACf,SAAQ,4BAA4B;IACpC,QAAQ,CACN,KAAK,EAAE,GAAG,EACV,mBAAmB,CAAC,EAAE,yBAAyB,GAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC/B"}
1
+ {"version":3,"file":"custom-validation-arguments.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/custom-validation-arguments.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sDAAsD,CAAC;AAC3F,OAAO,EAAE,4BAA4B,EAAE,MAAM,+DAA+D,CAAC;AAE7G,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;IACpE,WAAW,EAAE,0BAA0B,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AACD,MAAM,WAAW,kCAAmC,SAAQ,4BAA4B;IACtF,QAAQ,CACN,KAAK,EAAE,GAAG,EACV,mBAAmB,CAAC,EAAE,yBAAyB,GAC9C,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mondart/nestjs-common-module-core",
3
- "version": "3.2.9",
3
+ "version": "3.2.11",
4
4
  "description": "Core utilities, DTOs, decorators, entities, filters, validators and helpers for NestJS.",
5
5
  "author": {
6
6
  "name": "Mondart"