@bgord/bun 1.4.12 → 1.4.14

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.
Files changed (37) hide show
  1. package/dist/basic-auth.service.d.ts +7 -2
  2. package/dist/basic-auth.service.d.ts.map +1 -1
  3. package/dist/basic-auth.service.js +4 -4
  4. package/dist/basic-auth.service.js.map +1 -1
  5. package/dist/{env-validator.service.d.ts → environment-validator.service.d.ts} +5 -4
  6. package/dist/environment-validator.service.d.ts.map +1 -0
  7. package/dist/{env-validator.service.js → environment-validator.service.js} +1 -1
  8. package/dist/environment-validator.service.js.map +1 -0
  9. package/dist/index.d.ts +3 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/logger-winston-local.adapter.d.ts.map +1 -1
  14. package/dist/logger-winston-local.adapter.js +1 -8
  15. package/dist/logger-winston-local.adapter.js.map +1 -1
  16. package/dist/logger-winston.adapter.js +2 -2
  17. package/dist/logger-winston.adapter.js.map +1 -1
  18. package/dist/shield-basic-auth.adapter.d.ts +14 -0
  19. package/dist/shield-basic-auth.adapter.d.ts.map +1 -0
  20. package/dist/shield-basic-auth.adapter.js +10 -0
  21. package/dist/shield-basic-auth.adapter.js.map +1 -0
  22. package/dist/shield-timeout.adapter.d.ts +14 -0
  23. package/dist/shield-timeout.adapter.d.ts.map +1 -0
  24. package/dist/shield-timeout.adapter.js +12 -0
  25. package/dist/shield-timeout.adapter.js.map +1 -0
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +3 -3
  28. package/readme.md +3 -1
  29. package/src/basic-auth.service.ts +6 -7
  30. package/src/{env-validator.service.ts → environment-validator.service.ts} +3 -1
  31. package/src/index.ts +3 -1
  32. package/src/logger-winston-local.adapter.ts +1 -20
  33. package/src/logger-winston.adapter.ts +2 -2
  34. package/src/shield-basic-auth.adapter.ts +17 -0
  35. package/src/shield-timeout.adapter.ts +19 -0
  36. package/dist/env-validator.service.d.ts.map +0 -1
  37. package/dist/env-validator.service.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgord/bun",
3
- "version": "1.4.12",
3
+ "version": "1.4.14",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "author": "Bartosz Gordon",
@@ -28,8 +28,8 @@
28
28
  "@types/nodemailer": "7.0.4",
29
29
  "@types/yazl": "3.3.0",
30
30
  "cspell": "9.4.0",
31
- "knip": "5.73.3",
32
- "lefthook": "2.0.9",
31
+ "knip": "5.73.4",
32
+ "lefthook": "2.0.11",
33
33
  "only-allow": "1.2.2",
34
34
  "sharp": "0.34.5",
35
35
  "shellcheck": "4.1.0",
package/readme.md CHANGED
@@ -71,7 +71,7 @@ src/
71
71
  ├── encryption-key.vo.ts
72
72
  ├── encryption-noop.adapter.ts
73
73
  ├── encryption.port.ts
74
- ├── env-validator.service.ts
74
+ ├── environment-validator.service.ts
75
75
  ├── etag-extractor.middleware.ts
76
76
  ├── event-bus-like.types.ts
77
77
  ├── event-envelope.ts
@@ -239,11 +239,13 @@ src/
239
239
  ├── setup.service.ts
240
240
  ├── shield-api-key.adapter.ts
241
241
  ├── shield-auth.middleware.ts
242
+ ├── shield-basic-auth.adapter.ts
242
243
  ├── shield-captcha-hcaptcha-local.adapter.ts
243
244
  ├── shield-captcha-hcaptcha.adapter.ts
244
245
  ├── shield-captcha-recaptcha.adapter.ts
245
246
  ├── shield-noop.adapter.ts
246
247
  ├── shield-rate-limit.adapter.ts
248
+ ├── shield-timeout.adapter.ts
247
249
  ├── shield.port.ts
248
250
  ├── simulated-error.middleware.ts
249
251
  ├── slower.middleware.ts
