@bgord/bun 1.21.8 → 1.21.10
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/dist/alert-channel-composite.adapter.js +1 -1
- package/dist/alert-channel-composite.adapter.js.map +1 -1
- package/dist/cache-repository-redis.adapter.js.map +1 -1
- package/dist/crypto-aes-gcm.service.d.ts +2 -2
- package/dist/crypto-aes-gcm.service.d.ts.map +1 -1
- package/dist/crypto-aes-gcm.service.js +2 -2
- package/dist/crypto-aes-gcm.service.js.map +1 -1
- package/dist/crypto-key-provider-file.adapter.d.ts.map +1 -1
- package/dist/crypto-key-provider-file.adapter.js +4 -1
- package/dist/crypto-key-provider-file.adapter.js.map +1 -1
- package/dist/crypto-key-provider-memory.adapter.js.map +1 -1
- package/dist/encryption-iv.vo.d.ts +1 -1
- package/dist/encryption-iv.vo.d.ts.map +1 -1
- package/dist/encryption-key.vo.d.ts +1 -1
- package/dist/encryption-key.vo.d.ts.map +1 -1
- package/dist/endpoint-hono.adapter.d.ts +6 -0
- package/dist/endpoint-hono.adapter.d.ts.map +1 -0
- package/dist/endpoint-hono.adapter.js +7 -0
- package/dist/endpoint-hono.adapter.js.map +1 -0
- package/dist/endpoint.port.d.ts +3 -0
- package/dist/endpoint.port.d.ts.map +1 -0
- package/dist/endpoint.port.js +2 -0
- package/dist/endpoint.port.js.map +1 -0
- package/dist/healthcheck-hono.handler.d.ts +1 -67
- package/dist/healthcheck-hono.handler.d.ts.map +1 -1
- package/dist/healthcheck-hono.handler.js +2 -2
- package/dist/healthcheck-hono.handler.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/job-registry.adapter.js.map +1 -1
- package/dist/languages.vo.js +1 -1
- package/dist/languages.vo.js.map +1 -1
- package/dist/liveness-hono.handler.d.ts +1 -3
- package/dist/liveness-hono.handler.d.ts.map +1 -1
- package/dist/liveness-hono.handler.js +2 -2
- package/dist/liveness-hono.handler.js.map +1 -1
- package/dist/message-bus-with-logger.adapter.d.ts.map +1 -1
- package/dist/message-bus-with-logger.adapter.js.map +1 -1
- package/dist/modules/preferences/commands/SET_USER_LANGUAGE_COMMAND.d.ts +1 -1
- package/dist/modules/preferences/events/USER_LANGUAGE_SET_EVENT.d.ts +1 -1
- package/dist/modules/preferences/ports/user-language-resolver.d.ts +2 -2
- package/dist/modules/preferences/ports/user-language-resolver.d.ts.map +1 -1
- package/dist/readiness-hono.handler.d.ts +1 -4
- package/dist/readiness-hono.handler.d.ts.map +1 -1
- package/dist/readiness-hono.handler.js +2 -2
- package/dist/readiness-hono.handler.js.map +1 -1
- package/dist/request-context-hono.adapter.d.ts.map +1 -1
- package/dist/request-context-hono.adapter.js +10 -0
- package/dist/request-context-hono.adapter.js.map +1 -1
- package/dist/request-context.port.d.ts +6 -0
- package/dist/request-context.port.d.ts.map +1 -1
- package/dist/shield-maintenance-hono.strategy.js +1 -1
- package/dist/shield-maintenance-hono.strategy.js.map +1 -1
- package/dist/shield-security-hono.strategy.d.ts.map +1 -1
- package/dist/shield-security-hono.strategy.js +4 -4
- package/dist/shield-security-hono.strategy.js.map +1 -1
- package/dist/translations-hono.handler.js +1 -1
- package/dist/translations-hono.handler.js.map +1 -1
- package/package.json +8 -8
- package/readme.md +2 -0
- package/src/alert-channel-composite.adapter.ts +1 -1
- package/src/cache-repository-redis.adapter.ts +1 -1
- package/src/crypto-aes-gcm.service.ts +8 -12
- package/src/crypto-key-provider-file.adapter.ts +4 -7
- package/src/crypto-key-provider-memory.adapter.ts +1 -1
- package/src/encryption-iv.vo.ts +1 -1
- package/src/encryption-key.vo.ts +1 -1
- package/src/endpoint-hono.adapter.ts +9 -0
- package/src/endpoint.port.ts +3 -0
- package/src/healthcheck-hono.handler.ts +2 -2
- package/src/index.ts +2 -0
- package/src/job-registry.adapter.ts +1 -1
- package/src/languages.vo.ts +1 -1
- package/src/liveness-hono.handler.ts +2 -2
- package/src/message-bus-with-logger.adapter.ts +2 -2
- package/src/readiness-hono.handler.ts +2 -2
- package/src/request-context-hono.adapter.ts +9 -0
- package/src/request-context.port.ts +5 -0
- package/src/shield-maintenance-hono.strategy.ts +1 -1
- package/src/shield-security-hono.strategy.ts +4 -5
- package/src/translations-hono.handler.ts +1 -1
|
@@ -7,9 +7,9 @@ export class ReadinessHonoHandler {
|
|
|
7
7
|
this.handler = new ReadinessHandler(config);
|
|
8
8
|
}
|
|
9
9
|
handle() {
|
|
10
|
-
return factory.createHandlers(async (
|
|
10
|
+
return factory.createHandlers(async () => {
|
|
11
11
|
const result = await this.handler.check();
|
|
12
|
-
return
|
|
12
|
+
return Response.json(result.details, { status: result.code, headers: result.headers });
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readiness-hono.handler.js","sourceRoot":"","sources":["../src/readiness-hono.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAwB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,MAAM,OAAO,oBAAoB;IACd,OAAO,CAAmB;IAE3C,YAAY,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM;QACJ,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"readiness-hono.handler.js","sourceRoot":"","sources":["../src/readiness-hono.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAwB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,MAAM,OAAO,oBAAoB;IACd,OAAO,CAAmB;IAE3C,YAAY,MAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM;QACJ,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAE1C,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context-hono.adapter.d.ts","sourceRoot":"","sources":["../src/request-context-hono.adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context-hono.adapter.d.ts","sourceRoot":"","sources":["../src/request-context-hono.adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,qBAAa,yBAA0B,YAAW,cAAc;IAC9D,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IAElD,YAAY,OAAO,EAAE,OAAO,EA8D3B;CACF"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
import * as tools from "@bgord/tools";
|
|
3
3
|
import { getConnInfo } from "hono/bun";
|
|
4
4
|
import { getCookie } from "hono/cookie";
|
|
5
|
+
import { HTTPException } from "hono/http-exception";
|
|
6
|
+
import { ShieldAuthStrategyError } from "./shield-auth.strategy";
|
|
5
7
|
export class RequestContextHonoAdapter {
|
|
6
8
|
request;
|
|
7
9
|
identity;
|
|
@@ -47,6 +49,14 @@ export class RequestContextHonoAdapter {
|
|
|
47
49
|
};
|
|
48
50
|
this.identity = {
|
|
49
51
|
userId: () => context.get("user")?.id,
|
|
52
|
+
authenticatedUserId: () => {
|
|
53
|
+
const user = context.get("user");
|
|
54
|
+
if (user === undefined)
|
|
55
|
+
throw new Error(ShieldAuthStrategyError.NotAttached);
|
|
56
|
+
if (user === null)
|
|
57
|
+
throw new HTTPException(401, { message: ShieldAuthStrategyError.Rejected });
|
|
58
|
+
return user.id;
|
|
59
|
+
},
|
|
50
60
|
ip: () => context.req.header("x-real-ip") ||
|
|
51
61
|
context.req.header("x-forwarded-for")?.split(",")[0]?.trim() ||
|
|
52
62
|
getConnInfo(context).remote.address,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context-hono.adapter.js","sourceRoot":"","sources":["../src/request-context-hono.adapter.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context-hono.adapter.js","sourceRoot":"","sources":["../src/request-context-hono.adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export interface RequestContext {
|
|
|
19
19
|
};
|
|
20
20
|
readonly identity: {
|
|
21
21
|
userId(): UUIDType | undefined;
|
|
22
|
+
authenticatedUserId(): UUIDType;
|
|
22
23
|
ip(): string | undefined;
|
|
23
24
|
remoteIp(): string | undefined;
|
|
24
25
|
ua(): string | undefined;
|
|
@@ -107,6 +108,11 @@ export interface HasIdentityUserId {
|
|
|
107
108
|
userId(): UUIDType | undefined;
|
|
108
109
|
};
|
|
109
110
|
}
|
|
111
|
+
export interface HasIdentityAuthenticatedUserId {
|
|
112
|
+
readonly identity: {
|
|
113
|
+
authenticatedUserId(): UUIDType;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
110
116
|
export interface HasIdentityIp {
|
|
111
117
|
readonly identity: {
|
|
112
118
|
ip(): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.port.d.ts","sourceRoot":"","sources":["../src/request-context.port.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-context.port.d.ts","sourceRoot":"","sources":["../src/request-context.port.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export class ShieldMaintenanceHonoStrategy {
|
|
|
13
13
|
const maintenance = await this.strategy.evaluate();
|
|
14
14
|
if (!maintenance.enabled)
|
|
15
15
|
return next();
|
|
16
|
-
return
|
|
16
|
+
return Response.json(maintenance.body, { status: maintenance.code, headers: maintenance.headers });
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield-maintenance-hono.strategy.js","sourceRoot":"","sources":["../src/shield-maintenance-hono.strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAgC,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAExG,MAAM,OAAO,6BAA6B;IACvB,QAAQ,CAA4B;IAErD,YAAY,MAAgC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAC;YAErD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAEnD,IAAI,CAAC,WAAW,CAAC,OAAO;gBAAE,OAAO,IAAI,EAAE,CAAC;YAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"shield-maintenance-hono.strategy.js","sourceRoot":"","sources":["../src/shield-maintenance-hono.strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAgC,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAExG,MAAM,OAAO,6BAA6B;IACvB,QAAQ,CAA4B;IAErD,YAAY,MAAgC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,CAAC,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAC;YAErD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAEnD,IAAI,CAAC,WAAW,CAAC,OAAO;gBAAE,OAAO,IAAI,EAAE,CAAC;YAExC,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrG,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield-security-hono.strategy.d.ts","sourceRoot":"","sources":["../src/shield-security-hono.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"shield-security-hono.strategy.d.ts","sourceRoot":"","sources":["../src/shield-security-hono.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAE7C,eAAO,MAAM,+BAA+B;IAC1C,SAAS;CACV,CAAC;AAEF,qBAAa,0BAA2B,YAAW,kBAAkB;IAKjE,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAElD,YACE,QAAQ,EAAE,aAAa,CAAC,cAAc,CAAC,EACtB,IAAI,EAAE,YAAY,EAGpC;IAED,MAAM,IAAI,iBAAiB,CAoC1B;CACF"}
|
|
@@ -20,18 +20,18 @@ export class ShieldSecurityHonoStrategy {
|
|
|
20
20
|
case "allow":
|
|
21
21
|
return next();
|
|
22
22
|
case "deny":
|
|
23
|
-
return
|
|
23
|
+
return new Response(action.reason, { status: action.response.status });
|
|
24
24
|
case "mirage":
|
|
25
|
-
return
|
|
25
|
+
return Response.json({}, { status: action.response.status });
|
|
26
26
|
case "delay": {
|
|
27
27
|
await this.deps.Sleeper.wait(action.duration);
|
|
28
28
|
switch (action.after.kind) {
|
|
29
29
|
case "allow":
|
|
30
30
|
return next();
|
|
31
31
|
case "deny":
|
|
32
|
-
return
|
|
32
|
+
return new Response(action.after.reason, { status: action.after.response.status });
|
|
33
33
|
case "mirage":
|
|
34
|
-
return
|
|
34
|
+
return Response.json({}, { status: action.after.response.status });
|
|
35
35
|
default:
|
|
36
36
|
throw new Error(ShieldSecurityHonoStrategyError.Unhandled);
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield-security-hono.strategy.js","sourceRoot":"","sources":["../src/shield-security-hono.strategy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shield-security-hono.strategy.js","sourceRoot":"","sources":["../src/shield-security-hono.strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAKpE,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,SAAS,EAAE,+CAA+C;CAC3D,CAAC;AAEF,MAAM,OAAO,0BAA0B;IAKlB,IAAI;IAJN,QAAQ,CAAyB;IAElD,YACE,QAAuC,EACtB,IAAkB;oBAAlB,IAAI;QAErB,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YACvB,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAErD,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,EAAE,CAAC;YAE3B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,OAAO;oBACV,OAAO,IAAI,EAAE,CAAC;gBAEhB,KAAK,MAAM;oBACT,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAEzE,KAAK,QAAQ;oBACX,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAE/D,KAAK,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAE9C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBAC1B,KAAK,OAAO;4BACV,OAAO,IAAI,EAAE,CAAC;wBAEhB,KAAK,MAAM;4BACT,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;wBAErF,KAAK,QAAQ;4BACX,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;wBAErE;4BACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations-hono.handler.js","sourceRoot":"","sources":["../src/translations-hono.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,MAAM,OAAO,uBAAuB;IACjB,OAAO,CAAyB;IAEjD,YAAY,MAAoB,EAAE,IAAkB;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO,OAAO,CAAC,cAAc,CAAqD,KAAK,EAAE,CAAC,EAAE,EAAE;YAC5F,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,
|
|
1
|
+
{"version":3,"file":"translations-hono.handler.js","sourceRoot":"","sources":["../src/translations-hono.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,MAAM,OAAO,uBAAuB;IACjB,OAAO,CAAyB;IAEjD,YAAY,MAAoB,EAAE,IAAkB;QAClD,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM;QACJ,OAAO,OAAO,CAAC,cAAc,CAAqD,KAAK,EAAE,CAAC,EAAE,EAAE;YAC5F,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEpD,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bgord/bun",
|
|
3
|
-
"version": "1.21.
|
|
3
|
+
"version": "1.21.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Bartosz Gordon",
|
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@biomejs/biome": "2.5.8",
|
|
24
24
|
"@standard-schema/spec": "1.1.0",
|
|
25
|
-
"@stryker-mutator/core": "
|
|
26
|
-
"@stryker-mutator/typescript-checker": "
|
|
25
|
+
"@stryker-mutator/core": "10.0.0",
|
|
26
|
+
"@stryker-mutator/typescript-checker": "10.0.0",
|
|
27
27
|
"@types/bun": "1.3.14",
|
|
28
28
|
"@types/nodemailer": "8.0.1",
|
|
29
29
|
"@types/yazl": "3.3.1",
|
|
30
|
-
"better-auth": "1.6.
|
|
30
|
+
"better-auth": "1.6.28",
|
|
31
31
|
"cspell": "10.0.1",
|
|
32
32
|
"csv": "6.6.3",
|
|
33
|
-
"fallow": "3.
|
|
33
|
+
"fallow": "3.16.0",
|
|
34
34
|
"lefthook": "2.1.10",
|
|
35
|
-
"lockfile-lint": "5.0.
|
|
35
|
+
"lockfile-lint": "5.0.1",
|
|
36
36
|
"nodemailer": "9.0.5",
|
|
37
37
|
"publint": "0.3.23",
|
|
38
38
|
"shellcheck": "4.1.0",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"yazl": "3.3.1"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bgord/tools": "1.6.
|
|
43
|
+
"@bgord/tools": "1.6.7",
|
|
44
44
|
"emittery": "2.0.0",
|
|
45
45
|
"hono": "4.13.2",
|
|
46
46
|
"node-cache": "5.1.2"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"better-auth": "1.6.
|
|
49
|
+
"better-auth": "1.6.28",
|
|
50
50
|
"csv": "6.6.3",
|
|
51
51
|
"nodemailer": "9.0.5",
|
|
52
52
|
"yazl": "3.3.1"
|
package/readme.md
CHANGED
|
@@ -128,6 +128,8 @@ src/
|
|
|
128
128
|
├── encryption-key.vo.ts
|
|
129
129
|
├── encryption-noop.adapter.ts
|
|
130
130
|
├── encryption.port.ts
|
|
131
|
+
├── endpoint-hono.adapter.ts
|
|
132
|
+
├── endpoint.port.ts
|
|
131
133
|
├── environment-loader-encrypted.adapter.ts
|
|
132
134
|
├── environment-loader-noop.adapter.ts
|
|
133
135
|
├── environment-loader-process-safe.adapter.ts
|
|
@@ -18,7 +18,7 @@ export class AlertChannelCompositeAdapter implements AlertChannelPort {
|
|
|
18
18
|
|
|
19
19
|
if (results.some((result) => result.status === "fulfilled")) return;
|
|
20
20
|
|
|
21
|
-
const reasons = results.
|
|
21
|
+
const reasons = results.flatMap((result) => (result.status === "rejected" ? [result.reason] : []));
|
|
22
22
|
|
|
23
23
|
throw new AggregateError(reasons, AlertChannelCompositeError.AllFailed);
|
|
24
24
|
}
|
|
@@ -12,7 +12,7 @@ export class CacheRepositoryRedisAdapter implements CacheRepositoryPort {
|
|
|
12
12
|
async get<T>(subject: Hash): Promise<T | null> {
|
|
13
13
|
const value = await this.client.get(subject.get());
|
|
14
14
|
if (value === null) return null;
|
|
15
|
-
return JSON.parse(value)
|
|
15
|
+
return JSON.parse(value);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
async set<T>(subject: Hash, value: T): Promise<void> {
|
|
@@ -6,12 +6,12 @@ export const CryptoAesGcmError = { InvalidPayload: "aes.gcm.crypto.invalid.paylo
|
|
|
6
6
|
export class CryptoAesGcm {
|
|
7
7
|
static readonly ALGORITHM = "AES-GCM";
|
|
8
8
|
|
|
9
|
-
static async encrypt(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
);
|
|
9
|
+
static async encrypt(
|
|
10
|
+
key: CryptoKey,
|
|
11
|
+
plaintext: ArrayBuffer,
|
|
12
|
+
iv: Uint8Array<ArrayBuffer>,
|
|
13
|
+
): Promise<Uint8Array> {
|
|
14
|
+
const encrypted = await crypto.subtle.encrypt({ name: CryptoAesGcm.ALGORITHM, iv }, key, plaintext);
|
|
15
15
|
|
|
16
16
|
const ciphertext = new Uint8Array(encrypted);
|
|
17
17
|
const output = new Uint8Array(iv.length + ciphertext.length);
|
|
@@ -22,16 +22,12 @@ export class CryptoAesGcm {
|
|
|
22
22
|
return output;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
static async decrypt(key: CryptoKey, payload: Uint8Array): Promise<ArrayBuffer> {
|
|
25
|
+
static async decrypt(key: CryptoKey, payload: Uint8Array<ArrayBuffer>): Promise<ArrayBuffer> {
|
|
26
26
|
if (payload.length < EncryptionIV.LENGTH + 1) throw new Error(CryptoAesGcmError.InvalidPayload);
|
|
27
27
|
|
|
28
28
|
const iv = payload.subarray(0, EncryptionIV.LENGTH);
|
|
29
29
|
const ciphertext = payload.subarray(EncryptionIV.LENGTH);
|
|
30
30
|
|
|
31
|
-
return crypto.subtle.decrypt(
|
|
32
|
-
{ name: CryptoAesGcm.ALGORITHM, iv: iv as BufferSource },
|
|
33
|
-
key,
|
|
34
|
-
ciphertext as BufferSource,
|
|
35
|
-
);
|
|
31
|
+
return crypto.subtle.decrypt({ name: CryptoAesGcm.ALGORITHM, iv }, key, ciphertext);
|
|
36
32
|
}
|
|
37
33
|
}
|
|
@@ -25,12 +25,9 @@ export class CryptoKeyProviderFileAdapter implements CryptoKeyProviderPort {
|
|
|
25
25
|
|
|
26
26
|
const encryptionKey = EncryptionKey.fromString(content.trim());
|
|
27
27
|
|
|
28
|
-
return crypto.subtle.importKey(
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
false,
|
|
33
|
-
["encrypt", "decrypt"],
|
|
34
|
-
);
|
|
28
|
+
return crypto.subtle.importKey("raw", encryptionKey.toBytes(), { name: "AES-GCM" }, false, [
|
|
29
|
+
"encrypt",
|
|
30
|
+
"decrypt",
|
|
31
|
+
]);
|
|
35
32
|
}
|
|
36
33
|
}
|
|
@@ -8,7 +8,7 @@ export class CryptoKeyProviderMemoryAdapter implements CryptoKeyProviderPort {
|
|
|
8
8
|
async get(): Promise<CryptoKey> {
|
|
9
9
|
return crypto.subtle.importKey(
|
|
10
10
|
"raw",
|
|
11
|
-
EncryptionKey.fromString(this.ENCRYPTION_KEY_VALUE).toBytes()
|
|
11
|
+
EncryptionKey.fromString(this.ENCRYPTION_KEY_VALUE).toBytes(),
|
|
12
12
|
{ name: "AES-GCM" },
|
|
13
13
|
false,
|
|
14
14
|
["encrypt", "decrypt"],
|
package/src/encryption-iv.vo.ts
CHANGED
package/src/encryption-key.vo.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Handler } from "hono";
|
|
2
|
+
import type { EndpointPort } from "./endpoint.port";
|
|
3
|
+
import { RequestContextHonoAdapter } from "./request-context-hono.adapter";
|
|
4
|
+
|
|
5
|
+
export class EndpointHonoAdapter {
|
|
6
|
+
static adapt(endpoint: EndpointPort): Handler {
|
|
7
|
+
return (c) => endpoint(new RequestContextHonoAdapter(c));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -16,10 +16,10 @@ export class HealthcheckHonoHandler implements HandlerHonoPort {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
handle() {
|
|
19
|
-
return factory.createHandlers(async (
|
|
19
|
+
return factory.createHandlers(async () => {
|
|
20
20
|
const healthcheck = await this.handler.check();
|
|
21
21
|
|
|
22
|
-
return
|
|
22
|
+
return Response.json(healthcheck, { status: healthcheck.code });
|
|
23
23
|
});
|
|
24
24
|
}
|
|
25
25
|
}
|
package/src/index.ts
CHANGED
|
@@ -101,6 +101,8 @@ export * from "./encryption-aes-gcm.adapter";
|
|
|
101
101
|
export * from "./encryption-key.vo";
|
|
102
102
|
export * from "./encryption-key-value.vo";
|
|
103
103
|
export * from "./encryption-noop.adapter";
|
|
104
|
+
export * from "./endpoint.port";
|
|
105
|
+
export * from "./endpoint-hono.adapter";
|
|
104
106
|
export * from "./environment-loader.port";
|
|
105
107
|
export * from "./environment-loader-encrypted.adapter";
|
|
106
108
|
export * from "./environment-loader-noop.adapter";
|
|
@@ -53,6 +53,6 @@ export class JobRegistryAdapter<Job extends GenericJob> implements JobRegistryPo
|
|
|
53
53
|
const entry = this.map.get(name);
|
|
54
54
|
if (!entry) throw new Error(JobRegistryAdapterError.UnknownJob);
|
|
55
55
|
|
|
56
|
-
return entry.handler
|
|
56
|
+
return entry.handler;
|
|
57
57
|
}
|
|
58
58
|
}
|
package/src/languages.vo.ts
CHANGED
|
@@ -8,10 +8,10 @@ export class LivenessHonoHandler implements HandlerHonoPort {
|
|
|
8
8
|
private readonly handler = new LivenessHandler();
|
|
9
9
|
|
|
10
10
|
handle() {
|
|
11
|
-
return factory.createHandlers(async (
|
|
11
|
+
return factory.createHandlers(async () => {
|
|
12
12
|
const { headers, ...body } = this.handler.execute();
|
|
13
13
|
|
|
14
|
-
return
|
|
14
|
+
return Response.json(body, { status: 200, headers });
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CorrelationStorage } from "./correlation-storage.service";
|
|
2
|
-
import type {
|
|
2
|
+
import type { LoggerPort } from "./logger.port";
|
|
3
3
|
import type { Message, ToMessageMap } from "./message.types";
|
|
4
4
|
import type { MessageBusPort } from "./message-bus.port";
|
|
5
5
|
|
|
@@ -13,7 +13,7 @@ export class MessageBusWithLoggerAdapter<Messages extends Message> implements Me
|
|
|
13
13
|
async emit<M extends Messages>(message: M): Promise<void> {
|
|
14
14
|
this.deps.Logger.info({
|
|
15
15
|
message: `${message.name} emitted`,
|
|
16
|
-
metadata: message
|
|
16
|
+
metadata: message,
|
|
17
17
|
correlationId: CorrelationStorage.get(),
|
|
18
18
|
...this.base,
|
|
19
19
|
});
|
|
@@ -12,10 +12,10 @@ export class ReadinessHonoHandler implements HandlerHonoPort {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
handle() {
|
|
15
|
-
return factory.createHandlers(async (
|
|
15
|
+
return factory.createHandlers(async () => {
|
|
16
16
|
const result = await this.handler.check();
|
|
17
17
|
|
|
18
|
-
return
|
|
18
|
+
return Response.json(result.details, { status: result.code, headers: result.headers });
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
21
|
}
|
|
@@ -3,7 +3,9 @@ import * as tools from "@bgord/tools";
|
|
|
3
3
|
import type { Context } from "hono";
|
|
4
4
|
import { getConnInfo } from "hono/bun";
|
|
5
5
|
import { getCookie } from "hono/cookie";
|
|
6
|
+
import { HTTPException } from "hono/http-exception";
|
|
6
7
|
import type { RequestContext } from "./request-context.port";
|
|
8
|
+
import { ShieldAuthStrategyError } from "./shield-auth.strategy";
|
|
7
9
|
|
|
8
10
|
export class RequestContextHonoAdapter implements RequestContext {
|
|
9
11
|
readonly request: RequestContext["request"];
|
|
@@ -49,6 +51,13 @@ export class RequestContextHonoAdapter implements RequestContext {
|
|
|
49
51
|
|
|
50
52
|
this.identity = {
|
|
51
53
|
userId: () => context.get("user")?.id,
|
|
54
|
+
authenticatedUserId: () => {
|
|
55
|
+
const user = context.get("user");
|
|
56
|
+
|
|
57
|
+
if (user === undefined) throw new Error(ShieldAuthStrategyError.NotAttached);
|
|
58
|
+
if (user === null) throw new HTTPException(401, { message: ShieldAuthStrategyError.Rejected });
|
|
59
|
+
return user.id;
|
|
60
|
+
},
|
|
52
61
|
ip: () =>
|
|
53
62
|
context.req.header("x-real-ip") ||
|
|
54
63
|
context.req.header("x-forwarded-for")?.split(",")[0]?.trim() ||
|
|
@@ -21,6 +21,7 @@ export interface RequestContext {
|
|
|
21
21
|
|
|
22
22
|
readonly identity: {
|
|
23
23
|
userId(): UUIDType | undefined;
|
|
24
|
+
authenticatedUserId(): UUIDType;
|
|
24
25
|
ip(): string | undefined;
|
|
25
26
|
remoteIp(): string | undefined;
|
|
26
27
|
ua(): string | undefined;
|
|
@@ -93,6 +94,10 @@ export interface HasIdentityUserId {
|
|
|
93
94
|
readonly identity: { userId(): UUIDType | undefined };
|
|
94
95
|
}
|
|
95
96
|
|
|
97
|
+
export interface HasIdentityAuthenticatedUserId {
|
|
98
|
+
readonly identity: { authenticatedUserId(): UUIDType };
|
|
99
|
+
}
|
|
100
|
+
|
|
96
101
|
export interface HasIdentityIp {
|
|
97
102
|
readonly identity: { ip(): string | undefined };
|
|
98
103
|
}
|
|
@@ -20,7 +20,7 @@ export class ShieldMaintenanceHonoStrategy implements MiddlewareHonoPort {
|
|
|
20
20
|
|
|
21
21
|
if (!maintenance.enabled) return next();
|
|
22
22
|
|
|
23
|
-
return
|
|
23
|
+
return Response.json(maintenance.body, { status: maintenance.code, headers: maintenance.headers });
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { MiddlewareHandler } from "hono";
|
|
2
|
-
import type { ContentfulStatusCode } from "hono/utils/http-status";
|
|
3
2
|
import type { MiddlewareHonoPort } from "./middleware-hono.port";
|
|
4
3
|
import { RequestContextHonoAdapter } from "./request-context-hono.adapter";
|
|
5
4
|
import type { SecurityPolicy } from "./security-policy.vo";
|
|
@@ -34,10 +33,10 @@ export class ShieldSecurityHonoStrategy implements MiddlewareHonoPort {
|
|
|
34
33
|
return next();
|
|
35
34
|
|
|
36
35
|
case "deny":
|
|
37
|
-
return
|
|
36
|
+
return new Response(action.reason, { status: action.response.status });
|
|
38
37
|
|
|
39
38
|
case "mirage":
|
|
40
|
-
return
|
|
39
|
+
return Response.json({}, { status: action.response.status });
|
|
41
40
|
|
|
42
41
|
case "delay": {
|
|
43
42
|
await this.deps.Sleeper.wait(action.duration);
|
|
@@ -47,10 +46,10 @@ export class ShieldSecurityHonoStrategy implements MiddlewareHonoPort {
|
|
|
47
46
|
return next();
|
|
48
47
|
|
|
49
48
|
case "deny":
|
|
50
|
-
return
|
|
49
|
+
return new Response(action.after.reason, { status: action.after.response.status });
|
|
51
50
|
|
|
52
51
|
case "mirage":
|
|
53
|
-
return
|
|
52
|
+
return Response.json({}, { status: action.after.response.status });
|
|
54
53
|
|
|
55
54
|
default:
|
|
56
55
|
throw new Error(ShieldSecurityHonoStrategyError.Unhandled);
|