@bgord/bun 1.23.12 → 1.24.1
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/atomic-file-writer-collecting.adapter.d.ts +8 -0
- package/dist/atomic-file-writer-collecting.adapter.d.ts.map +1 -0
- package/dist/atomic-file-writer-collecting.adapter.js +7 -0
- package/dist/atomic-file-writer-collecting.adapter.js.map +1 -0
- package/dist/atomic-file-writer-noop.adapter.d.ts +7 -0
- package/dist/atomic-file-writer-noop.adapter.d.ts.map +1 -0
- package/dist/atomic-file-writer-noop.adapter.js +4 -0
- package/dist/atomic-file-writer-noop.adapter.js.map +1 -0
- package/dist/atomic-file-writer.adapter.d.ts +19 -0
- package/dist/atomic-file-writer.adapter.d.ts.map +1 -0
- package/dist/atomic-file-writer.adapter.js +18 -0
- package/dist/atomic-file-writer.adapter.js.map +1 -0
- package/dist/atomic-file-writer.port.d.ts +6 -0
- package/dist/atomic-file-writer.port.d.ts.map +1 -0
- package/dist/atomic-file-writer.port.js +2 -0
- package/dist/atomic-file-writer.port.js.map +1 -0
- package/dist/encryption-aes-gcm.adapter.d.ts +2 -2
- package/dist/encryption-aes-gcm.adapter.d.ts.map +1 -1
- package/dist/encryption-aes-gcm.adapter.js +2 -2
- package/dist/encryption-aes-gcm.adapter.js.map +1 -1
- package/dist/event-sourced-repository.adapter.d.ts +27 -0
- package/dist/event-sourced-repository.adapter.d.ts.map +1 -0
- package/dist/event-sourced-repository.adapter.js +16 -0
- package/dist/event-sourced-repository.adapter.js.map +1 -0
- package/dist/event-stream-accept.service.d.ts +4 -0
- package/dist/event-stream-accept.service.d.ts.map +1 -0
- package/dist/event-stream-accept.service.js +11 -0
- package/dist/event-stream-accept.service.js.map +1 -0
- package/dist/gzip.adapter.d.ts +2 -2
- package/dist/gzip.adapter.d.ts.map +1 -1
- package/dist/gzip.adapter.js +1 -1
- package/dist/gzip.adapter.js.map +1 -1
- package/dist/healthcheck.handler.d.ts +4 -2
- package/dist/healthcheck.handler.d.ts.map +1 -1
- package/dist/healthcheck.handler.js +4 -11
- package/dist/healthcheck.handler.js.map +1 -1
- package/dist/http-exception-errors.js +2 -2
- package/dist/http-exception-errors.js.map +1 -1
- package/dist/http-logger-hono.middleware.d.ts +1 -0
- package/dist/http-logger-hono.middleware.d.ts.map +1 -1
- package/dist/http-logger-hono.middleware.js +10 -6
- package/dist/http-logger-hono.middleware.js.map +1 -1
- package/dist/http-logger.middleware.d.ts.map +1 -1
- package/dist/http-logger.middleware.js +4 -6
- package/dist/http-logger.middleware.js.map +1 -1
- package/dist/image-blur.adapter.d.ts +2 -6
- package/dist/image-blur.adapter.d.ts.map +1 -1
- package/dist/image-blur.adapter.js +1 -4
- package/dist/image-blur.adapter.js.map +1 -1
- package/dist/image-compressor.adapter.d.ts +2 -6
- package/dist/image-compressor.adapter.d.ts.map +1 -1
- package/dist/image-compressor.adapter.js +1 -4
- package/dist/image-compressor.adapter.js.map +1 -1
- package/dist/image-exif-clear.adapter.d.ts +2 -6
- package/dist/image-exif-clear.adapter.d.ts.map +1 -1
- package/dist/image-exif-clear.adapter.js +1 -3
- package/dist/image-exif-clear.adapter.js.map +1 -1
- package/dist/image-formatter.adapter.d.ts +2 -6
- package/dist/image-formatter.adapter.d.ts.map +1 -1
- package/dist/image-formatter.adapter.js +1 -3
- package/dist/image-formatter.adapter.js.map +1 -1
- package/dist/image-grayscale.adapter.d.ts +2 -6
- package/dist/image-grayscale.adapter.d.ts.map +1 -1
- package/dist/image-grayscale.adapter.js +1 -4
- package/dist/image-grayscale.adapter.js.map +1 -1
- package/dist/image-processor.adapter.d.ts +2 -6
- package/dist/image-processor.adapter.d.ts.map +1 -1
- package/dist/image-processor.adapter.js +1 -3
- package/dist/image-processor.adapter.js.map +1 -1
- package/dist/image-resizer.adapter.d.ts +2 -6
- package/dist/image-resizer.adapter.d.ts.map +1 -1
- package/dist/image-resizer.adapter.js +1 -4
- package/dist/image-resizer.adapter.js.map +1 -1
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/job-pruner-sqlite.adapter.d.ts.map +1 -1
- package/dist/job-pruner-sqlite.adapter.js +2 -1
- package/dist/job-pruner-sqlite.adapter.js.map +1 -1
- package/dist/job-queue-stats-provider-sqlite.adapter.js +4 -4
- package/dist/job-queue-stats-provider-sqlite.adapter.js.map +1 -1
- package/dist/job-recoverer-collecting.adapter.d.ts +7 -0
- package/dist/job-recoverer-collecting.adapter.d.ts.map +1 -0
- package/dist/job-recoverer-collecting.adapter.js +10 -0
- package/dist/job-recoverer-collecting.adapter.js.map +1 -0
- package/dist/job-recoverer-noop.adapter.d.ts +6 -0
- package/dist/job-recoverer-noop.adapter.d.ts.map +1 -0
- package/dist/job-recoverer-noop.adapter.js +7 -0
- package/dist/job-recoverer-noop.adapter.js.map +1 -0
- package/dist/job-recoverer-sqlite.adapter.d.ts +13 -0
- package/dist/job-recoverer-sqlite.adapter.d.ts.map +1 -0
- package/dist/job-recoverer-sqlite.adapter.js +14 -0
- package/dist/job-recoverer-sqlite.adapter.js.map +1 -0
- package/dist/job-recoverer.port.d.ts +5 -0
- package/dist/job-recoverer.port.d.ts.map +1 -0
- package/dist/job-recoverer.port.js +2 -0
- package/dist/job-recoverer.port.js.map +1 -0
- package/dist/memory-consumption.service.d.ts +1 -2
- package/dist/memory-consumption.service.d.ts.map +1 -1
- package/dist/memory-consumption.service.js.map +1 -1
- package/dist/message-bus-strict.adapter.d.ts +19 -0
- package/dist/message-bus-strict.adapter.d.ts.map +1 -0
- package/dist/message-bus-strict.adapter.js +24 -0
- package/dist/message-bus-strict.adapter.js.map +1 -0
- package/dist/path-matcher.service.d.ts +6 -0
- package/dist/path-matcher.service.d.ts.map +1 -0
- package/dist/path-matcher.service.js +13 -0
- package/dist/path-matcher.service.js.map +1 -0
- package/dist/remote-file-storage-disk.adapter.d.ts +2 -6
- package/dist/remote-file-storage-disk.adapter.d.ts.map +1 -1
- package/dist/remote-file-storage-disk.adapter.js +1 -9
- package/dist/remote-file-storage-disk.adapter.js.map +1 -1
- package/dist/request-context-hono.adapter.d.ts +1 -1
- package/dist/request-context-hono.adapter.d.ts.map +1 -1
- package/dist/request-context-hono.adapter.js +3 -3
- package/dist/request-context-hono.adapter.js.map +1 -1
- package/dist/request-context.port.d.ts +4 -0
- package/dist/request-context.port.d.ts.map +1 -1
- package/dist/request-context.port.js +4 -1
- package/dist/request-context.port.js.map +1 -1
- package/dist/runtime-stats-provider-noop.adapter.d.ts +5 -0
- package/dist/runtime-stats-provider-noop.adapter.d.ts.map +1 -0
- package/dist/runtime-stats-provider-noop.adapter.js +14 -0
- package/dist/runtime-stats-provider-noop.adapter.js.map +1 -0
- package/dist/runtime-stats-provider-system.adapter.d.ts +12 -0
- package/dist/runtime-stats-provider-system.adapter.d.ts.map +1 -0
- package/dist/runtime-stats-provider-system.adapter.js +21 -0
- package/dist/runtime-stats-provider-system.adapter.js.map +1 -0
- package/dist/runtime-stats-provider.port.d.ts +18 -0
- package/dist/runtime-stats-provider.port.d.ts.map +1 -0
- package/dist/runtime-stats-provider.port.js +2 -0
- package/dist/runtime-stats-provider.port.js.map +1 -0
- package/dist/security-rule-violation-threshold.strategy.js +1 -1
- package/dist/security-rule-violation-threshold.strategy.js.map +1 -1
- package/dist/setup-hono.service.js +1 -1
- package/dist/setup-hono.service.js.map +1 -1
- package/dist/shield-auth-hono.strategy.d.ts.map +1 -1
- package/dist/shield-auth-hono.strategy.js +4 -3
- package/dist/shield-auth-hono.strategy.js.map +1 -1
- package/dist/shield-auth.strategy.d.ts +1 -5
- package/dist/shield-auth.strategy.d.ts.map +1 -1
- package/dist/shield-auth.strategy.js +3 -6
- package/dist/shield-auth.strategy.js.map +1 -1
- package/dist/shield-maintenance.strategy.d.ts.map +1 -1
- package/dist/shield-maintenance.strategy.js +2 -5
- package/dist/shield-maintenance.strategy.js.map +1 -1
- package/dist/temporary-file-absolute.adapter.d.ts +2 -6
- package/dist/temporary-file-absolute.adapter.d.ts.map +1 -1
- package/dist/temporary-file-absolute.adapter.js +1 -9
- package/dist/temporary-file-absolute.adapter.js.map +1 -1
- package/dist/timing.middleware.d.ts +0 -1
- package/dist/timing.middleware.d.ts.map +1 -1
- package/dist/timing.middleware.js +2 -9
- package/dist/timing.middleware.js.map +1 -1
- package/package.json +5 -5
- package/readme.md +15 -0
- package/src/atomic-file-writer-collecting.adapter.ts +14 -0
- package/src/atomic-file-writer-noop.adapter.ts +10 -0
- package/src/atomic-file-writer.adapter.ts +34 -0
- package/src/atomic-file-writer.port.ts +6 -0
- package/src/encryption-aes-gcm.adapter.ts +4 -4
- package/src/event-sourced-repository.adapter.ts +48 -0
- package/src/event-stream-accept.service.ts +10 -0
- package/src/gzip.adapter.ts +3 -3
- package/src/healthcheck.handler.ts +8 -11
- package/src/http-exception-errors.ts +2 -2
- package/src/http-logger-hono.middleware.ts +12 -6
- package/src/http-logger.middleware.ts +4 -7
- package/src/image-blur.adapter.ts +3 -13
- package/src/image-compressor.adapter.ts +3 -12
- package/src/image-exif-clear.adapter.ts +3 -11
- package/src/image-formatter.adapter.ts +3 -12
- package/src/image-grayscale.adapter.ts +3 -13
- package/src/image-processor.adapter.ts +3 -11
- package/src/image-resizer.adapter.ts +3 -12
- package/src/index.ts +13 -0
- package/src/job-pruner-sqlite.adapter.ts +2 -1
- package/src/job-queue-stats-provider-sqlite.adapter.ts +4 -4
- package/src/job-recoverer-collecting.adapter.ts +14 -0
- package/src/job-recoverer-noop.adapter.ts +8 -0
- package/src/job-recoverer-sqlite.adapter.ts +20 -0
- package/src/job-recoverer.port.ts +5 -0
- package/src/memory-consumption.service.ts +4 -1
- package/src/message-bus-strict.adapter.ts +33 -0
- package/src/path-matcher.service.ts +14 -0
- package/src/remote-file-storage-disk.adapter.ts +3 -17
- package/src/request-context-hono.adapter.ts +3 -4
- package/src/request-context.port.ts +5 -0
- package/src/runtime-stats-provider-noop.adapter.ts +16 -0
- package/src/runtime-stats-provider-system.adapter.ts +24 -0
- package/src/runtime-stats-provider.port.ts +16 -0
- package/src/security-rule-violation-threshold.strategy.ts +2 -2
- package/src/setup-hono.service.ts +1 -1
- package/src/shield-auth-hono.strategy.ts +4 -3
- package/src/shield-auth.strategy.ts +3 -8
- package/src/shield-maintenance.strategy.ts +2 -6
- package/src/temporary-file-absolute.adapter.ts +3 -18
- package/src/timing.middleware.ts +2 -10
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { AtomicFileWriterPort } from "./atomic-file-writer.port";
|
|
3
|
+
import type { FileWriterContent } from "./file-writer.port";
|
|
4
|
+
export declare class AtomicFileWriterCollectingAdapter implements AtomicFileWriterPort {
|
|
5
|
+
readonly written: Array<[tools.FilePathRelative | tools.FilePathAbsolute, FileWriterContent]>;
|
|
6
|
+
write(path: tools.FilePathRelative | tools.FilePathAbsolute, content: FileWriterContent): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=atomic-file-writer-collecting.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer-collecting.adapter.d.ts","sourceRoot":"","sources":["../src/atomic-file-writer-collecting.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,qBAAa,iCAAkC,YAAW,oBAAoB;IAC5E,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAM;IAE7F,KAAK,CACT,IAAI,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,EACrD,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAEf;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer-collecting.adapter.js","sourceRoot":"","sources":["../src/atomic-file-writer-collecting.adapter.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,iCAAiC;IACnC,OAAO,GAAgF,EAAE,CAAC;IAEnG,KAAK,CAAC,KAAK,CACT,IAAqD,EACrD,OAA0B;QAE1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { AtomicFileWriterPort } from "./atomic-file-writer.port";
|
|
3
|
+
import type { FileWriterContent } from "./file-writer.port";
|
|
4
|
+
export declare class AtomicFileWriterNoopAdapter implements AtomicFileWriterPort {
|
|
5
|
+
write(_path: tools.FilePathRelative | tools.FilePathAbsolute, _content: FileWriterContent): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=atomic-file-writer-noop.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer-noop.adapter.d.ts","sourceRoot":"","sources":["../src/atomic-file-writer-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,qBAAa,2BAA4B,YAAW,oBAAoB;IAChE,KAAK,CACT,KAAK,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,EACtD,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAAG;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer-noop.adapter.js","sourceRoot":"","sources":["../src/atomic-file-writer-noop.adapter.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,2BAA2B;IACtC,KAAK,CAAC,KAAK,CACT,KAAsD,EACtD,QAA2B,IACX,CAAC;CACpB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { AtomicFileWriterPort } from "./atomic-file-writer.port";
|
|
3
|
+
import type { FileCleanerPort } from "./file-cleaner.port";
|
|
4
|
+
import type { FileRenamerPort } from "./file-renamer.port";
|
|
5
|
+
import type { FileWriterContent, FileWriterPort } from "./file-writer.port";
|
|
6
|
+
import type { NonceProviderPort } from "./nonce-provider.port";
|
|
7
|
+
type Dependencies = {
|
|
8
|
+
FileCleaner: FileCleanerPort;
|
|
9
|
+
FileRenamer: FileRenamerPort;
|
|
10
|
+
FileWriter: FileWriterPort;
|
|
11
|
+
NonceProvider: NonceProviderPort;
|
|
12
|
+
};
|
|
13
|
+
export declare class AtomicFileWriterAdapter implements AtomicFileWriterPort {
|
|
14
|
+
private readonly deps;
|
|
15
|
+
constructor(deps: Dependencies);
|
|
16
|
+
write(path: tools.FilePathRelative | tools.FilePathAbsolute, content: FileWriterContent): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=atomic-file-writer.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer.adapter.d.ts","sourceRoot":"","sources":["../src/atomic-file-writer.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,KAAK,YAAY,GAAG;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,qBAAa,uBAAwB,YAAW,oBAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,KAAK,CACT,IAAI,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,EACrD,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAYf;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class AtomicFileWriterAdapter {
|
|
2
|
+
deps;
|
|
3
|
+
constructor(deps) {
|
|
4
|
+
this.deps = deps;
|
|
5
|
+
}
|
|
6
|
+
async write(path, content) {
|
|
7
|
+
const temporary = path.withFilename(path.getFilename().withSuffix(`-part-${this.deps.NonceProvider.generate()}`));
|
|
8
|
+
try {
|
|
9
|
+
await this.deps.FileWriter.write(temporary.get(), content);
|
|
10
|
+
await this.deps.FileRenamer.rename(temporary, path);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
await this.deps.FileCleaner.delete(temporary).catch(() => { });
|
|
14
|
+
throw error;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=atomic-file-writer.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer.adapter.js","sourceRoot":"","sources":["../src/atomic-file-writer.adapter.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,uBAAuB;IACL,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,KAAK,CACT,IAAqD,EACrD,OAA0B;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CACjC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC7E,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { FileWriterContent } from "./file-writer.port";
|
|
3
|
+
export interface AtomicFileWriterPort {
|
|
4
|
+
write(path: tools.FilePathRelative | tools.FilePathAbsolute, content: FileWriterContent): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=atomic-file-writer.port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer.port.d.ts","sourceRoot":"","sources":["../src/atomic-file-writer.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomic-file-writer.port.js","sourceRoot":"","sources":["../src/atomic-file-writer.port.ts"],"names":[],"mappings":""}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { AtomicFileWriterPort } from "./atomic-file-writer.port";
|
|
2
3
|
import type { CryptoKeyProviderPort } from "./crypto-key-provider.port";
|
|
3
4
|
import type { EncryptionPort, EncryptionRecipe } from "./encryption.port";
|
|
4
5
|
import type { FileInspectionPort } from "./file-inspection.port";
|
|
5
6
|
import type { FileReaderRawPort } from "./file-reader-raw.port";
|
|
6
|
-
import type { FileWriterPort } from "./file-writer.port";
|
|
7
7
|
type Dependencies = {
|
|
8
8
|
FileReaderRaw: FileReaderRawPort;
|
|
9
|
-
|
|
9
|
+
AtomicFileWriter: AtomicFileWriterPort;
|
|
10
10
|
CryptoKeyProvider: CryptoKeyProviderPort;
|
|
11
11
|
FileInspection: FileInspectionPort;
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption-aes-gcm.adapter.d.ts","sourceRoot":"","sources":["../src/encryption-aes-gcm.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"encryption-aes-gcm.adapter.d.ts","sourceRoot":"","sources":["../src/encryption-aes-gcm.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,KAAK,YAAY,GAAG;IAClB,aAAa,EAAE,iBAAiB,CAAC;IACjC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,iBAAiB,EAAE,qBAAqB,CAAC;IACzC,cAAc,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,4BAA4B;IAAK,WAAW;CAA6C,CAAC;AAEvG,qBAAa,uBAAwB,YAAW,cAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAahG;IAEK,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAYhG;IAEK,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CASvF;CACF"}
|
|
@@ -14,7 +14,7 @@ export class EncryptionAesGcmAdapter {
|
|
|
14
14
|
const iv = EncryptionIV.generate();
|
|
15
15
|
const plaintext = await this.deps.FileReaderRaw.read(recipe.input);
|
|
16
16
|
const encrypted = await CryptoAesGcm.encrypt(key, plaintext, iv);
|
|
17
|
-
await this.deps.
|
|
17
|
+
await this.deps.AtomicFileWriter.write(recipe.output, encrypted);
|
|
18
18
|
return recipe.output;
|
|
19
19
|
}
|
|
20
20
|
async decrypt(recipe) {
|
|
@@ -24,7 +24,7 @@ export class EncryptionAesGcmAdapter {
|
|
|
24
24
|
const key = await this.deps.CryptoKeyProvider.get();
|
|
25
25
|
const encrypted = new Uint8Array(await this.deps.FileReaderRaw.read(recipe.input));
|
|
26
26
|
const plaintext = await CryptoAesGcm.decrypt(key, encrypted);
|
|
27
|
-
await this.deps.
|
|
27
|
+
await this.deps.AtomicFileWriter.write(recipe.output, plaintext);
|
|
28
28
|
return recipe.output;
|
|
29
29
|
}
|
|
30
30
|
async view(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption-aes-gcm.adapter.js","sourceRoot":"","sources":["../src/encryption-aes-gcm.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encryption-aes-gcm.adapter.js","sourceRoot":"","sources":["../src/encryption-aes-gcm.adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWlD,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;AAEvG,MAAM,OAAO,uBAAuB;IACL,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,OAAO,CAAC,MAAwB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,EAAE,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAEjE,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjE,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAwB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAE7D,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjE,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAsD;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAEvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5E,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { GenericEvent } from "./event.types";
|
|
2
|
+
import type { EventStorePort } from "./event-store.port";
|
|
3
|
+
import type { EventStreamType } from "./event-stream.vo";
|
|
4
|
+
import type { EventValidatorRegistryPort } from "./event-validator-registry.port";
|
|
5
|
+
type EventSourcedAggregate<Event extends GenericEvent> = {
|
|
6
|
+
pullEvents(): ReadonlyArray<Event>;
|
|
7
|
+
};
|
|
8
|
+
type EventSourcedAggregateFactory<Id, Event extends GenericEvent, Aggregate extends EventSourcedAggregate<Event>, Deps> = {
|
|
9
|
+
registry: EventValidatorRegistryPort<Event>;
|
|
10
|
+
getStream: (id: Id) => EventStreamType;
|
|
11
|
+
build: (id: Id, events: ReadonlyArray<Event>, deps: Deps) => Aggregate;
|
|
12
|
+
};
|
|
13
|
+
type Config<Id, Event extends GenericEvent, Aggregate extends EventSourcedAggregate<Event>, Deps> = {
|
|
14
|
+
aggregate: EventSourcedAggregateFactory<Id, Event, Aggregate, Deps>;
|
|
15
|
+
};
|
|
16
|
+
type Dependencies<Event extends GenericEvent, Deps> = Deps & {
|
|
17
|
+
EventStore: EventStorePort<Event>;
|
|
18
|
+
};
|
|
19
|
+
export declare class EventSourcedRepositoryAdapter<Id, Event extends GenericEvent, Aggregate extends EventSourcedAggregate<Event>, Deps> {
|
|
20
|
+
private readonly config;
|
|
21
|
+
private readonly deps;
|
|
22
|
+
constructor(config: Config<Id, Event, Aggregate, Deps>, deps: NoInfer<Dependencies<Event, Deps>>);
|
|
23
|
+
load(id: Id): Promise<Aggregate>;
|
|
24
|
+
save(aggregate: Aggregate): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=event-sourced-repository.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-sourced-repository.adapter.d.ts","sourceRoot":"","sources":["../src/event-sourced-repository.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAElF,KAAK,qBAAqB,CAAC,KAAK,SAAS,YAAY,IAAI;IAAE,UAAU,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAEhG,KAAK,4BAA4B,CAC/B,EAAE,EACF,KAAK,SAAS,YAAY,EAC1B,SAAS,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAC9C,IAAI,IACF;IACF,QAAQ,EAAE,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC5C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,eAAe,CAAC;IACvC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC;CACxE,CAAC;AAEF,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,SAAS,YAAY,EAAE,SAAS,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI;IAClG,SAAS,EAAE,4BAA4B,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;CACrE,CAAC;AAEF,KAAK,YAAY,CAAC,KAAK,SAAS,YAAY,EAAE,IAAI,IAAI,IAAI,GAAG;IAAE,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC;AAEnG,qBAAa,6BAA6B,CACxC,EAAE,EACF,KAAK,SAAS,YAAY,EAC1B,SAAS,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAC9C,IAAI;IAGF,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFvB,YACmB,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAC1C,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EACvD;IAEE,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAOrC;IAEK,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9C;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export class EventSourcedRepositoryAdapter {
|
|
2
|
+
config;
|
|
3
|
+
deps;
|
|
4
|
+
constructor(config, deps) {
|
|
5
|
+
this.config = config;
|
|
6
|
+
this.deps = deps;
|
|
7
|
+
}
|
|
8
|
+
async load(id) {
|
|
9
|
+
const history = await this.deps.EventStore.find(this.config.aggregate.registry, this.config.aggregate.getStream(id));
|
|
10
|
+
return this.config.aggregate.build(id, history, this.deps);
|
|
11
|
+
}
|
|
12
|
+
async save(aggregate) {
|
|
13
|
+
await this.deps.EventStore.save(aggregate.pullEvents());
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=event-sourced-repository.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-sourced-repository.adapter.js","sourceRoot":"","sources":["../src/event-sourced-repository.adapter.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,6BAA6B;IAOrB,MAAM;IACN,IAAI;IAFvB,YACmB,MAA0C,EAC1C,IAAwC;sBADxC,MAAM;oBACN,IAAI;IACpB,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,EAAM;QACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CACpC,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAoB;QAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream-accept.service.d.ts","sourceRoot":"","sources":["../src/event-stream-accept.service.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOlD;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class EventStreamAccept {
|
|
2
|
+
static matches(accept) {
|
|
3
|
+
if (!accept)
|
|
4
|
+
return false;
|
|
5
|
+
return accept
|
|
6
|
+
.toLowerCase()
|
|
7
|
+
.split(",")
|
|
8
|
+
.some((type) => type.split(";")[0]?.trim() === "text/event-stream");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=event-stream-accept.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream-accept.service.js","sourceRoot":"","sources":["../src/event-stream-accept.service.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,MAA0B;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,OAAO,MAAM;aACV,WAAW,EAAE;aACb,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,mBAAmB,CAAC,CAAC;IACxE,CAAC;CACF"}
|
package/dist/gzip.adapter.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type { AtomicFileWriterPort } from "./atomic-file-writer.port";
|
|
2
3
|
import type { FileReaderRawPort } from "./file-reader-raw.port";
|
|
3
|
-
import type { FileWriterPort } from "./file-writer.port";
|
|
4
4
|
import type { GzipPort, GzipRecipe } from "./gzip.port";
|
|
5
5
|
type Dependencies = {
|
|
6
6
|
FileReaderRaw: FileReaderRawPort;
|
|
7
|
-
|
|
7
|
+
AtomicFileWriter: AtomicFileWriterPort;
|
|
8
8
|
};
|
|
9
9
|
export declare class GzipAdapter implements GzipPort {
|
|
10
10
|
private readonly deps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gzip.adapter.d.ts","sourceRoot":"","sources":["../src/gzip.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"gzip.adapter.d.ts","sourceRoot":"","sources":["../src/gzip.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,KAAK,YAAY,GAAG;IAAE,aAAa,EAAE,iBAAiB,CAAC;IAAC,gBAAgB,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEjG,qBAAa,WAAY,YAAW,QAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAOvF;CACF"}
|
package/dist/gzip.adapter.js
CHANGED
|
@@ -6,7 +6,7 @@ export class GzipAdapter {
|
|
|
6
6
|
async pack(recipe) {
|
|
7
7
|
const file = await this.deps.FileReaderRaw.read(recipe.input);
|
|
8
8
|
const archive = Bun.gzipSync(file);
|
|
9
|
-
await this.deps.
|
|
9
|
+
await this.deps.AtomicFileWriter.write(recipe.output, archive);
|
|
10
10
|
return recipe.output;
|
|
11
11
|
}
|
|
12
12
|
}
|
package/dist/gzip.adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gzip.adapter.js","sourceRoot":"","sources":["../src/gzip.adapter.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,WAAW;IACO,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,IAAI,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"gzip.adapter.js","sourceRoot":"","sources":["../src/gzip.adapter.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,WAAW;IACO,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,MAAkB;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEnC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/D,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -3,7 +3,7 @@ import * as tools from "@bgord/tools";
|
|
|
3
3
|
import type { BuildInfoType } from "./build-info.vo";
|
|
4
4
|
import type { ClockPort } from "./clock.port";
|
|
5
5
|
import type { CommitShaValueType } from "./commit-sha-value.vo";
|
|
6
|
-
import {
|
|
6
|
+
import type { EventLoopUtilizationSnapshot } from "./event-loop-utilization.service";
|
|
7
7
|
import type { JobQueueStatsProviderPort, JobQueueStatsSnapshot } from "./job-queue-stats-provider.port";
|
|
8
8
|
import type { LoggerStatsProviderPort, LoggerStatsSnapshot } from "./logger-stats-provider.port";
|
|
9
9
|
import type { NodeEnvironmentEnum } from "./node-env.vo";
|
|
@@ -11,7 +11,8 @@ import { Prerequisite, type PrerequisiteLabelType } from "./prerequisite.vo";
|
|
|
11
11
|
import { type PrerequisiteVerificationResult } from "./prerequisite-verifier.port";
|
|
12
12
|
import type { ReactiveConfigPort } from "./reactive-config.port";
|
|
13
13
|
import type { RedactorStrategy } from "./redactor.strategy";
|
|
14
|
-
import {
|
|
14
|
+
import type { RuntimeStatsProviderPort } from "./runtime-stats-provider.port";
|
|
15
|
+
import type { UptimeResultType } from "./uptime.service";
|
|
15
16
|
export declare enum HealthcheckStatusEnum {
|
|
16
17
|
healthy = "healthy",
|
|
17
18
|
degraded = "degraded",
|
|
@@ -20,6 +21,7 @@ export declare enum HealthcheckStatusEnum {
|
|
|
20
21
|
export type HealthcheckDependencies = {
|
|
21
22
|
Clock: ClockPort;
|
|
22
23
|
BuildInfoConfig: ReactiveConfigPort<BuildInfoType>;
|
|
24
|
+
RuntimeStatsProvider: RuntimeStatsProviderPort;
|
|
23
25
|
LoggerStatsProvider?: LoggerStatsProviderPort;
|
|
24
26
|
JobQueueStatsProvider?: JobQueueStatsProviderPort;
|
|
25
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healthcheck.handler.d.ts","sourceRoot":"","sources":["../src/healthcheck.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"healthcheck.handler.d.ts","sourceRoot":"","sources":["../src/healthcheck.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import os from "node:os";
|
|
2
2
|
import * as tools from "@bgord/tools";
|
|
3
|
-
import { EventLoopLag } from "./event-loop-lag.service";
|
|
4
|
-
import { EventLoopUtilization } from "./event-loop-utilization.service";
|
|
5
|
-
import { InFlightRequestsTracker } from "./in-flight-requests-tracker.service";
|
|
6
|
-
import { MemoryConsumption } from "./memory-consumption.service";
|
|
7
3
|
import { Prerequisite } from "./prerequisite.vo";
|
|
8
4
|
import { PrerequisiteVerificationOutcome, } from "./prerequisite-verifier.port";
|
|
9
5
|
import { PrerequisiteVerifierSelfAdapter } from "./prerequisite-verifier-self.adapter";
|
|
10
6
|
import { Stopwatch } from "./stopwatch.service";
|
|
11
|
-
import { Uptime } from "./uptime.service";
|
|
12
7
|
export var HealthcheckStatusEnum;
|
|
13
8
|
(function (HealthcheckStatusEnum) {
|
|
14
9
|
HealthcheckStatusEnum["healthy"] = "healthy";
|
|
@@ -50,9 +45,7 @@ export class HealthcheckHandler {
|
|
|
50
45
|
? HealthcheckStatusEnum.degraded
|
|
51
46
|
: HealthcheckStatusEnum.healthy;
|
|
52
47
|
const build = await this.deps.BuildInfoConfig.get();
|
|
53
|
-
const uptime =
|
|
54
|
-
const histogram = EventLoopLag.snapshot();
|
|
55
|
-
const memory = MemoryConsumption.snapshot();
|
|
48
|
+
const { uptime, memory, eventLoop, inFlight } = this.deps.RuntimeStatsProvider.getStats();
|
|
56
49
|
return {
|
|
57
50
|
status,
|
|
58
51
|
code: HealthcheckStatusCode[status],
|
|
@@ -91,10 +84,10 @@ export class HealthcheckHandler {
|
|
|
91
84
|
},
|
|
92
85
|
},
|
|
93
86
|
eventLoop: {
|
|
94
|
-
lag: { p50:
|
|
95
|
-
utilization:
|
|
87
|
+
lag: { p50: eventLoop.lag.p50.ms, p95: eventLoop.lag.p95.ms, p99: eventLoop.lag.p99.ms },
|
|
88
|
+
utilization: eventLoop.utilization,
|
|
96
89
|
},
|
|
97
|
-
inFlight
|
|
90
|
+
inFlight,
|
|
98
91
|
},
|
|
99
92
|
logger: this.deps.LoggerStatsProvider?.getStats(),
|
|
100
93
|
queue: await this.deps.JobQueueStatsProvider?.getStats(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healthcheck.handler.js","sourceRoot":"","sources":["../src/healthcheck.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"healthcheck.handler.js","sourceRoot":"","sources":["../src/healthcheck.handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FileUploaderError } from "./file-uploader.middleware";
|
|
2
|
+
import { RequestIdentityError } from "./request-context.port";
|
|
2
3
|
import { ShieldApiKeyStrategyError } from "./shield-api-key.strategy";
|
|
3
|
-
import { ShieldAuthStrategyError } from "./shield-auth.strategy";
|
|
4
4
|
import { ShieldBasicAuthStrategyError } from "./shield-basic-auth.strategy";
|
|
5
5
|
import { ShieldBodyLimitError } from "./shield-body-limit.strategy";
|
|
6
6
|
import { ShieldCsrfStrategyError } from "./shield-csrf.strategy";
|
|
@@ -14,7 +14,7 @@ import { ShieldTimeoutStrategyError } from "./shield-timeout.strategy";
|
|
|
14
14
|
import { ShieldWebhookStrategyError } from "./shield-webhook.strategy";
|
|
15
15
|
export const HttpExceptionErrors = {
|
|
16
16
|
ShieldApiKeyRejected: ShieldApiKeyStrategyError.Rejected,
|
|
17
|
-
ShieldAuthRejected:
|
|
17
|
+
ShieldAuthRejected: RequestIdentityError.Rejected,
|
|
18
18
|
ShieldBasicAuthRejected: ShieldBasicAuthStrategyError.Rejected,
|
|
19
19
|
ShieldBodyLimitTooBig: ShieldBodyLimitError.TooBig,
|
|
20
20
|
ShieldCsrfRejected: ShieldCsrfStrategyError.Rejected,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-exception-errors.js","sourceRoot":"","sources":["../src/http-exception-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"http-exception-errors.js","sourceRoot":"","sources":["../src/http-exception-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,oBAAoB,EAAE,yBAAyB,CAAC,QAAQ;IACxD,kBAAkB,EAAE,oBAAoB,CAAC,QAAQ;IACjD,uBAAuB,EAAE,4BAA4B,CAAC,QAAQ;IAC9D,qBAAqB,EAAE,oBAAoB,CAAC,MAAM;IAClD,kBAAkB,EAAE,uBAAuB,CAAC,QAAQ;IACpD,sBAAsB,EAAE,2BAA2B,CAAC,QAAQ;IAC5D,2BAA2B,EAAE,gCAAgC,CAAC,QAAQ;IACtE,yBAAyB,EAAE,8BAA8B,CAAC,QAAQ;IAClE,yBAAyB,EAAE,8BAA8B,CAAC,QAAQ;IAClE,uBAAuB,EAAE,4BAA4B,CAAC,QAAQ;IAC9D,uBAAuB,EAAE,4BAA4B,CAAC,QAAQ;IAC9D,qBAAqB,EAAE,0BAA0B,CAAC,QAAQ;IAC1D,qBAAqB,EAAE,0BAA0B,CAAC,QAAQ;IAC1D,GAAG,iBAAiB;CACZ,CAAC"}
|
|
@@ -6,5 +6,6 @@ export declare class HttpLoggerHonoMiddleware implements MiddlewareHonoPort {
|
|
|
6
6
|
constructor(deps: HttpLoggerMiddlewareDependencies, config?: HttpLoggerConfig);
|
|
7
7
|
handle(): MiddlewareHandler;
|
|
8
8
|
private static parseJSON;
|
|
9
|
+
private static isJSON;
|
|
9
10
|
}
|
|
10
11
|
//# sourceMappingURL=http-logger-hono.middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-logger-hono.middleware.d.ts","sourceRoot":"","sources":["../src/http-logger-hono.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,gCAAgC,EACtC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,YAAY,IAAI,EAAE,gCAAgC,EAAE,MAAM,CAAC,EAAE,gBAAgB,EAE5E;IAED,MAAM,IAAI,iBAAiB,
|
|
1
|
+
{"version":3,"file":"http-logger-hono.middleware.d.ts","sourceRoot":"","sources":["../src/http-logger-hono.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,gCAAgC,EACtC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjE,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,YAAY,IAAI,EAAE,gCAAgC,EAAE,MAAM,CAAC,EAAE,gBAAgB,EAE5E;IAED,MAAM,IAAI,iBAAiB,CAqB1B;mBAEoB,SAAS;IAQ9B,OAAO,CAAC,MAAM,CAAC,MAAM;CAKtB"}
|
|
@@ -10,25 +10,29 @@ export class HttpLoggerHonoMiddleware {
|
|
|
10
10
|
const context = new RequestContextHonoAdapter(c);
|
|
11
11
|
if (this.middleware.shouldSkip(context))
|
|
12
12
|
return await next();
|
|
13
|
-
const request = c.req.raw.clone();
|
|
14
13
|
const correlationId = c.get("correlationId");
|
|
15
|
-
const body = await HttpLoggerHonoMiddleware.parseJSON(
|
|
14
|
+
const body = await HttpLoggerHonoMiddleware.parseJSON(c.req.raw);
|
|
16
15
|
const { stopwatch } = this.middleware.before(context, correlationId, body);
|
|
17
16
|
await next();
|
|
18
|
-
const
|
|
19
|
-
const responseBody = await HttpLoggerHonoMiddleware.parseJSON(response);
|
|
17
|
+
const responseBody = await HttpLoggerHonoMiddleware.parseJSON(c.res);
|
|
20
18
|
this.middleware.after(context, correlationId, {
|
|
21
19
|
stopwatch,
|
|
22
|
-
status:
|
|
20
|
+
status: c.res.status,
|
|
23
21
|
responseBody,
|
|
24
22
|
});
|
|
25
23
|
};
|
|
26
24
|
}
|
|
27
25
|
static async parseJSON(resource) {
|
|
26
|
+
if (!HttpLoggerHonoMiddleware.isJSON(resource.headers.get("content-type")))
|
|
27
|
+
return undefined;
|
|
28
28
|
try {
|
|
29
|
-
return await resource.json();
|
|
29
|
+
return await resource.clone().json();
|
|
30
30
|
}
|
|
31
31
|
catch { }
|
|
32
32
|
}
|
|
33
|
+
static isJSON(contentType) {
|
|
34
|
+
const type = contentType?.split(";")[0]?.trim().toLowerCase();
|
|
35
|
+
return type === "application/json" || Boolean(type?.endsWith("+json"));
|
|
36
|
+
}
|
|
33
37
|
}
|
|
34
38
|
//# sourceMappingURL=http-logger-hono.middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-logger-hono.middleware.js","sourceRoot":"","sources":["../src/http-logger-hono.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,OAAO,wBAAwB;IAClB,UAAU,CAAuB;IAElD,YAAY,IAAsC,EAAE,MAAyB;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,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,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,MAAM,IAAI,EAAE,CAAC;YAE7D,MAAM,
|
|
1
|
+
{"version":3,"file":"http-logger-hono.middleware.js","sourceRoot":"","sources":["../src/http-logger-hono.middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,OAAO,wBAAwB;IAClB,UAAU,CAAuB;IAElD,YAAY,IAAsC,EAAE,MAAyB;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,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,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO,MAAM,IAAI,EAAE,CAAC;YAE7D,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YAE3E,MAAM,IAAI,EAAE,CAAC;YAEb,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAErE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,EAAE;gBAC5C,SAAS;gBACT,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;gBACpB,YAAY;aACb,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAA4B;QACzD,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAE7F,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,WAA0B;QAC9C,MAAM,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE9D,OAAO,IAAI,KAAK,kBAAkB,IAAI,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-logger.middleware.d.ts","sourceRoot":"","sources":["../src/http-logger.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-logger.middleware.d.ts","sourceRoot":"","sources":["../src/http-logger.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,eAAe,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,UAoBjC,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,CAAA;CAAE,CAAC;AAE7E,MAAM,MAAM,sBAAsB,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC;AAC9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;CACnB,CAAC;AAEF,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAF1B,YACmB,IAAI,EAAE,gCAAgC,EACtC,MAAM,CAAC,EAAE,gBAAgB,YAAA,EACxC;IAEJ,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,GAAG,OAAO,CAI9D;IAED,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,GAAE,GAAQ,GAAG,sBAAsB,CA0BxG;IAED,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAiBlG;CACF"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { EventStreamAccept } from "./event-stream-accept.service";
|
|
1
2
|
import { LogLevelEnum } from "./logger.port";
|
|
3
|
+
import { PathMatcher } from "./path-matcher.service";
|
|
2
4
|
import { Stopwatch } from "./stopwatch.service";
|
|
3
5
|
export const UNINFORMATIVE_HEADERS = [
|
|
4
6
|
"accept",
|
|
@@ -29,13 +31,9 @@ export class HttpLoggerMiddleware {
|
|
|
29
31
|
this.config = config;
|
|
30
32
|
}
|
|
31
33
|
shouldSkip(context) {
|
|
32
|
-
if (context.request.header("accept")
|
|
34
|
+
if (EventStreamAccept.matches(context.request.header("accept")))
|
|
33
35
|
return true;
|
|
34
|
-
return (this.config?.skip
|
|
35
|
-
if (rule instanceof URLPattern)
|
|
36
|
-
return rule.test({ pathname: context.request.path });
|
|
37
|
-
return context.request.path.startsWith(rule);
|
|
38
|
-
}) ?? false);
|
|
36
|
+
return PathMatcher.matches(this.config?.skip, context.request.path);
|
|
39
37
|
}
|
|
40
38
|
before(context, correlationId, body = {}) {
|
|
41
39
|
const client = { ip: context.identity.ip(), ua: context.identity.ua() };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-logger.middleware.js","sourceRoot":"","sources":["../src/http-logger.middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"http-logger.middleware.js","sourceRoot":"","sources":["../src/http-logger.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
-
import type {
|
|
3
|
-
import type { FileWriterPort } from "./file-writer.port";
|
|
2
|
+
import type { AtomicFileWriterPort } from "./atomic-file-writer.port";
|
|
4
3
|
import type { ImageBlurPort, ImageBlurStrategy } from "./image-blur.port";
|
|
5
|
-
import type { NonceProviderPort } from "./nonce-provider.port";
|
|
6
4
|
type Dependencies = {
|
|
7
|
-
|
|
8
|
-
FileWriter: FileWriterPort;
|
|
9
|
-
NonceProvider: NonceProviderPort;
|
|
5
|
+
AtomicFileWriter: AtomicFileWriterPort;
|
|
10
6
|
};
|
|
11
7
|
export declare class ImageBlurAdapter implements ImageBlurPort {
|
|
12
8
|
private readonly deps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-blur.adapter.d.ts","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"image-blur.adapter.d.ts","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,KAAK,YAAY,GAAG;IAClB,gBAAgB,EAAE,oBAAoB,CAAC;CACxC,CAAC;AAEF,qBAAa,gBAAiB,YAAW,aAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,YAAY,EAAI;IAE7C,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAS9F;CACF"}
|
|
@@ -5,12 +5,9 @@ export class ImageBlurAdapter {
|
|
|
5
5
|
}
|
|
6
6
|
async blur(recipe) {
|
|
7
7
|
const final = recipe.output;
|
|
8
|
-
const filename = final.getFilename();
|
|
9
|
-
const temporary = final.withFilename(filename.withSuffix(`-blurred-${this.deps.NonceProvider.generate()}`));
|
|
10
8
|
const blurred = await Bun.file(recipe.input.get()).image().placeholder();
|
|
11
9
|
const bytes = Buffer.from(blurred.substring(blurred.indexOf(",") + 1), "base64");
|
|
12
|
-
await this.deps.
|
|
13
|
-
await this.deps.FileRenamer.rename(temporary, final);
|
|
10
|
+
await this.deps.AtomicFileWriter.write(final, bytes);
|
|
14
11
|
return final;
|
|
15
12
|
}
|
|
16
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-blur.adapter.js","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-blur.adapter.js","sourceRoot":"","sources":["../src/image-blur.adapter.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,gBAAgB;IACE,IAAI;IAAjC,YAA6B,IAAkB;oBAAlB,IAAI;IAAiB,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEjF,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|