@bgord/bun 1.2.7 → 1.2.9
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/decorators.service.d.ts +0 -3
- package/dist/decorators.service.d.ts.map +1 -1
- package/dist/decorators.service.js +0 -13
- package/dist/decorators.service.js.map +1 -1
- package/dist/encryption-key.vo.d.ts.map +1 -1
- package/dist/encryption-key.vo.js +2 -1
- package/dist/encryption-key.vo.js.map +1 -1
- package/dist/event-store-like.types.d.ts +2 -3
- package/dist/event-store-like.types.d.ts.map +1 -1
- package/dist/file-draft-zip.service.d.ts +2 -4
- package/dist/file-draft-zip.service.d.ts.map +1 -1
- package/dist/file-draft-zip.service.js +5 -4
- package/dist/file-draft-zip.service.js.map +1 -1
- package/dist/file-draft.service.d.ts +4 -10
- package/dist/file-draft.service.d.ts.map +1 -1
- package/dist/file-draft.service.js +7 -6
- package/dist/file-draft.service.js.map +1 -1
- package/dist/file-hash-noop.adapter.js +1 -1
- package/dist/file-hash-noop.adapter.js.map +1 -1
- package/dist/file-uploader.middleware.d.ts +1 -1
- package/dist/file-uploader.middleware.d.ts.map +1 -1
- package/dist/file-uploader.middleware.js +2 -2
- package/dist/file-uploader.middleware.js.map +1 -1
- package/dist/prerequisites/ssl-certificate-expiry.d.ts +2 -2
- package/dist/prerequisites/ssl-certificate-expiry.d.ts.map +1 -1
- package/dist/prerequisites/ssl-certificate-expiry.js +3 -3
- package/dist/prerequisites/ssl-certificate-expiry.js.map +1 -1
- package/dist/remote-file-storage-noop.adapter.js +1 -1
- package/dist/remote-file-storage-noop.adapter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/decorators.service.ts +0 -15
- package/src/encryption-key.vo.ts +2 -1
- package/src/event-store-like.types.ts +3 -1
- package/src/file-draft-zip.service.ts +7 -6
- package/src/file-draft.service.ts +9 -5
- package/src/file-hash-noop.adapter.ts +1 -1
- package/src/file-uploader.middleware.ts +3 -5
- package/src/prerequisites/ssl-certificate-expiry.ts +4 -4
- package/src/remote-file-storage-noop.adapter.ts +1 -1
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import type { LoggerPort } from "./logger.port";
|
|
2
|
-
export declare class DecoratorTimeoutError extends Error {
|
|
3
|
-
}
|
|
4
2
|
export declare class Decorators {
|
|
5
3
|
private readonly logger;
|
|
6
4
|
private readonly rounding;
|
|
7
5
|
constructor(logger: LoggerPort);
|
|
8
6
|
duration(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
9
7
|
inspector(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
|
|
10
|
-
timeout(ms: number): (_target: any, _key: string, descriptor: PropertyDescriptor) => void;
|
|
11
8
|
}
|
|
12
9
|
//# sourceMappingURL=decorators.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.service.d.ts","sourceRoot":"","sources":["../src/decorators.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,qBAAa,
|
|
1
|
+
{"version":3,"file":"decorators.service.d.ts","sourceRoot":"","sources":["../src/decorators.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,qBAAa,UAAU;IAGT,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;gBAE3B,MAAM,EAAE,UAAU;IAE/C,QAAQ,KAGW,QAAQ,GAAG,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB;IA0BnF,SAAS,KAGU,QAAQ,GAAG,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB;CAuBpF"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import * as tools from "@bgord/tools";
|
|
2
|
-
export class DecoratorTimeoutError extends Error {
|
|
3
|
-
}
|
|
4
2
|
export class Decorators {
|
|
5
3
|
logger;
|
|
6
4
|
rounding = new tools.RoundToDecimal(2);
|
|
@@ -49,16 +47,5 @@ export class Decorators {
|
|
|
49
47
|
};
|
|
50
48
|
};
|
|
51
49
|
}
|
|
52
|
-
timeout(ms) {
|
|
53
|
-
return (_target, _key, descriptor) => {
|
|
54
|
-
const original = descriptor.value;
|
|
55
|
-
descriptor.value = async function (...args) {
|
|
56
|
-
return await Promise.race([
|
|
57
|
-
original.apply(this, args),
|
|
58
|
-
new Promise((_, reject) => setTimeout(() => reject(new DecoratorTimeoutError()), ms)),
|
|
59
|
-
]);
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
50
|
}
|
|
64
51
|
//# sourceMappingURL=decorators.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.service.js","sourceRoot":"","sources":["../src/decorators.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"decorators.service.js","sourceRoot":"","sources":["../src/decorators.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,MAAM,OAAO,UAAU;IAGQ;IAFZ,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAExD,YAA6B,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAEnD,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;YAC/E,MAAM,SAAS;YACb,mBAAmB;YACnB,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,WAAW,EAAE,IAAI,IAAI,cAAc,CAAC;YAEzF,MAAM,QAAQ,GAAoC,UAAU,CAAC,KAAK,CAAC;YAEnE,MAAM,KAAK,GAAG,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;YAE5C,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAe;gBAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,GAAG,KAAK,WAAW;oBAC5B,SAAS,EAAE,OAAO;oBAClB,SAAS,EAAE,wBAAwB;oBACnC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE;iBAC9D,CAAC,CAAC;gBAEH,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,UAA8B;YAC/E,MAAM,SAAS;YACb,mBAAmB;YACnB,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,WAAW,EAAE,IAAI,IAAI,cAAc,CAAC;YAEzF,MAAM,QAAQ,GAAoC,UAAU,CAAC,KAAK,CAAC;YAEnE,MAAM,KAAK,GAAG,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;YAE5C,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAe;gBACnD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,GAAG,KAAK,YAAY;oBAC7B,SAAS,EAAE,OAAO;oBAClB,SAAS,EAAE,sBAAsB;oBACjC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;iBAC7C,CAAC,CAAC;gBAEH,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption-key.vo.d.ts","sourceRoot":"","sources":["../src/encryption-key.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;
|
|
1
|
+
{"version":3,"file":"encryption-key.vo.d.ts","sourceRoot":"","sources":["../src/encryption-key.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,kBAAkB;;;CAGrB,CAAC;AAKX,eAAO,MAAM,aAAa,kDAGD,CAAC;AAE1B,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -3,7 +3,8 @@ export const EncryptionKeyError = {
|
|
|
3
3
|
Type: "encryption.key.type",
|
|
4
4
|
InvalidHex: "encryption.key.invalid.hex",
|
|
5
5
|
};
|
|
6
|
-
|
|
6
|
+
// 64 hex chars allowed
|
|
7
|
+
const CHARS_WHITELIST = /^[a-fA-F0-9]{64}$/;
|
|
7
8
|
export const EncryptionKey = z
|
|
8
9
|
.string(EncryptionKeyError.Type)
|
|
9
10
|
.regex(CHARS_WHITELIST, EncryptionKeyError.InvalidHex)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption-key.vo.js","sourceRoot":"","sources":["../src/encryption-key.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,qBAAqB;IAC3B,UAAU,EAAE,4BAA4B;CAChC,CAAC;AAEX,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;KAC/B,KAAK,CAAC,eAAe,EAAE,kBAAkB,CAAC,UAAU,CAAC;KACrD,KAAK,CAAC,eAAe,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"encryption-key.vo.js","sourceRoot":"","sources":["../src/encryption-key.vo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,qBAAqB;IAC3B,UAAU,EAAE,4BAA4B;CAChC,CAAC;AAEX,uBAAuB;AACvB,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;KAC/B,KAAK,CAAC,eAAe,EAAE,kBAAkB,CAAC,UAAU,CAAC;KACrD,KAAK,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import type * as tools from "@bgord/tools";
|
|
1
2
|
export type EventStoreLike<E extends {
|
|
2
3
|
name: string;
|
|
3
4
|
}> = {
|
|
4
5
|
save(events: E[]): Promise<unknown>;
|
|
5
|
-
saveAfter(events: E[],
|
|
6
|
-
ms: number;
|
|
7
|
-
}): Promise<unknown>;
|
|
6
|
+
saveAfter(events: E[], offset: tools.Duration): Promise<unknown>;
|
|
8
7
|
};
|
|
9
8
|
//# sourceMappingURL=event-store-like.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-store-like.types.d.ts","sourceRoot":"","sources":["../src/event-store-like.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,IAAI;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"event-store-like.types.d.ts","sourceRoot":"","sources":["../src/event-store-like.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,IAAI;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
+
import * as tools from "@bgord/tools";
|
|
1
2
|
import { FileDraft } from "./file-draft.service";
|
|
2
3
|
export declare class FileDraftZip extends FileDraft {
|
|
3
4
|
private readonly parts;
|
|
4
|
-
constructor(
|
|
5
|
-
filename: string;
|
|
6
|
-
parts: FileDraft[];
|
|
7
|
-
});
|
|
5
|
+
constructor(basename: tools.BasenameType, parts: FileDraft[]);
|
|
8
6
|
create(): Promise<Buffer>;
|
|
9
7
|
}
|
|
10
8
|
//# sourceMappingURL=file-draft-zip.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-draft-zip.service.d.ts","sourceRoot":"","sources":["../src/file-draft-zip.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-draft-zip.service.d.ts","sourceRoot":"","sources":["../src/file-draft-zip.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,qBAAa,YAAa,SAAQ,SAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADtB,QAAQ,EAAE,KAAK,CAAC,YAAY,EACX,KAAK,EAAE,SAAS,EAAE;IAO/B,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;CAgBhC"}
|
|
@@ -3,16 +3,17 @@ import { ZipFile } from "yazl";
|
|
|
3
3
|
import { FileDraft } from "./file-draft.service";
|
|
4
4
|
export class FileDraftZip extends FileDraft {
|
|
5
5
|
parts;
|
|
6
|
-
constructor(
|
|
7
|
-
super(
|
|
8
|
-
this.parts =
|
|
6
|
+
constructor(basename, parts) {
|
|
7
|
+
super(basename, tools.MIMES.zip);
|
|
8
|
+
this.parts = parts;
|
|
9
|
+
this.parts = parts;
|
|
9
10
|
}
|
|
10
11
|
// @ts-expect-error
|
|
11
12
|
async create() {
|
|
12
13
|
const zip = new ZipFile();
|
|
13
14
|
const chunks = [];
|
|
14
15
|
for (const part of this.parts) {
|
|
15
|
-
zip.addReadStream((await part.create()), part.
|
|
16
|
+
zip.addReadStream((await part.create()), part.filename.get());
|
|
16
17
|
}
|
|
17
18
|
zip.end();
|
|
18
19
|
zip.outputStream.on("data", (buffer) => chunks.push(buffer));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-draft-zip.service.js","sourceRoot":"","sources":["../src/file-draft-zip.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,YAAa,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"file-draft-zip.service.js","sourceRoot":"","sources":["../src/file-draft-zip.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,YAAa,SAAQ,SAAS;IAGtB;IAFnB,YACE,QAA4B,EACX,KAAkB;QAEnC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAFhB,UAAK,GAAL,KAAK,CAAa;QAGnC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,MAAM;QACV,MAAM,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,CAAC;QAEV,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAErE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import type { ReadableStream } from "node:stream/web";
|
|
2
|
-
import
|
|
2
|
+
import * as tools from "@bgord/tools";
|
|
3
3
|
export type DraftBody = BodyInit | NodeJS.ReadableStream | ReadableStream;
|
|
4
4
|
export declare abstract class FileDraft {
|
|
5
|
-
readonly
|
|
6
|
-
|
|
7
|
-
mime: tools.Mime;
|
|
8
|
-
};
|
|
9
|
-
constructor(config: {
|
|
10
|
-
filename: string;
|
|
11
|
-
mime: tools.Mime;
|
|
12
|
-
});
|
|
5
|
+
readonly filename: tools.Filename;
|
|
6
|
+
constructor(basename: tools.BasenameType, mime: tools.Mime);
|
|
13
7
|
getHeaders(): Headers;
|
|
14
8
|
abstract create(): DraftBody | Promise<DraftBody>;
|
|
15
9
|
toResponse(): Promise<Response>;
|
|
16
10
|
toAttachment(): Promise<{
|
|
17
|
-
filename:
|
|
11
|
+
filename: tools.Filename;
|
|
18
12
|
content: DraftBody;
|
|
19
13
|
contentType: string;
|
|
20
14
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-draft.service.d.ts","sourceRoot":"","sources":["../src/file-draft.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"file-draft.service.d.ts","sourceRoot":"","sources":["../src/file-draft.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;AAE1E,8BAAsB,SAAS;IAC7B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;gBAEtB,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI;IAI1D,UAAU,IAAI,OAAO;IAOrB,QAAQ,CAAC,MAAM,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAE3C,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;IAM/B,YAAY;;;;;CAKnB"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import * as tools from "@bgord/tools";
|
|
1
2
|
export class FileDraft {
|
|
2
|
-
|
|
3
|
-
constructor(
|
|
4
|
-
this.
|
|
3
|
+
filename;
|
|
4
|
+
constructor(basename, mime) {
|
|
5
|
+
this.filename = tools.Filename.fromPartsSafe(basename, mime.toExtension());
|
|
5
6
|
}
|
|
6
7
|
getHeaders() {
|
|
7
8
|
return new Headers({
|
|
8
|
-
"Content-Type": this.
|
|
9
|
-
"Content-Disposition": `attachment; filename="${this.
|
|
9
|
+
"Content-Type": this.filename.getMime().toString(),
|
|
10
|
+
"Content-Disposition": `attachment; filename="${this.filename.get()}"`,
|
|
10
11
|
});
|
|
11
12
|
}
|
|
12
13
|
async toResponse() {
|
|
@@ -15,7 +16,7 @@ export class FileDraft {
|
|
|
15
16
|
}
|
|
16
17
|
async toAttachment() {
|
|
17
18
|
const body = await this.create();
|
|
18
|
-
return { filename: this.
|
|
19
|
+
return { filename: this.filename, content: body, contentType: this.filename.getMime().toString() };
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=file-draft.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-draft.service.js","sourceRoot":"","sources":["../src/file-draft.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-draft.service.js","sourceRoot":"","sources":["../src/file-draft.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,MAAM,OAAgB,SAAS;IACpB,QAAQ,CAAiB;IAElC,YAAY,QAA4B,EAAE,IAAgB;QACxD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,UAAU;QACR,OAAO,IAAI,OAAO,CAAC;YACjB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAClD,qBAAqB,EAAE,yBAAyB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG;SACvE,CAAC,CAAC;IACL,CAAC;IAID,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEjC,OAAO,IAAI,QAAQ,CAAC,IAAgB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAEjC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACrG,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-hash-noop.adapter.js","sourceRoot":"","sources":["../src/file-hash-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,MAAM,OAAO,mBAAmB;IAC9B,KAAK,CAAC,IAAI,CAAC,KAAsD;QAC/D,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"file-hash-noop.adapter.js","sourceRoot":"","sources":["../src/file-hash-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,MAAM,OAAO,mBAAmB;IAC9B,KAAK,CAAC,IAAI,CAAC,KAAsD;QAC/D,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;YAC9C,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;SACvB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as tools from "@bgord/tools";
|
|
2
2
|
import { HTTPException } from "hono/http-exception";
|
|
3
3
|
type FileUploaderConfigType = {
|
|
4
|
-
mimeTypes:
|
|
4
|
+
mimeTypes: tools.Mime[];
|
|
5
5
|
maxFilesSize: tools.Size;
|
|
6
6
|
};
|
|
7
7
|
export declare const InvalidFileMimeTypeError: HTTPException;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader.middleware.d.ts","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,KAAK,sBAAsB,GAAG;IAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"file-uploader.middleware.d.ts","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,KAAK,sBAAsB,GAAG;IAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAA;CAAE,CAAC;AAEpF,eAAO,MAAM,wBAAwB,eAAsE,CAAC;AAC5G,eAAO,MAAM,eAAe,eAA4D,CAAC;AAEzF,qBAAa,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,sBAAsB;CAwB/C"}
|
|
@@ -18,8 +18,8 @@ export class FileUploader {
|
|
|
18
18
|
const file = body.get("file");
|
|
19
19
|
if (!(file instanceof File))
|
|
20
20
|
throw InvalidFileMimeTypeError;
|
|
21
|
-
const contentType =
|
|
22
|
-
const accepted = config.mimeTypes.some((
|
|
21
|
+
const contentType = tools.Mime.fromString(file.type);
|
|
22
|
+
const accepted = config.mimeTypes.some((accepted) => accepted.isSatisfiedBy(contentType));
|
|
23
23
|
if (!accepted)
|
|
24
24
|
throw InvalidFileMimeTypeError;
|
|
25
25
|
return next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-uploader.middleware.js","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,MAA8B;QAC5C,OAAO;YACL,SAAS,CAAC;gBACR,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBACtC,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,eAAe,CAAC;gBACxB,CAAC;aACF,CAAC;YAEF,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE9B,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC;oBAAE,MAAM,wBAAwB,CAAC;gBAE5D,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"file-uploader.middleware.js","sourceRoot":"","sources":["../src/file-uploader.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;AAC5G,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAEzF,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,QAAQ,CAAC,MAA8B;QAC5C,OAAO;YACL,SAAS,CAAC;gBACR,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBACtC,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,eAAe,CAAC;gBACxB,CAAC;aACF,CAAC;YAEF,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAEhD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE9B,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC;oBAAE,MAAM,wBAAwB,CAAC;gBAE5D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;gBAE1F,IAAI,CAAC,QAAQ;oBAAE,MAAM,wBAAwB,CAAC;gBAC9C,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -5,11 +5,11 @@ export declare class PrerequisiteSSLCertificateExpiry implements prereqs.Prerequ
|
|
|
5
5
|
readonly kind = "ssl-certificate-expiry";
|
|
6
6
|
readonly label: prereqs.PrerequisiteLabelType;
|
|
7
7
|
readonly enabled?: boolean;
|
|
8
|
-
private readonly
|
|
8
|
+
private readonly hostname;
|
|
9
9
|
private readonly days;
|
|
10
10
|
private readonly CertificateInspector;
|
|
11
11
|
constructor(config: prereqs.PrerequisiteConfigType & {
|
|
12
|
-
|
|
12
|
+
hostname: string;
|
|
13
13
|
days: number;
|
|
14
14
|
CertificateInspector: CertificateInspectorPort;
|
|
15
15
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssl-certificate-expiry.d.ts","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,gCAAiC,YAAW,OAAO,CAAC,YAAY;IAC3E,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"ssl-certificate-expiry.d.ts","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,gCAAiC,YAAW,OAAO,CAAC,YAAY;IAC3E,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA2B;gBAG9D,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,oBAAoB,EAAE,wBAAwB,CAAC;KAChD;IAUG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAgB/D"}
|
|
@@ -4,13 +4,13 @@ export class PrerequisiteSSLCertificateExpiry {
|
|
|
4
4
|
kind = "ssl-certificate-expiry";
|
|
5
5
|
label;
|
|
6
6
|
enabled = true;
|
|
7
|
-
|
|
7
|
+
hostname;
|
|
8
8
|
days;
|
|
9
9
|
CertificateInspector;
|
|
10
10
|
constructor(config) {
|
|
11
11
|
this.label = config.label;
|
|
12
12
|
this.enabled = config.enabled === undefined ? true : config.enabled;
|
|
13
|
-
this.
|
|
13
|
+
this.hostname = config.hostname;
|
|
14
14
|
this.days = config.days;
|
|
15
15
|
this.CertificateInspector = config.CertificateInspector;
|
|
16
16
|
}
|
|
@@ -18,7 +18,7 @@ export class PrerequisiteSSLCertificateExpiry {
|
|
|
18
18
|
const stopwatch = new tools.Stopwatch(clock.now());
|
|
19
19
|
if (!this.enabled)
|
|
20
20
|
return prereqs.Verification.undetermined(stopwatch.stop());
|
|
21
|
-
const result = await this.CertificateInspector.inspect(this.
|
|
21
|
+
const result = await this.CertificateInspector.inspect(this.hostname);
|
|
22
22
|
if (!result.success)
|
|
23
23
|
return prereqs.Verification.failure(stopwatch.stop(), { message: "Certificate unavailable" });
|
|
24
24
|
if (result.daysRemaining <= this.days) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssl-certificate-expiry.js","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,gCAAgC;IAClC,IAAI,GAAG,wBAAwB,CAAC;IAChC,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,
|
|
1
|
+
{"version":3,"file":"ssl-certificate-expiry.js","sourceRoot":"","sources":["../../src/prerequisites/ssl-certificate-expiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,gCAAgC;IAClC,IAAI,GAAG,wBAAwB,CAAC;IAChC,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,oBAAoB,CAA2B;IAEhE,YACE,MAIC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,OAAO;YACjB,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAChG,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;gBACpD,OAAO,EAAE,GAAG,MAAM,CAAC,aAAa,iBAAiB;aAClD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-file-storage-noop.adapter.js","sourceRoot":"","sources":["../src/remote-file-storage-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAatC,MAAM,OAAO,4BAA4B;IAIpB;IACA;IAJF,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,CAAC;IAE1F,YACmB,IAAkB,EAClB,MAAoC;QADpC,SAAI,GAAJ,IAAI,CAAc;QAClB,WAAM,GAAN,MAAM,CAA8B;IACpD,CAAC;IAEJ,SAAS,CAAC,GAAwB;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAClD,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,GAAG,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA6B;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,iDAAiD;YAC1D,QAAQ,EAAE,EAAE,KAAK,EAAE;YACnB,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACnC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"remote-file-storage-noop.adapter.js","sourceRoot":"","sources":["../src/remote-file-storage-noop.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAatC,MAAM,OAAO,4BAA4B;IAIpB;IACA;IAJF,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAE,CAAC;IAE1F,YACmB,IAAkB,EAClB,MAAoC;QADpC,SAAI,GAAJ,IAAI,CAAc;QAClB,WAAM,GAAN,MAAM,CAA8B;IACpD,CAAC;IAEJ,SAAS,CAAC,GAAwB;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAClD,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,GAAG,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA6B;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,iDAAiD;YAC1D,QAAQ,EAAE,EAAE,KAAK,EAAE;YACnB,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACnC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAwB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,0CAA0C;YACnD,QAAQ,EAAE,EAAE,GAAG,EAAE;YACjB,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAwB;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,+CAA+C;YACxD,QAAQ,EAAE,EAAE,GAAG,EAAE;YACjB,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAwB;QACnC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,4CAA4C;YACrD,QAAQ,EAAE,EAAE,GAAG,EAAE;YACjB,GAAG,IAAI,CAAC,IAAI;SACb,CAAC,CAAC;IACL,CAAC;CACF"}
|