@bgord/bun 0.29.4 → 0.29.6

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.
@@ -1,14 +1,11 @@
1
1
  import type { LoggerPort } from "./logger.port";
2
2
  type ServerType = ReturnType<typeof Bun.serve>;
3
- type GracefulShutdownOptions = {
4
- exitFn?: (code: number) => never;
5
- };
6
3
  export declare class GracefulShutdown {
7
4
  private readonly logger;
8
- private readonly base;
9
5
  private readonly exitFn;
6
+ private readonly base;
10
7
  private isShuttingDown;
11
- constructor(logger: LoggerPort, options?: GracefulShutdownOptions);
8
+ constructor(logger: LoggerPort, exitFn?: (code: number) => never);
12
9
  private shutdown;
13
10
  applyTo(server: ServerType, cleanup?: () => any): void;
14
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,KAAK,uBAAuB,GAAG;IAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAA;CAAE,CAAC;AAEpE,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0D;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,cAAc,CAAS;gBAGZ,MAAM,EAAE,UAAU,EACnC,OAAO,GAAE,uBAA4B;YAKzB,QAAQ;IAoBtB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,MAAM,GAAgB;CAqB5D"}
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,14 +2,14 @@ import * as tools from "@bgord/tools";
2
2
  import { formatError } from "./logger-format-error.service";
3
3
  export class GracefulShutdown {
4
4
  logger;
5
- base = { operation: "shutdown", component: "infra" };
6
5
  exitFn;
6
+ base = { operation: "shutdown", component: "infra" };
7
7
  isShuttingDown = false;
8
- constructor(logger, options = {}) {
8
+ constructor(logger, exitFn = ((code) => process.exit(code))) {
9
9
  this.logger = logger;
10
- this.exitFn = options.exitFn ?? ((code) => process.exit(code));
10
+ this.exitFn = exitFn;
11
11
  }
12
- async shutdown(server, cleanup, exitCode) {
12
+ shutdown(server, cleanup, exitCode) {
13
13
  if (this.isShuttingDown)
14
14
  return;
15
15
  this.isShuttingDown = true;
@@ -19,33 +19,30 @@ export class GracefulShutdown {
19
19
  catch (error) {
20
20
  this.logger.error({ message: "Server stop failed", error: formatError(error), ...this.base });
21
21
  }
22
- try {
23
- await cleanup();
24
- this.logger.info({ message: "HTTP server closed", ...this.base });
25
- }
26
- catch (error) {
27
- this.logger.error({ message: "Cleanup hook failed", error: formatError(error), ...this.base });
28
- }
29
- finally {
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(() => {
30
27
  this.exitFn(exitCode);
31
- }
28
+ });
32
29
  }
33
30
  applyTo(server, cleanup = tools.noop) {
34
- process.once("SIGTERM", async () => {
31
+ process.once("SIGTERM", () => {
35
32
  this.logger.info({ message: "SIGTERM received", ...this.base });
36
- await this.shutdown(server, cleanup, 0);
33
+ this.shutdown(server, cleanup, 0);
37
34
  });
38
- process.once("SIGINT", async () => {
35
+ process.once("SIGINT", () => {
39
36
  this.logger.info({ message: "SIGINT received", ...this.base });
40
- await this.shutdown(server, cleanup, 0);
37
+ this.shutdown(server, cleanup, 0);
41
38
  });
42
- process.once("unhandledRejection", async (reason /*, promise*/) => {
39
+ process.once("unhandledRejection", (reason) => {
43
40
  this.logger.error({ message: "UnhandledRejection received", error: formatError(reason), ...this.base });
44
- await this.shutdown(server, cleanup, 1);
41
+ this.shutdown(server, cleanup, 1);
45
42
  });
46
- process.once("uncaughtException", async (error) => {
43
+ process.once("uncaughtException", (error) => {
47
44
  this.logger.error({ message: "UncaughtException received", error: formatError(error), ...this.base });
48
- await this.shutdown(server, cleanup, 1);
45
+ this.shutdown(server, cleanup, 1);
49
46
  });
50
47
  }
51
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graceful-shutdown.service.js","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graceful-shutdown.service.js","sourceRoot":"","sources":["../src/graceful-shutdown.service.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@ export declare class ImageInfoNoopAdapter implements ImageInfoPort {
4
4
  private readonly mime;
5
5
  constructor(mime: tools.Mime);
6
6
  inspect(_filePath: tools.FilePathRelative | tools.FilePathAbsolute): Promise<{
7
- width: number & import("zod").$brand<"Width">;
8
- height: number & import("zod").$brand<"Height">;
7
+ width: number & import("zod").$brand<"image-width">;
8
+ height: number & import("zod").$brand<"image-height">;
9
9
  mime: tools.Mime;
10
10
  size: tools.Size;
11
11
  }>;
@@ -6,8 +6,8 @@ export class ImageInfoNoopAdapter {
6
6
  }
7
7
  async inspect(_filePath) {
8
8
  return {
9
- width: tools.Width.parse(400),
10
- height: tools.Height.parse(400),
9
+ width: tools.ImageWidth.parse(400),
10
+ height: tools.ImageHeight.parse(400),
11
11
  mime: this.mime,
12
12
  size: tools.Size.fromBytes(0),
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"image-info-noop.adapter.js","sourceRoot":"","sources":["../src/image-info-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,MAAM,OAAO,oBAAoB;IACF;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,OAAO,CAAC,SAA0D;QACtE,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"image-info-noop.adapter.js","sourceRoot":"","sources":["../src/image-info-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,MAAM,OAAO,oBAAoB;IACF;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,OAAO,CAAC,SAA0D;QACtE,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;YAClC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF"}
@@ -2,8 +2,8 @@ import * as tools from "@bgord/tools";
2
2
  import type { ImageInfoPort } from "./image-info.port";
3
3
  export declare class ImageInfoSharpAdapter implements ImageInfoPort {
4
4
  inspect(filePath: tools.FilePathRelative | tools.FilePathAbsolute): Promise<{
5
- width: number & import("zod").$brand<"Width">;
6
- height: number & import("zod").$brand<"Height">;
5
+ width: number & import("zod").$brand<"image-width">;
6
+ height: number & import("zod").$brand<"image-height">;
7
7
  mime: tools.Mime;
8
8
  size: tools.Size;
9
9
  }>;
@@ -65,8 +65,8 @@ export class ImageInfoSharpAdapter {
65
65
  const extension = tools.ExtensionSchema.parse(metadata.format);
66
66
  const sizeBytes = Bun.file(path).size;
67
67
  return {
68
- width: tools.Width.parse(metadata.width),
69
- height: tools.Height.parse(metadata.height),
68
+ width: tools.ImageWidth.parse(metadata.width),
69
+ height: tools.ImageHeight.parse(metadata.height),
70
70
  mime: tools.Mime.fromExtension(extension),
71
71
  size: tools.Size.fromBytes(sizeBytes),
72
72
  };
@@ -1 +1 @@
1
- {"version":3,"file":"image-info-sharp.adapter.js","sourceRoot":"","sources":["../src/image-info-sharp.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,OAAO,qBAAqB;IAChC,KAAK,CAAC,OAAO,CAAC,QAAyD;;;YACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1B,MAAM,OAAO,kCAAG;gBACd,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;aACxC,QAAA,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE/D,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAEtC,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBACxC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC3C,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;gBACzC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aACtC,CAAC;;;;;;;;;KACH;CACF"}
1
+ {"version":3,"file":"image-info-sharp.adapter.js","sourceRoot":"","sources":["../src/image-info-sharp.adapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,OAAO,qBAAqB;IAChC,KAAK,CAAC,OAAO,CAAC,QAAyD;;;YACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAE5B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAE1B,MAAM,OAAO,kCAAG;gBACd,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE;aACxC,QAAA,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE/D,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAEtC,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC7C,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAChD,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;gBACzC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;aACtC,CAAC;;;;;;;;;KACH;CACF"}