@bgord/bun 0.29.3 → 0.29.5

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.
@@ -2,8 +2,10 @@ import type { LoggerPort } from "./logger.port";
2
2
  type ServerType = ReturnType<typeof Bun.serve>;
3
3
  export declare class GracefulShutdown {
4
4
  private readonly logger;
5
- constructor(logger: LoggerPort);
5
+ private readonly exitFn;
6
6
  private readonly base;
7
+ private isShuttingDown;
8
+ constructor(logger: LoggerPort, exitFn?: (code: number) => never);
7
9
  private shutdown;
8
10
  applyTo(server: ServerType, cleanup?: () => any): void;
9
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.service.d.ts","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AAE/C,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAE/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;YAEjE,QAAQ;IAYtB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,MAAM,GAAgB;CAyB5D"}
1
+ {"version":3,"file":"graceful-shutdown.service.d.ts","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,KAAK,UAAU,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;AAE/C,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;IAC/E,OAAO,CAAC,cAAc,CAAS;gBAGZ,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAuD;IAGpG,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,MAAM,GAAgB;CAqB5D"}
@@ -2,40 +2,47 @@ import * as tools from "@bgord/tools";
2
2
  import { formatError } from "./logger-format-error.service";
3
3
  export class GracefulShutdown {
4
4
  logger;
5
- constructor(logger) {
5
+ exitFn;
6
+ base = { operation: "shutdown", component: "infra" };
7
+ isShuttingDown = false;
8
+ constructor(logger, exitFn = ((code) => process.exit(code))) {
6
9
  this.logger = logger;
10
+ this.exitFn = exitFn;
7
11
  }
8
- base = { operation: "shutdown", component: "infra" };
9
- async shutdown(server, cleanup = tools.noop) {
10
- server.stop();
12
+ shutdown(server, cleanup, exitCode) {
13
+ if (this.isShuttingDown)
14
+ return;
15
+ this.isShuttingDown = true;
11
16
  try {
12
- await cleanup();
13
- this.logger.info({ message: "HTTP server closed", ...this.base });
17
+ server.stop();
14
18
  }
15
19
  catch (error) {
16
- this.logger.error({ message: "Cleanup hook failed", error: formatError(error), ...this.base });
20
+ this.logger.error({ message: "Server stop failed", error: formatError(error), ...this.base });
17
21
  }
22
+ Promise.resolve()
23
+ .then(() => cleanup())
24
+ .then(() => this.logger.info({ message: "HTTP server closed", ...this.base }))
25
+ .catch((error) => this.logger.error({ message: "Cleanup hook failed", error: formatError(error), ...this.base }))
26
+ .finally(() => {
27
+ this.exitFn(exitCode);
28
+ });
18
29
  }
19
30
  applyTo(server, cleanup = tools.noop) {
20
- process.once("SIGTERM", async () => {
31
+ process.once("SIGTERM", () => {
21
32
  this.logger.info({ message: "SIGTERM received", ...this.base });
22
- await this.shutdown(server, cleanup);
23
- process.exitCode = 0;
33
+ this.shutdown(server, cleanup, 0);
24
34
  });
25
- process.once("SIGINT", async () => {
35
+ process.once("SIGINT", () => {
26
36
  this.logger.info({ message: "SIGINT received", ...this.base });
27
- await this.shutdown(server, cleanup);
28
- process.exitCode = 0;
37
+ this.shutdown(server, cleanup, 0);
29
38
  });
30
- process.once("unhandledRejection", async (event) => {
31
- this.logger.error({ message: "UnhandledRejection received", error: formatError(event), ...this.base });
32
- await this.shutdown(server, cleanup);
33
- process.exitCode = 1;
39
+ process.once("unhandledRejection", (reason) => {
40
+ this.logger.error({ message: "UnhandledRejection received", error: formatError(reason), ...this.base });
41
+ this.shutdown(server, cleanup, 1);
34
42
  });
35
- process.once("uncaughtException", async (error) => {
43
+ process.once("uncaughtException", (error) => {
36
44
  this.logger.error({ message: "UncaughtException received", error: formatError(error), ...this.base });
37
- await this.shutdown(server, cleanup);
38
- process.exitCode = 1;
45
+ this.shutdown(server, cleanup, 1);
39
46
  });
40
47
  }
41
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.service.js","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAI5D,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAElC,IAAI,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAW,CAAC;IAEvE,KAAK,CAAC,QAAQ,CAAC,MAAkB,EAAE,UAAqB,KAAK,CAAC,IAAI;QACxE,MAAM,CAAC,IAAI,EAAE,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAkB,EAAE,UAAqB,KAAK,CAAC,IAAI;QACzD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACtG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"graceful-shutdown.service.js","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"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"}