@@ -1,15 +1,14 @@
1
1
  import type { BasicAuthPasswordType } from "./basic-auth-password.vo";
2
2
  import type { BasicAuthUsernameType } from "./basic-auth-username.vo";
3
3
 
4
+ type BasicAuthConfigType = { username: BasicAuthUsernameType; password: BasicAuthPasswordType };
5
+
4
6
  export class BasicAuth {
5
- static toHeaderValue(
6
- username: BasicAuthUsernameType,
7
- password: BasicAuthPasswordType,
8
- ): { authorization: string } {
9
- return { authorization: `Basic ${btoa(`${username}:${password}`)}` };
7
+ static toHeaderValue(config: BasicAuthConfigType): { authorization: string } {
8
+ return { authorization: `Basic ${btoa(`${config.username}:${config.password}`)}` };
10
9
  }
11
10
 
12
- static toHeader(username: BasicAuthUsernameType, password: BasicAuthPasswordType): Headers {
13
- return new Headers(BasicAuth.toHeaderValue(username, password));
11
+ static toHeader(config: BasicAuthConfigType): Headers {
12
+ return new Headers(BasicAuth.toHeaderValue(config));
14
13
  }
15
14
  }
@@ -5,6 +5,8 @@ type NodeEnvironmentEnumType = z.infer<typeof NodeEnvironment>;
5
5
  type AnyZodSchema = z.ZodSchema<any, any>;
6
6
  type EnvironmentValidatorConfig = { type: unknown; schema: AnyZodSchema };
7
7
 
8
+ export type EnvironmentResultType<SchemaType> = SchemaType & { type: NodeEnvironmentEnumType };
9
+
8
10
  export const EnvironmentValidatorError = { Invalid: "environment.validator.invalid" } as const;
9
11
 
10
12
  export class EnvironmentValidator<SchemaType> {
@@ -24,7 +26,7 @@ export class EnvironmentValidator<SchemaType> {
24
26
  throw new Error(EnvironmentValidatorError.Invalid);
25
27
  }
26
28
 
27
- load(): SchemaType & { type: NodeEnvironmentEnumType } {
29
+ load(): EnvironmentResultType<SchemaType> {
28
30
  return { ...this.schema.parse(process.env), type: this.type };
29
31
  }
30
32
  }
package/src/index.ts CHANGED
@@ -43,7 +43,7 @@ export * from "./encryption.port";
43
43
  export * from "./encryption-bun.adapter";
44
44
  export * from "./encryption-key.vo";
45
45
  export * from "./encryption-noop.adapter";
46
- export * from "./env-validator.service";
46
+ export * from "./environment-validator.service";
47
47
  export * from "./etag-extractor.middleware";
48
48
  export * from "./event.types";
49
49
  export * from "./event-bus-like.types";
@@ -161,11 +161,13 @@ export * from "./setup.service";
161
161
  export * from "./shield.port";
162
162
  export * from "./shield-api-key.adapter";
163
163
  export * from "./shield-auth.middleware";
164
+ export * from "./shield-basic-auth.adapter";
164
165
  export * from "./shield-captcha-hcaptcha.adapter";
165
166
  export * from "./shield-captcha-hcaptcha-local.adapter";
166
167
  export * from "./shield-captcha-recaptcha.adapter";
167
168
  export * from "./shield-noop.adapter";
168
169
  export * from "./shield-rate-limit.adapter";
170
+ export * from "./shield-timeout.adapter";
169
171
  export * from "./simulated-error.middleware";
170
172
  export * from "./slower.middleware";
171
173
  export * from "./static-files.service";
@@ -10,31 +10,12 @@ export class LoggerWinstonLocalAdapter {
10
10
  constructor(private readonly config: LoggerWinstonLocalAdapterConfigType) {}
11
11
 
12
12
  create(level: LogLevelEnum): LoggerPort {
13
- const coloredConsoleTransport = new winston.transports.Console({
14
- format: winston.format.combine(
15
- winston.format.colorize({ all: true }),
16
- winston.format.printf((info) => {
17
- const {
18
- level,
19
- message,
20
- timestamp,
21
- [Symbol.for("level")]: _level,
22
- [Symbol.for("message")]: _message,
23
- ...rest
24
- } = info;
25
-
26
- return JSON.stringify({ level, message, ...rest, timestamp }, null, 2);
27
- }),
28
- ),
29
- });
30
-
31
13
  return new LoggerWinstonAdapter({
32
14
  app: this.config.app,
33
15
  environment: NodeEnvironmentEnum.local,
34
16
  level,
35
17
  redactor: this.config.redactor,
36
- transports: [coloredConsoleTransport],
37
- formats: [],
18
+ formats: [winston.format.prettyPrint()],
38
19
  filePath: null,
39
20
  });
40
21
  }
@@ -21,7 +21,7 @@ export class LoggerWinstonAdapter implements LoggerPort {
21
21
 
22
22
  constructor(options: WinstonLoggerOptions) {
23
23
  const format = winston.format.combine(
24
- winston.format((log) => options.redactor.redact(log))(),
24
+ winston.format((info) => options.redactor.redact(info))(),
25
25
  winston.format.errors({ stack: true }),
26
26
  winston.format.timestamp(),
27
27
  winston.format.json(),
@@ -35,7 +35,7 @@ export class LoggerWinstonAdapter implements LoggerPort {
35
35
  handleExceptions: true,
36
36
  handleRejections: true,
37
37
  format,
38
- transports: options.transports ?? [],
38
+ transports: [new winston.transports.Console(), ...(options.transports ?? [])],
39
39
  });
40
40
 
41
41
  this.filePath = options.filePath;
@@ -0,0 +1,17 @@
1
+ import { basicAuth } from "hono/basic-auth";
2
+ import { createMiddleware } from "hono/factory";
3
+ import type { BasicAuthPasswordType } from "./basic-auth-password.vo";
4
+ import type { BasicAuthUsernameType } from "./basic-auth-username.vo";
5
+ import type { ShieldPort } from "./shield.port";
6
+
7
+ type ShieldBasicAuthConfigType = { username: BasicAuthUsernameType; password: BasicAuthPasswordType };
8
+
9
+ export class ShieldBasicAuthAdapter implements ShieldPort {
10
+ private readonly basicAuth;
11
+
12
+ constructor(config: ShieldBasicAuthConfigType) {
13
+ this.basicAuth = basicAuth(config);
14
+ }
15
+
16
+ verify = createMiddleware(async (c, next) => this.basicAuth(c, next));
17
+ }
@@ -0,0 +1,19 @@
1
+ import type * as tools from "@bgord/tools";
2
+ import { createMiddleware } from "hono/factory";
3
+ import { HTTPException } from "hono/http-exception";
4
+ import { timeout } from "hono/timeout";
5
+ import type { ShieldPort } from "./shield.port";
6
+
7
+ export const RequestTimeoutError = new HTTPException(408, { message: "request_timeout_error" });
8
+
9
+ type ShieldTimeoutConfigType = { duration: tools.Duration };
10
+
11
+ export class ShieldTimeoutAdapter implements ShieldPort {
12
+ private readonly timeout;
13
+
14
+ constructor(config: ShieldTimeoutConfigType) {
15
+ this.timeout = timeout(config.duration.ms, RequestTimeoutError);
16
+ }
17
+
18
+ verify = createMiddleware(async (c, next) => this.timeout(c, next));
19
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-validator.service.d.ts","sourceRoot":"","sources":["../src/env-validator.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,KAAK,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC/D,KAAK,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,KAAK,0BAA0B,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAAC;AAE1E,eAAO,MAAM,yBAAyB;;CAAwD,CAAC;AAE/F,qBAAa,oBAAoB,CAAC,UAAU;IAC1C,IAAI,EAAE,uBAAuB,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEjB,MAAM,EAAE,0BAA0B;IAa9C,IAAI,IAAI,UAAU,GAAG;QAAE,IAAI,EAAE,uBAAuB,CAAA;KAAE;CAGvD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"env-validator.service.js","sourceRoot":"","sources":["../src/env-validator.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,OAAO,EAAE,+BAA+B,EAAW,CAAC;AAE/F,MAAM,OAAO,oBAAoB;IAC/B,IAAI,CAA0B;IAC9B,MAAM,CAAuB;IAE7B,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,IAAI;QACF,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAChE,CAAC;CACF"}