@bgord/bun 1.15.3 → 1.15.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.
- package/dist/alert-channel-collecting.adapter.d.ts +8 -0
- package/dist/alert-channel-collecting.adapter.d.ts.map +1 -0
- package/dist/alert-channel-collecting.adapter.js +10 -0
- package/dist/alert-channel-collecting.adapter.js.map +1 -0
- package/dist/alert-channel-composite.adapter.d.ts +13 -0
- package/dist/alert-channel-composite.adapter.d.ts.map +1 -0
- package/dist/alert-channel-composite.adapter.js +22 -0
- package/dist/alert-channel-composite.adapter.js.map +1 -0
- package/dist/alert-channel-mailer.adapter.d.ts +18 -0
- package/dist/alert-channel-mailer.adapter.d.ts.map +1 -0
- package/dist/alert-channel-mailer.adapter.js +15 -0
- package/dist/alert-channel-mailer.adapter.js.map +1 -0
- package/dist/alert-channel-noop.adapter.d.ts +7 -0
- package/dist/alert-channel-noop.adapter.d.ts.map +1 -0
- package/dist/alert-channel-noop.adapter.js +7 -0
- package/dist/alert-channel-noop.adapter.js.map +1 -0
- package/dist/alert-channel-sms.adapter.d.ts +18 -0
- package/dist/alert-channel-sms.adapter.d.ts.map +1 -0
- package/dist/alert-channel-sms.adapter.js +15 -0
- package/dist/alert-channel-sms.adapter.js.map +1 -0
- package/dist/alert-channel-with-logger.adapter.d.ts +17 -0
- package/dist/alert-channel-with-logger.adapter.d.ts.map +1 -0
- package/dist/alert-channel-with-logger.adapter.js +33 -0
- package/dist/alert-channel-with-logger.adapter.js.map +1 -0
- package/dist/alert-channel-with-retry.adapter.d.ts +19 -0
- package/dist/alert-channel-with-retry.adapter.d.ts.map +1 -0
- package/dist/alert-channel-with-retry.adapter.js +16 -0
- package/dist/alert-channel-with-retry.adapter.js.map +1 -0
- package/dist/alert-channel-with-timeout.adapter.d.ts +19 -0
- package/dist/alert-channel-with-timeout.adapter.d.ts.map +1 -0
- package/dist/alert-channel-with-timeout.adapter.js +15 -0
- package/dist/alert-channel-with-timeout.adapter.js.map +1 -0
- package/dist/alert-channel.builder.d.ts +14 -0
- package/dist/alert-channel.builder.d.ts.map +1 -0
- package/dist/alert-channel.builder.js +28 -0
- package/dist/alert-channel.builder.js.map +1 -0
- package/dist/alert-channel.port.d.ts +6 -0
- package/dist/alert-channel.port.d.ts.map +1 -0
- package/dist/alert-channel.port.js +2 -0
- package/dist/alert-channel.port.js.map +1 -0
- package/dist/alert-message.vo.d.ts +10 -0
- package/dist/alert-message.vo.d.ts.map +1 -0
- package/dist/alert-message.vo.js +12 -0
- package/dist/alert-message.vo.js.map +1 -0
- package/dist/cache-repository-redis.adapter.d.ts +13 -0
- package/dist/cache-repository-redis.adapter.d.ts.map +1 -0
- package/dist/cache-repository-redis.adapter.js +27 -0
- package/dist/cache-repository-redis.adapter.js.map +1 -0
- package/dist/healthcheck-hono.handler.d.ts +3 -2
- package/dist/healthcheck-hono.handler.d.ts.map +1 -1
- package/dist/healthcheck-hono.handler.js +1 -2
- package/dist/healthcheck-hono.handler.js.map +1 -1
- package/dist/healthcheck.handler.d.ts +12 -1
- package/dist/healthcheck.handler.d.ts.map +1 -1
- package/dist/healthcheck.handler.js +20 -2
- package/dist/healthcheck.handler.js.map +1 -1
- package/dist/image-grayscale-noop.adapter.d.ts +6 -0
- package/dist/image-grayscale-noop.adapter.d.ts.map +1 -0
- package/dist/image-grayscale-noop.adapter.js +6 -0
- package/dist/image-grayscale-noop.adapter.js.map +1 -0
- package/dist/image-grayscale-sharp.adapter.d.ts +19 -0
- package/dist/image-grayscale-sharp.adapter.d.ts.map +1 -0
- package/dist/image-grayscale-sharp.adapter.js +28 -0
- package/dist/image-grayscale-sharp.adapter.js.map +1 -0
- package/dist/image-grayscale.port.d.ts +15 -0
- package/dist/image-grayscale.port.d.ts.map +1 -0
- package/dist/image-grayscale.port.js +2 -0
- package/dist/image-grayscale.port.js.map +1 -0
- package/dist/index.d.ts +37 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -3
- package/dist/index.js.map +1 -1
- package/dist/liveness-hono.handler.d.ts +8 -0
- package/dist/liveness-hono.handler.d.ts.map +1 -0
- package/dist/liveness-hono.handler.js +10 -0
- package/dist/liveness-hono.handler.js.map +1 -0
- package/dist/liveness.handler.d.ts +6 -0
- package/dist/liveness.handler.d.ts.map +1 -0
- package/dist/liveness.handler.js +6 -0
- package/dist/liveness.handler.js.map +1 -0
- package/dist/mailer-collecting.adapter.d.ts +8 -0
- package/dist/mailer-collecting.adapter.d.ts.map +1 -0
- package/dist/mailer-collecting.adapter.js +10 -0
- package/dist/mailer-collecting.adapter.js.map +1 -0
- package/dist/prerequisite-verifier-sms.adapter.d.ts +13 -0
- package/dist/prerequisite-verifier-sms.adapter.d.ts.map +1 -0
- package/dist/prerequisite-verifier-sms.adapter.js +20 -0
- package/dist/prerequisite-verifier-sms.adapter.js.map +1 -0
- package/dist/randomness-crypto.strategy.d.ts +5 -0
- package/dist/randomness-crypto.strategy.d.ts.map +1 -0
- package/dist/randomness-crypto.strategy.js +8 -0
- package/dist/randomness-crypto.strategy.js.map +1 -0
- package/dist/randomness-math.strategy.d.ts +5 -0
- package/dist/randomness-math.strategy.d.ts.map +1 -0
- package/dist/randomness-math.strategy.js +6 -0
- package/dist/randomness-math.strategy.js.map +1 -0
- package/dist/randomness-noop.strategy.d.ts +7 -0
- package/dist/randomness-noop.strategy.d.ts.map +1 -0
- package/dist/randomness-noop.strategy.js +10 -0
- package/dist/randomness-noop.strategy.js.map +1 -0
- package/dist/randomness.strategy.d.ts +4 -0
- package/dist/randomness.strategy.d.ts.map +1 -0
- package/dist/randomness.strategy.js +2 -0
- package/dist/randomness.strategy.js.map +1 -0
- package/dist/readiness-hono.handler.d.ts +26 -0
- package/dist/readiness-hono.handler.d.ts.map +1 -0
- package/dist/readiness-hono.handler.js +17 -0
- package/dist/readiness-hono.handler.js.map +1 -0
- package/dist/readiness.handler.d.ts +19 -0
- package/dist/readiness.handler.d.ts.map +1 -0
- package/dist/readiness.handler.js +19 -0
- package/dist/readiness.handler.js.map +1 -0
- package/dist/retry-backoff-jitter.strategy.d.ts +10 -0
- package/dist/retry-backoff-jitter.strategy.d.ts.map +1 -0
- package/dist/retry-backoff-jitter.strategy.js +14 -0
- package/dist/retry-backoff-jitter.strategy.js.map +1 -0
- package/dist/shield-ip-blacklist-hono.strategy.d.ts +11 -0
- package/dist/shield-ip-blacklist-hono.strategy.d.ts.map +1 -0
- package/dist/shield-ip-blacklist-hono.strategy.js +21 -0
- package/dist/shield-ip-blacklist-hono.strategy.js.map +1 -0
- package/dist/shield-ip-blacklist.strategy.d.ts +14 -0
- package/dist/shield-ip-blacklist.strategy.d.ts.map +1 -0
- package/dist/shield-ip-blacklist.strategy.js +16 -0
- package/dist/shield-ip-blacklist.strategy.js.map +1 -0
- package/dist/shield-ip-whitelist-hono.strategy.d.ts +11 -0
- package/dist/shield-ip-whitelist-hono.strategy.d.ts.map +1 -0
- package/dist/shield-ip-whitelist-hono.strategy.js +21 -0
- package/dist/shield-ip-whitelist-hono.strategy.js.map +1 -0
- package/dist/shield-ip-whitelist.strategy.d.ts +14 -0
- package/dist/shield-ip-whitelist.strategy.d.ts.map +1 -0
- package/dist/shield-ip-whitelist.strategy.js +16 -0
- package/dist/shield-ip-whitelist.strategy.js.map +1 -0
- package/dist/sms-collecting.adapter.d.ts +8 -0
- package/dist/sms-collecting.adapter.d.ts.map +1 -0
- package/dist/sms-collecting.adapter.js +10 -0
- package/dist/sms-collecting.adapter.js.map +1 -0
- package/dist/sms-noop.adapter.d.ts +7 -0
- package/dist/sms-noop.adapter.d.ts.map +1 -0
- package/dist/sms-noop.adapter.js +7 -0
- package/dist/sms-noop.adapter.js.map +1 -0
- package/dist/sms-with-logger.adapter.d.ts +17 -0
- package/dist/sms-with-logger.adapter.d.ts.map +1 -0
- package/dist/sms-with-logger.adapter.js +28 -0
- package/dist/sms-with-logger.adapter.js.map +1 -0
- package/dist/sms-with-retry.adapter.d.ts +19 -0
- package/dist/sms-with-retry.adapter.d.ts.map +1 -0
- package/dist/sms-with-retry.adapter.js +16 -0
- package/dist/sms-with-retry.adapter.js.map +1 -0
- package/dist/sms-with-timeout.adapter.d.ts +18 -0
- package/dist/sms-with-timeout.adapter.d.ts.map +1 -0
- package/dist/sms-with-timeout.adapter.js +15 -0
- package/dist/sms-with-timeout.adapter.js.map +1 -0
- package/dist/sms.builder.d.ts +14 -0
- package/dist/sms.builder.d.ts.map +1 -0
- package/dist/sms.builder.js +28 -0
- package/dist/sms.builder.js.map +1 -0
- package/dist/sms.port.d.ts +6 -0
- package/dist/sms.port.d.ts.map +1 -0
- package/dist/sms.port.js +2 -0
- package/dist/sms.port.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/readme.md +37 -3
- package/src/alert-channel-collecting.adapter.ts +14 -0
- package/src/alert-channel-composite.adapter.ts +24 -0
- package/src/alert-channel-mailer.adapter.ts +22 -0
- package/src/alert-channel-noop.adapter.ts +10 -0
- package/src/alert-channel-sms.adapter.ts +22 -0
- package/src/alert-channel-with-logger.adapter.ts +46 -0
- package/src/alert-channel-with-retry.adapter.ts +22 -0
- package/src/alert-channel-with-timeout.adapter.ts +25 -0
- package/src/alert-channel.builder.ts +48 -0
- package/src/alert-channel.port.ts +7 -0
- package/src/alert-message.vo.ts +10 -0
- package/src/cache-repository-redis.adapter.ts +31 -0
- package/src/healthcheck-hono.handler.ts +1 -2
- package/src/healthcheck.handler.ts +28 -3
- package/src/image-grayscale-noop.adapter.ts +8 -0
- package/src/image-grayscale-sharp.adapter.ts +45 -0
- package/src/image-grayscale.port.ts +16 -0
- package/src/index.ts +37 -3
- package/src/liveness-hono.handler.ts +13 -0
- package/src/liveness.handler.ts +5 -0
- package/src/mailer-collecting.adapter.ts +14 -0
- package/src/prerequisite-verifier-sms.adapter.ts +26 -0
- package/src/randomness-crypto.strategy.ts +9 -0
- package/src/randomness-math.strategy.ts +7 -0
- package/src/randomness-noop.strategy.ts +9 -0
- package/src/randomness.strategy.ts +3 -0
- package/src/readiness-hono.handler.ts +22 -0
- package/src/readiness.handler.ts +33 -0
- package/src/retry-backoff-jitter.strategy.ts +15 -0
- package/src/shield-ip-blacklist-hono.strategy.ts +30 -0
- package/src/shield-ip-blacklist.strategy.ts +18 -0
- package/src/shield-ip-whitelist-hono.strategy.ts +30 -0
- package/src/shield-ip-whitelist.strategy.ts +18 -0
- package/src/sms-collecting.adapter.ts +14 -0
- package/src/sms-noop.adapter.ts +10 -0
- package/src/sms-with-logger.adapter.ts +37 -0
- package/src/sms-with-retry.adapter.ts +22 -0
- package/src/sms-with-timeout.adapter.ts +21 -0
- package/src/sms.builder.ts +39 -0
- package/src/sms.port.ts +6 -0
- package/dist/ping-hono.handler.d.ts +0 -6
- package/dist/ping-hono.handler.d.ts.map +0 -1
- package/dist/ping-hono.handler.js +0 -13
- package/dist/ping-hono.handler.js.map +0 -1
- package/dist/ping.handler.d.ts +0 -4
- package/dist/ping.handler.d.ts.map +0 -1
- package/dist/ping.handler.js +0 -6
- package/dist/ping.handler.js.map +0 -1
- package/dist/retry-backoff-fibonacci.strategy.d.ts +0 -9
- package/dist/retry-backoff-fibonacci.strategy.d.ts.map +0 -1
- package/dist/retry-backoff-fibonacci.strategy.js +0 -19
- package/dist/retry-backoff-fibonacci.strategy.js.map +0 -1
- package/src/ping-hono.handler.ts +0 -17
- package/src/ping.handler.ts +0 -5
- package/src/retry-backoff-fibonacci.strategy.ts +0 -17
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { PrerequisiteVerification, } from "./prerequisite-verifier.port";
|
|
2
|
+
export class PrerequisiteVerifierSmsAdapter {
|
|
3
|
+
deps;
|
|
4
|
+
constructor(deps) {
|
|
5
|
+
this.deps = deps;
|
|
6
|
+
}
|
|
7
|
+
async verify() {
|
|
8
|
+
try {
|
|
9
|
+
await this.deps.Sms.verify();
|
|
10
|
+
return PrerequisiteVerification.success;
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
return PrerequisiteVerification.failure(error);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get kind() {
|
|
17
|
+
return "sms";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=prerequisite-verifier-sms.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerequisite-verifier-sms.adapter.js","sourceRoot":"","sources":["../src/prerequisite-verifier-sms.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAGzB,MAAM,8BAA8B,CAAC;AAKtC,MAAM,OAAO,8BAA8B;IACZ;IAA7B,YAA6B,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;IAAG,CAAC;IAEnD,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAE7B,OAAO,wBAAwB,CAAC,OAAO,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness-crypto.strategy.d.ts","sourceRoot":"","sources":["../src/randomness-crypto.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,IAAI,IAAI,MAAM;CAKf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness-crypto.strategy.js","sourceRoot":"","sources":["../src/randomness-crypto.strategy.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wBAAwB;IACnC,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,CAAE,GAAG,UAAU,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness-math.strategy.d.ts","sourceRoot":"","sources":["../src/randomness-math.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,IAAI,MAAM;CAGf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness-math.strategy.js","sourceRoot":"","sources":["../src/randomness-math.strategy.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IACjC,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RandomnessStrategy } from "./randomness.strategy";
|
|
2
|
+
export declare class RandomnessNoopStrategy implements RandomnessStrategy {
|
|
3
|
+
private readonly value;
|
|
4
|
+
constructor(value: number);
|
|
5
|
+
next(): number;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=randomness-noop.strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness-noop.strategy.d.ts","sourceRoot":"","sources":["../src/randomness-noop.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,qBAAa,sBAAuB,YAAW,kBAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAE1C,IAAI,IAAI,MAAM;CAGf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness-noop.strategy.js","sourceRoot":"","sources":["../src/randomness-noop.strategy.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IACJ;IAA7B,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness.strategy.d.ts","sourceRoot":"","sources":["../src/randomness.strategy.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,IAAI,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"randomness.strategy.js","sourceRoot":"","sources":["../src/randomness.strategy.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { HandlerHonoPort } from "./handler-hono.port";
|
|
2
|
+
import { type ReadinessConfig } from "./readiness.handler";
|
|
3
|
+
export declare class ReadinessHonoHandler implements HandlerHonoPort {
|
|
4
|
+
private readonly handler;
|
|
5
|
+
constructor(config: ReadinessConfig);
|
|
6
|
+
handle(): [import("hono/types").H<import("hono").Env, string, {}, Promise<Response & import("hono").TypedResponse<{
|
|
7
|
+
ok: boolean;
|
|
8
|
+
details: readonly {
|
|
9
|
+
label: import("./prerequisite.vo").PrerequisiteLabelType;
|
|
10
|
+
outcome: {
|
|
11
|
+
outcome: import("./prerequisite-verifier.port").PrerequisiteVerificationOutcome.success;
|
|
12
|
+
} | {
|
|
13
|
+
outcome: import("./prerequisite-verifier.port").PrerequisiteVerificationOutcome.failure;
|
|
14
|
+
error?: {
|
|
15
|
+
message: string;
|
|
16
|
+
name?: string | undefined;
|
|
17
|
+
stack?: string | undefined;
|
|
18
|
+
cause?: /*elided*/ any | undefined;
|
|
19
|
+
} | undefined;
|
|
20
|
+
} | {
|
|
21
|
+
outcome: import("./prerequisite-verifier.port").PrerequisiteVerificationOutcome.undetermined;
|
|
22
|
+
};
|
|
23
|
+
}[];
|
|
24
|
+
}, 200 | 503, "json">>>];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=readiness-hono.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness-hono.handler.d.ts","sourceRoot":"","sources":["../src/readiness-hono.handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AAI7E,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAE/B,MAAM,EAAE,eAAe;IAInC,MAAM;;;;;;;;;;;;;;;;;;;CAQP"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFactory } from "hono/factory";
|
|
2
|
+
import { ReadinessHandler } from "./readiness.handler";
|
|
3
|
+
const factory = createFactory();
|
|
4
|
+
export class ReadinessHonoHandler {
|
|
5
|
+
handler;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.handler = new ReadinessHandler(config);
|
|
8
|
+
}
|
|
9
|
+
handle() {
|
|
10
|
+
return factory.createHandlers(async (c) => {
|
|
11
|
+
const readiness = await this.handler.check();
|
|
12
|
+
const code = readiness.ok ? 200 : 503;
|
|
13
|
+
return c.json(readiness, code);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=readiness-hono.handler.js.map
|
|
@@ -0,0 +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,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAEtC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Prerequisite, PrerequisiteLabelType } from "./prerequisite.vo";
|
|
2
|
+
import { type PrerequisiteVerificationResult } from "./prerequisite-verifier.port";
|
|
3
|
+
export type ReadinessConfig = {
|
|
4
|
+
prerequisites: ReadonlyArray<Prerequisite>;
|
|
5
|
+
};
|
|
6
|
+
type ReadinessResult = {
|
|
7
|
+
ok: boolean;
|
|
8
|
+
details: ReadonlyArray<{
|
|
9
|
+
label: PrerequisiteLabelType;
|
|
10
|
+
outcome: PrerequisiteVerificationResult;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
export declare class ReadinessHandler {
|
|
14
|
+
private readonly config;
|
|
15
|
+
constructor(config: ReadinessConfig);
|
|
16
|
+
check(): Promise<ReadinessResult>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=readiness.handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.handler.d.ts","sourceRoot":"","sources":["../src/readiness.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAEL,KAAK,8BAA8B,EACpC,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,eAAe,GAAG;IAAE,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC;AAE7E,KAAK,eAAe,GAAG;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,qBAAqB,CAAC;QAAC,OAAO,EAAE,8BAA8B,CAAA;KAAE,CAAC,CAAC;CACnG,CAAC;AAEF,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAE9C,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;CAgBxC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PrerequisiteVerificationOutcome, } from "./prerequisite-verifier.port";
|
|
2
|
+
export class ReadinessHandler {
|
|
3
|
+
config;
|
|
4
|
+
constructor(config) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
}
|
|
7
|
+
async check() {
|
|
8
|
+
const prerequisites = this.config.prerequisites
|
|
9
|
+
.filter((prerequisite) => prerequisite.enabled)
|
|
10
|
+
.filter((prerequisite) => prerequisite.kind !== "port");
|
|
11
|
+
const details = await Promise.all(prerequisites.map(async (prerequisite) => ({
|
|
12
|
+
label: prerequisite.label,
|
|
13
|
+
outcome: await prerequisite.build().verify(),
|
|
14
|
+
})));
|
|
15
|
+
const ok = details.every((detail) => detail.outcome.outcome !== PrerequisiteVerificationOutcome.failure);
|
|
16
|
+
return { ok, details };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=readiness.handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.handler.js","sourceRoot":"","sources":["../src/readiness.handler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,GAEhC,MAAM,8BAA8B,CAAC;AAStC,MAAM,OAAO,gBAAgB;IACE;IAA7B,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAExD,KAAK,CAAC,KAAK;QACT,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;aAC5C,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC;aAC9C,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YACzC,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,OAAO,EAAE,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;SAC7C,CAAC,CAAC,CACJ,CAAC;QAEF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAEzG,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as tools from "@bgord/tools";
|
|
2
|
+
import type { RandomnessStrategy } from "./randomness.strategy";
|
|
3
|
+
import type { RetryBackoffStrategy } from "./retry-backoff.strategy";
|
|
4
|
+
export declare class RetryBackoffJitterStrategy implements RetryBackoffStrategy {
|
|
5
|
+
private readonly delay;
|
|
6
|
+
private readonly randomness;
|
|
7
|
+
constructor(delay: tools.Duration, randomness: RandomnessStrategy);
|
|
8
|
+
next(attempt: tools.IntegerPositiveType): tools.Duration;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=retry-backoff-jitter.strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-backoff-jitter.strategy.d.ts","sourceRoot":"","sources":["../src/retry-backoff-jitter.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,qBAAa,0BAA2B,YAAW,oBAAoB;IAEnE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADV,KAAK,EAAE,KAAK,CAAC,QAAQ,EACrB,UAAU,EAAE,kBAAkB;IAGjD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,QAAQ;CAGzD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as tools from "@bgord/tools";
|
|
2
|
+
import * as v from "valibot";
|
|
3
|
+
export class RetryBackoffJitterStrategy {
|
|
4
|
+
delay;
|
|
5
|
+
randomness;
|
|
6
|
+
constructor(delay, randomness) {
|
|
7
|
+
this.delay = delay;
|
|
8
|
+
this.randomness = randomness;
|
|
9
|
+
}
|
|
10
|
+
next(attempt) {
|
|
11
|
+
return this.delay.times(v.parse(tools.MultiplicationFactor, attempt * this.randomness.next()));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=retry-backoff-jitter.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-backoff-jitter.strategy.js","sourceRoot":"","sources":["../src/retry-backoff-jitter.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAI7B,MAAM,OAAO,0BAA0B;IAElB;IACA;IAFnB,YACmB,KAAqB,EACrB,UAA8B;QAD9B,UAAK,GAAL,KAAK,CAAgB;QACrB,eAAU,GAAV,UAAU,CAAoB;IAC9C,CAAC;IAEJ,IAAI,CAAC,OAAkC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from "hono";
|
|
2
|
+
import { HTTPException } from "hono/http-exception";
|
|
3
|
+
import type { MiddlewareHonoPort } from "./middleware-hono.port";
|
|
4
|
+
import { type ShieldIpBlacklistConfig } from "./shield-ip-blacklist.strategy";
|
|
5
|
+
export declare const ShieldIpBlacklistError: HTTPException;
|
|
6
|
+
export declare class ShieldIpBlacklistHonoStrategy implements MiddlewareHonoPort {
|
|
7
|
+
private readonly strategy;
|
|
8
|
+
constructor(config: ShieldIpBlacklistConfig);
|
|
9
|
+
handle(): MiddlewareHandler;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=shield-ip-blacklist-hono.strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-blacklist-hono.strategy.d.ts","sourceRoot":"","sources":["../src/shield-ip-blacklist-hono.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EACL,KAAK,uBAAuB,EAG7B,MAAM,gCAAgC,CAAC;AAExC,eAAO,MAAM,sBAAsB,eAEjC,CAAC;AAEH,qBAAa,6BAA8B,YAAW,kBAAkB;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAEzC,MAAM,EAAE,uBAAuB;IAI3C,MAAM,IAAI,iBAAiB;CAQ5B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HTTPException } from "hono/http-exception";
|
|
2
|
+
import { RequestContextHonoAdapter } from "./request-context-hono.adapter";
|
|
3
|
+
import { ShieldIpBlacklistStrategy, ShieldIpBlacklistStrategyError, } from "./shield-ip-blacklist.strategy";
|
|
4
|
+
export const ShieldIpBlacklistError = new HTTPException(403, {
|
|
5
|
+
message: ShieldIpBlacklistStrategyError.Rejected,
|
|
6
|
+
});
|
|
7
|
+
export class ShieldIpBlacklistHonoStrategy {
|
|
8
|
+
strategy;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.strategy = new ShieldIpBlacklistStrategy(config);
|
|
11
|
+
}
|
|
12
|
+
handle() {
|
|
13
|
+
return async (c, next) => {
|
|
14
|
+
const context = new RequestContextHonoAdapter(c);
|
|
15
|
+
if (this.strategy.evaluate(context))
|
|
16
|
+
return next();
|
|
17
|
+
throw ShieldIpBlacklistError;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=shield-ip-blacklist-hono.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-blacklist-hono.strategy.js","sourceRoot":"","sources":["../src/shield-ip-blacklist-hono.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAEL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,gCAAgC,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE;IAC3D,OAAO,EAAE,8BAA8B,CAAC,QAAQ;CACjD,CAAC,CAAC;AAEH,MAAM,OAAO,6BAA6B;IACvB,QAAQ,CAA4B;IAErD,YAAY,MAA+B;QACzC,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,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAC;YACnD,MAAM,sBAAsB,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ClientIpType } from "./client-ip.vo";
|
|
2
|
+
import type { HasIdentityIp } from "./request-context.port";
|
|
3
|
+
export type ShieldIpBlacklistConfig = {
|
|
4
|
+
blacklist: Array<ClientIpType>;
|
|
5
|
+
};
|
|
6
|
+
export declare const ShieldIpBlacklistStrategyError: {
|
|
7
|
+
Rejected: string;
|
|
8
|
+
};
|
|
9
|
+
export declare class ShieldIpBlacklistStrategy {
|
|
10
|
+
private readonly config;
|
|
11
|
+
constructor(config: ShieldIpBlacklistConfig);
|
|
12
|
+
evaluate(context: HasIdentityIp): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=shield-ip-blacklist.strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-blacklist.strategy.d.ts","sourceRoot":"","sources":["../src/shield-ip-blacklist.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,MAAM,uBAAuB,GAAG;IAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC;AAEzE,eAAO,MAAM,8BAA8B;;CAA+C,CAAC;AAE3F,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,uBAAuB;IAE5D,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;CAM1C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { ClientIp } from "./client-ip.vo";
|
|
3
|
+
export const ShieldIpBlacklistStrategyError = { Rejected: "shield.ip.blacklist.rejected" };
|
|
4
|
+
export class ShieldIpBlacklistStrategy {
|
|
5
|
+
config;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
evaluate(context) {
|
|
10
|
+
const ip = v.safeParse(ClientIp, context.identity.ip());
|
|
11
|
+
if (!ip.success)
|
|
12
|
+
return false;
|
|
13
|
+
return !this.config.blacklist.includes(ip.output);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=shield-ip-blacklist.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-blacklist.strategy.js","sourceRoot":"","sources":["../src/shield-ip-blacklist.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAK7D,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAC;AAE3F,MAAM,OAAO,yBAAyB;IACP;IAA7B,YAA6B,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;IAEhE,QAAQ,CAAC,OAAsB;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from "hono";
|
|
2
|
+
import { HTTPException } from "hono/http-exception";
|
|
3
|
+
import type { MiddlewareHonoPort } from "./middleware-hono.port";
|
|
4
|
+
import { type ShieldIpWhitelistConfig } from "./shield-ip-whitelist.strategy";
|
|
5
|
+
export declare const ShieldIpWhitelistError: HTTPException;
|
|
6
|
+
export declare class ShieldIpWhitelistHonoStrategy implements MiddlewareHonoPort {
|
|
7
|
+
private readonly strategy;
|
|
8
|
+
constructor(config: ShieldIpWhitelistConfig);
|
|
9
|
+
handle(): MiddlewareHandler;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=shield-ip-whitelist-hono.strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-whitelist-hono.strategy.d.ts","sourceRoot":"","sources":["../src/shield-ip-whitelist-hono.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,EACL,KAAK,uBAAuB,EAG7B,MAAM,gCAAgC,CAAC;AAExC,eAAO,MAAM,sBAAsB,eAEjC,CAAC;AAEH,qBAAa,6BAA8B,YAAW,kBAAkB;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAEzC,MAAM,EAAE,uBAAuB;IAI3C,MAAM,IAAI,iBAAiB;CAQ5B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HTTPException } from "hono/http-exception";
|
|
2
|
+
import { RequestContextHonoAdapter } from "./request-context-hono.adapter";
|
|
3
|
+
import { ShieldIpWhitelistStrategy, ShieldIpWhitelistStrategyError, } from "./shield-ip-whitelist.strategy";
|
|
4
|
+
export const ShieldIpWhitelistError = new HTTPException(403, {
|
|
5
|
+
message: ShieldIpWhitelistStrategyError.Rejected,
|
|
6
|
+
});
|
|
7
|
+
export class ShieldIpWhitelistHonoStrategy {
|
|
8
|
+
strategy;
|
|
9
|
+
constructor(config) {
|
|
10
|
+
this.strategy = new ShieldIpWhitelistStrategy(config);
|
|
11
|
+
}
|
|
12
|
+
handle() {
|
|
13
|
+
return async (c, next) => {
|
|
14
|
+
const context = new RequestContextHonoAdapter(c);
|
|
15
|
+
if (this.strategy.evaluate(context))
|
|
16
|
+
return next();
|
|
17
|
+
throw ShieldIpWhitelistError;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=shield-ip-whitelist-hono.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-whitelist-hono.strategy.js","sourceRoot":"","sources":["../src/shield-ip-whitelist-hono.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAEL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,gCAAgC,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE;IAC3D,OAAO,EAAE,8BAA8B,CAAC,QAAQ;CACjD,CAAC,CAAC;AAEH,MAAM,OAAO,6BAA6B;IACvB,QAAQ,CAA4B;IAErD,YAAY,MAA+B;QACzC,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,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,EAAE,CAAC;YACnD,MAAM,sBAAsB,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ClientIpType } from "./client-ip.vo";
|
|
2
|
+
import type { HasIdentityIp } from "./request-context.port";
|
|
3
|
+
export type ShieldIpWhitelistConfig = {
|
|
4
|
+
whitelist: Array<ClientIpType>;
|
|
5
|
+
};
|
|
6
|
+
export declare const ShieldIpWhitelistStrategyError: {
|
|
7
|
+
Rejected: string;
|
|
8
|
+
};
|
|
9
|
+
export declare class ShieldIpWhitelistStrategy {
|
|
10
|
+
private readonly config;
|
|
11
|
+
constructor(config: ShieldIpWhitelistConfig);
|
|
12
|
+
evaluate(context: HasIdentityIp): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=shield-ip-whitelist.strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-whitelist.strategy.d.ts","sourceRoot":"","sources":["../src/shield-ip-whitelist.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,MAAM,uBAAuB,GAAG;IAAE,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;CAAE,CAAC;AAEzE,eAAO,MAAM,8BAA8B;;CAA+C,CAAC;AAE3F,qBAAa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,uBAAuB;IAE5D,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;CAM1C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as v from "valibot";
|
|
2
|
+
import { ClientIp } from "./client-ip.vo";
|
|
3
|
+
export const ShieldIpWhitelistStrategyError = { Rejected: "shield.ip.whitelist.rejected" };
|
|
4
|
+
export class ShieldIpWhitelistStrategy {
|
|
5
|
+
config;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
evaluate(context) {
|
|
10
|
+
const ip = v.safeParse(ClientIp, context.identity.ip());
|
|
11
|
+
if (!ip.success)
|
|
12
|
+
return false;
|
|
13
|
+
return this.config.whitelist.includes(ip.output);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=shield-ip-whitelist.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shield-ip-whitelist.strategy.js","sourceRoot":"","sources":["../src/shield-ip-whitelist.strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAK7D,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,QAAQ,EAAE,8BAA8B,EAAE,CAAC;AAE3F,MAAM,OAAO,yBAAyB;IACP;IAA7B,YAA6B,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;IAEhE,QAAQ,CAAC,OAAsB;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { SmsPort } from "./sms.port";
|
|
3
|
+
export declare class SmsCollectingAdapter implements SmsPort {
|
|
4
|
+
readonly messages: Array<tools.SmsMessage>;
|
|
5
|
+
send(message: tools.SmsMessage): Promise<void>;
|
|
6
|
+
verify(): Promise<boolean>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=sms-collecting.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-collecting.adapter.d.ts","sourceRoot":"","sources":["../src/sms-collecting.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,oBAAqB,YAAW,OAAO;IAClD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAM;IAE1C,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-collecting.adapter.js","sourceRoot":"","sources":["../src/sms-collecting.adapter.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,oBAAoB;IACtB,QAAQ,GAA4B,EAAE,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,OAAyB;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { SmsPort } from "./sms.port";
|
|
3
|
+
export declare class SmsNoopAdapter implements SmsPort {
|
|
4
|
+
send(_message: tools.SmsMessage): Promise<void>;
|
|
5
|
+
verify(): Promise<boolean>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=sms-noop.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-noop.adapter.d.ts","sourceRoot":"","sources":["../src/sms-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,cAAe,YAAW,OAAO;IACtC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-noop.adapter.js","sourceRoot":"","sources":["../src/sms-noop.adapter.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,IAAI,CAAC,QAA0B,IAAkB,CAAC;IAExD,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { ClockPort } from "./clock.port";
|
|
3
|
+
import type { LoggerPort } from "./logger.port";
|
|
4
|
+
import type { SmsPort } from "./sms.port";
|
|
5
|
+
export type SmsWithLoggerAdapterDependencies = {
|
|
6
|
+
inner: SmsPort;
|
|
7
|
+
Logger: LoggerPort;
|
|
8
|
+
Clock: ClockPort;
|
|
9
|
+
};
|
|
10
|
+
export declare class SmsWithLoggerAdapter implements SmsPort {
|
|
11
|
+
private readonly deps;
|
|
12
|
+
private readonly base;
|
|
13
|
+
constructor(deps: SmsWithLoggerAdapterDependencies);
|
|
14
|
+
send(message: tools.SmsMessage): Promise<void>;
|
|
15
|
+
verify(): Promise<boolean>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=sms-with-logger.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-with-logger.adapter.d.ts","sourceRoot":"","sources":["../src/sms-with-logger.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,MAAM,gCAAgC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAExG,qBAAa,oBAAqB,YAAW,OAAO;IAGtC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4C;gBAEpC,IAAI,EAAE,gCAAgC;IAE7D,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Stopwatch } from "./stopwatch.service";
|
|
2
|
+
export class SmsWithLoggerAdapter {
|
|
3
|
+
deps;
|
|
4
|
+
base = { component: "infra", operation: "sms" };
|
|
5
|
+
constructor(deps) {
|
|
6
|
+
this.deps = deps;
|
|
7
|
+
}
|
|
8
|
+
async send(message) {
|
|
9
|
+
const duration = new Stopwatch(this.deps);
|
|
10
|
+
try {
|
|
11
|
+
this.deps.Logger.info({ message: "SMS attempt", metadata: message.toJSON(), ...this.base });
|
|
12
|
+
await this.deps.inner.send(message);
|
|
13
|
+
this.deps.Logger.info({
|
|
14
|
+
message: "SMS success",
|
|
15
|
+
metadata: { message: message.toJSON(), duration: duration.stop() },
|
|
16
|
+
...this.base,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
this.deps.Logger.error({ message: "SMS error", error, metadata: duration.stop(), ...this.base });
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async verify() {
|
|
25
|
+
return this.deps.inner.verify();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=sms-with-logger.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-with-logger.adapter.js","sourceRoot":"","sources":["../src/sms-with-logger.adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIhD,MAAM,OAAO,oBAAoB;IAGF;IAFZ,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAEjE,YAA6B,IAAsC;QAAtC,SAAI,GAAJ,IAAI,CAAkC;IAAG,CAAC;IAEvE,KAAK,CAAC,IAAI,CAAC,OAAyB;QAClC,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAE5F,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE;gBAClE,GAAG,IAAI,CAAC,IAAI;aACb,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEjG,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import { type RetryConfig } from "./retry.service";
|
|
3
|
+
import type { SleeperPort } from "./sleeper.port";
|
|
4
|
+
import type { SmsPort } from "./sms.port";
|
|
5
|
+
export type SmsWithRetryAdapterDependencies = {
|
|
6
|
+
Sleeper: SleeperPort;
|
|
7
|
+
inner: SmsPort;
|
|
8
|
+
};
|
|
9
|
+
export type SmsWithRetryAdapterConfig = {
|
|
10
|
+
retry: RetryConfig;
|
|
11
|
+
};
|
|
12
|
+
export declare class SmsWithRetryAdapter implements SmsPort {
|
|
13
|
+
private readonly config;
|
|
14
|
+
private readonly deps;
|
|
15
|
+
constructor(config: SmsWithRetryAdapterConfig, deps: SmsWithRetryAdapterDependencies);
|
|
16
|
+
send(message: tools.SmsMessage): Promise<void>;
|
|
17
|
+
verify(): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sms-with-retry.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-with-retry.adapter.d.ts","sourceRoot":"","sources":["../src/sms-with-retry.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAS,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,+BAA+B,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AACvF,MAAM,MAAM,yBAAyB,GAAG;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAAC;AAE/D,qBAAa,mBAAoB,YAAW,OAAO;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE,+BAA+B;IAGlD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Retry } from "./retry.service";
|
|
2
|
+
export class SmsWithRetryAdapter {
|
|
3
|
+
config;
|
|
4
|
+
deps;
|
|
5
|
+
constructor(config, deps) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.deps = deps;
|
|
8
|
+
}
|
|
9
|
+
async send(message) {
|
|
10
|
+
await new Retry(this.deps).run(async () => this.deps.inner.send(message), this.config.retry);
|
|
11
|
+
}
|
|
12
|
+
async verify() {
|
|
13
|
+
return this.deps.inner.verify();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=sms-with-retry.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-with-retry.adapter.js","sourceRoot":"","sources":["../src/sms-with-retry.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAoB,MAAM,iBAAiB,CAAC;AAO1D,MAAM,OAAO,mBAAmB;IAEX;IACA;IAFnB,YACmB,MAAiC,EACjC,IAAqC;QADrC,WAAM,GAAN,MAAM,CAA2B;QACjC,SAAI,GAAJ,IAAI,CAAiC;IACrD,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,OAAyB;QAClC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { SmsPort } from "./sms.port";
|
|
3
|
+
import type { TimeoutRunnerPort } from "./timeout-runner.port";
|
|
4
|
+
export type SmsWithTimeoutAdapterDependencies = {
|
|
5
|
+
TimeoutRunner: TimeoutRunnerPort;
|
|
6
|
+
inner: SmsPort;
|
|
7
|
+
};
|
|
8
|
+
export type SmsWithTimeoutAdapterConfig = {
|
|
9
|
+
timeout: tools.Duration;
|
|
10
|
+
};
|
|
11
|
+
export declare class SmsWithTimeoutAdapter implements SmsPort {
|
|
12
|
+
private readonly config;
|
|
13
|
+
private readonly deps;
|
|
14
|
+
constructor(config: SmsWithTimeoutAdapterConfig, deps: SmsWithTimeoutAdapterDependencies);
|
|
15
|
+
send(message: tools.SmsMessage): Promise<void>;
|
|
16
|
+
verify(): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sms-with-timeout.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sms-with-timeout.adapter.d.ts","sourceRoot":"","sources":["../src/sms-with-timeout.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,MAAM,iCAAiC,GAAG;IAAE,aAAa,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AACrG,MAAM,MAAM,2BAA2B,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAA;CAAE,CAAC;AAEtE,qBAAa,qBAAsB,YAAW,OAAO;IAEjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,2BAA2B,EACnC,IAAI,EAAE,iCAAiC;IAGpD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
|