@bgord/bun 1.10.2 → 1.10.4
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/csv-stringifier.adapter.d.ts +10 -0
- package/dist/csv-stringifier.adapter.d.ts.map +1 -1
- package/dist/csv-stringifier.adapter.js +23 -2
- package/dist/csv-stringifier.adapter.js.map +1 -1
- package/dist/file-draft-zip.service.d.ts +10 -1
- package/dist/file-draft-zip.service.d.ts.map +1 -1
- package/dist/file-draft-zip.service.js +22 -3
- package/dist/file-draft-zip.service.js.map +1 -1
- package/dist/image-alpha-sharp.adapter.d.ts +13 -2
- package/dist/image-alpha-sharp.adapter.d.ts.map +1 -1
- package/dist/image-alpha-sharp.adapter.js +23 -5
- package/dist/image-alpha-sharp.adapter.js.map +1 -1
- package/dist/image-blur-sharp.adapter.d.ts +13 -2
- package/dist/image-blur-sharp.adapter.d.ts.map +1 -1
- package/dist/image-blur-sharp.adapter.js +23 -5
- package/dist/image-blur-sharp.adapter.js.map +1 -1
- package/dist/image-compressor-sharp.adapter.d.ts +13 -2
- package/dist/image-compressor-sharp.adapter.d.ts.map +1 -1
- package/dist/image-compressor-sharp.adapter.js +24 -6
- package/dist/image-compressor-sharp.adapter.js.map +1 -1
- package/dist/image-exif-clear-sharp.adapter.d.ts +13 -2
- package/dist/image-exif-clear-sharp.adapter.d.ts.map +1 -1
- package/dist/image-exif-clear-sharp.adapter.js +23 -5
- package/dist/image-exif-clear-sharp.adapter.js.map +1 -1
- package/dist/image-formatter-sharp.adapter.d.ts +13 -2
- package/dist/image-formatter-sharp.adapter.d.ts.map +1 -1
- package/dist/image-formatter-sharp.adapter.js +23 -5
- package/dist/image-formatter-sharp.adapter.js.map +1 -1
- package/dist/image-info-sharp.adapter.d.ts +13 -2
- package/dist/image-info-sharp.adapter.d.ts.map +1 -1
- package/dist/image-info-sharp.adapter.js +23 -5
- package/dist/image-info-sharp.adapter.js.map +1 -1
- package/dist/image-processor-sharp.adapter.d.ts +13 -2
- package/dist/image-processor-sharp.adapter.d.ts.map +1 -1
- package/dist/image-processor-sharp.adapter.js +23 -5
- package/dist/image-processor-sharp.adapter.js.map +1 -1
- package/dist/image-resizer-sharp.adapter.d.ts +13 -2
- package/dist/image-resizer-sharp.adapter.d.ts.map +1 -1
- package/dist/image-resizer-sharp.adapter.js +23 -5
- package/dist/image-resizer-sharp.adapter.js.map +1 -1
- package/dist/mailer-resend.adapter.d.ts +1 -1
- package/dist/mailer-resend.adapter.d.ts.map +1 -1
- package/dist/mailer-resend.adapter.js.map +1 -1
- package/dist/mailer-smtp.adapter.d.ts +3 -3
- package/dist/mailer-smtp.adapter.d.ts.map +1 -1
- package/dist/mailer-smtp.adapter.js +1 -2
- package/dist/mailer-smtp.adapter.js.map +1 -1
- package/dist/prerequisite-verifier-port.adapter.d.ts.map +1 -1
- package/dist/prerequisite-verifier-port.adapter.js +1 -1
- package/dist/prerequisite-verifier-port.adapter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -13
- package/src/csv-stringifier.adapter.ts +26 -2
- package/src/file-draft-zip.service.ts +26 -3
- package/src/image-alpha-sharp.adapter.ts +29 -6
- package/src/image-blur-sharp.adapter.ts +29 -6
- package/src/image-compressor-sharp.adapter.ts +31 -8
- package/src/image-exif-clear-sharp.adapter.ts +29 -6
- package/src/image-formatter-sharp.adapter.ts +29 -6
- package/src/image-info-sharp.adapter.ts +29 -6
- package/src/image-processor-sharp.adapter.ts +29 -6
- package/src/image-resizer-sharp.adapter.ts +29 -6
- package/src/mailer-resend.adapter.ts +2 -1
- package/src/mailer-smtp.adapter.ts +5 -6
- package/src/prerequisite-verifier-port.adapter.ts +3 -1
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import type { CsvColumnType, CsvRowType, CsvStringifierPort } from "./csv-stringifier.port";
|
|
2
|
+
export declare const CsvStringifierAdapterError: {
|
|
3
|
+
MissingDependency: string;
|
|
4
|
+
};
|
|
5
|
+
type CsvLibrary = typeof import("csv");
|
|
2
6
|
export declare class CsvStringifierAdapter implements CsvStringifierPort {
|
|
7
|
+
private readonly csv;
|
|
8
|
+
private constructor();
|
|
9
|
+
static build(): Promise<CsvStringifierAdapter>;
|
|
10
|
+
private static resolve;
|
|
11
|
+
static import(): Promise<CsvLibrary>;
|
|
3
12
|
process(columns: CsvColumnType[], data: CsvRowType[]): Promise<string>;
|
|
4
13
|
}
|
|
14
|
+
export {};
|
|
5
15
|
//# sourceMappingURL=csv-stringifier.adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv-stringifier.adapter.d.ts","sourceRoot":"","sources":["../src/csv-stringifier.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"csv-stringifier.adapter.d.ts","sourceRoot":"","sources":["../src/csv-stringifier.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5F,eAAO,MAAM,0BAA0B;;CAEtC,CAAC;AAEF,KAAK,UAAU,GAAG,cAAc,KAAK,CAAC,CAAC;AAEvC,qBAAa,qBAAsB,YAAW,kBAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAxC,OAAO;WAEM,KAAK,IAAI,OAAO,CAAC,qBAAqB,CAAC;mBAI/B,OAAO;WAQf,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAKpC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAG7E"}
|
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
import { text } from "node:stream/consumers";
|
|
2
|
-
|
|
2
|
+
export const CsvStringifierAdapterError = {
|
|
3
|
+
MissingDependency: "csv.stringifier.adapter.error.missing.dependency",
|
|
4
|
+
};
|
|
3
5
|
export class CsvStringifierAdapter {
|
|
6
|
+
csv;
|
|
7
|
+
constructor(csv) {
|
|
8
|
+
this.csv = csv;
|
|
9
|
+
}
|
|
10
|
+
static async build() {
|
|
11
|
+
return new CsvStringifierAdapter(await CsvStringifierAdapter.resolve());
|
|
12
|
+
}
|
|
13
|
+
static async resolve() {
|
|
14
|
+
try {
|
|
15
|
+
return await CsvStringifierAdapter.import();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
throw new Error(CsvStringifierAdapterError.MissingDependency);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static async import() {
|
|
22
|
+
const name = "c" + "sv"; // Bun does not resolve dynamic imports with a dynamic name
|
|
23
|
+
return import(name);
|
|
24
|
+
}
|
|
4
25
|
async process(columns, data) {
|
|
5
|
-
return text(stringify(data, { header: true, columns }));
|
|
26
|
+
return text(this.csv.stringify(data, { header: true, columns }));
|
|
6
27
|
}
|
|
7
28
|
}
|
|
8
29
|
//# sourceMappingURL=csv-stringifier.adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv-stringifier.adapter.js","sourceRoot":"","sources":["../src/csv-stringifier.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"csv-stringifier.adapter.js","sourceRoot":"","sources":["../src/csv-stringifier.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,iBAAiB,EAAE,kDAAkD;CACtE,CAAC;AAIF,MAAM,OAAO,qBAAqB;IACK;IAArC,YAAqC,GAAe;QAAf,QAAG,GAAH,GAAG,CAAY;IAAG,CAAC;IAExD,MAAM,CAAC,KAAK,CAAC,KAAK;QAChB,OAAO,IAAI,qBAAqB,CAAC,MAAM,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACpF,OAAO,MAAM,CAAC,IAAI,CAAwB,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAwB,EAAE,IAAkB;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;CACF"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import * as tools from "@bgord/tools";
|
|
2
2
|
import { FileDraft } from "./file-draft.service";
|
|
3
|
+
export declare const FileDraftZipError: {
|
|
4
|
+
MissingDependency: string;
|
|
5
|
+
};
|
|
6
|
+
type YazlLibrary = typeof import("yazl");
|
|
3
7
|
export declare class FileDraftZip extends FileDraft {
|
|
4
8
|
private readonly parts;
|
|
5
|
-
|
|
9
|
+
private readonly yazl;
|
|
10
|
+
private constructor();
|
|
11
|
+
static build(basename: tools.BasenameType, parts: FileDraft[]): Promise<FileDraftZip>;
|
|
12
|
+
private static resolve;
|
|
13
|
+
static import(): Promise<YazlLibrary>;
|
|
6
14
|
create(): Promise<BodyInit>;
|
|
7
15
|
}
|
|
16
|
+
export {};
|
|
8
17
|
//# 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":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
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;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,eAAO,MAAM,iBAAiB;;CAE7B,CAAC;AAEF,KAAK,WAAW,GAAG,cAAc,MAAM,CAAC,CAAC;AAEzC,qBAAa,YAAa,SAAQ,SAAS;IAGvC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHvB,OAAO;WAQM,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;mBAItE,OAAO;WAQf,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAKrC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC;CAwBlC"}
|
|
@@ -1,15 +1,34 @@
|
|
|
1
1
|
import { Readable } from "node:stream";
|
|
2
2
|
import * as tools from "@bgord/tools";
|
|
3
|
-
import { ZipFile } from "yazl";
|
|
4
3
|
import { FileDraft } from "./file-draft.service";
|
|
4
|
+
export const FileDraftZipError = {
|
|
5
|
+
MissingDependency: "file.draft.zip.error.missing.dependency",
|
|
6
|
+
};
|
|
5
7
|
export class FileDraftZip extends FileDraft {
|
|
6
8
|
parts;
|
|
7
|
-
|
|
9
|
+
yazl;
|
|
10
|
+
constructor(basename, parts, yazl) {
|
|
8
11
|
super(basename, tools.Extension.parse("zip"), tools.Mimes.zip.mime);
|
|
9
12
|
this.parts = parts;
|
|
13
|
+
this.yazl = yazl;
|
|
14
|
+
}
|
|
15
|
+
static async build(basename, parts) {
|
|
16
|
+
return new FileDraftZip(basename, parts, await FileDraftZip.resolve());
|
|
17
|
+
}
|
|
18
|
+
static async resolve() {
|
|
19
|
+
try {
|
|
20
|
+
return await FileDraftZip.import();
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw new Error(FileDraftZipError.MissingDependency);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
static async import() {
|
|
27
|
+
const name = "ya" + "zl"; // Bun does not resolve dynamic imports with a dynamic name
|
|
28
|
+
return import(name);
|
|
10
29
|
}
|
|
11
30
|
async create() {
|
|
12
|
-
const zip = new ZipFile();
|
|
31
|
+
const zip = new this.yazl.ZipFile();
|
|
13
32
|
const chunks = [];
|
|
14
33
|
zip.outputStream.on("data", (buffer) => chunks.push(buffer));
|
|
15
34
|
const output = new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-draft-zip.service.js","sourceRoot":"","sources":["../src/file-draft-zip.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"file-draft-zip.service.js","sourceRoot":"","sources":["../src/file-draft-zip.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,iBAAiB,EAAE,yCAAyC;CAC7D,CAAC;AAIF,MAAM,OAAO,YAAa,SAAQ,SAAS;IAGtB;IACA;IAHnB,YACE,QAA4B,EACX,KAAkB,EAClB,IAAiB;QAElC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAHnD,UAAK,GAAL,KAAK,CAAa;QAClB,SAAI,GAAJ,IAAI,CAAa;IAGpC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAA4B,EAAE,KAAkB;QACjE,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACrF,OAAO,MAAM,CAAC,IAAI,CAAyB,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,sBAAsB;YACtB,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrC,sBAAsB;QACxB,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAErE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,GAAG,CAAC,GAAG,EAAE,CAAC;QAEV,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type sharp from "sharp";
|
|
2
3
|
import type { FileRenamerPort } from "./file-renamer.port";
|
|
3
4
|
import type { ImageAlphaPort, ImageAlphaStrategy } from "./image-alpha.port";
|
|
5
|
+
export declare const ImageAlphaSharpAdapterError: {
|
|
6
|
+
MissingDependency: string;
|
|
7
|
+
};
|
|
4
8
|
type Dependencies = {
|
|
5
9
|
FileRenamer: FileRenamerPort;
|
|
6
10
|
};
|
|
11
|
+
type SharpCallable = typeof sharp;
|
|
12
|
+
type SharpModule = {
|
|
13
|
+
default: SharpCallable;
|
|
14
|
+
};
|
|
7
15
|
export declare class ImageAlphaSharpAdapter implements ImageAlphaPort {
|
|
16
|
+
private readonly sharp;
|
|
8
17
|
private readonly deps;
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
18
|
+
private constructor();
|
|
19
|
+
static build(deps: Dependencies): Promise<ImageAlphaSharpAdapter>;
|
|
20
|
+
private static resolve;
|
|
21
|
+
static import(): Promise<SharpModule>;
|
|
11
22
|
flatten(recipe: ImageAlphaStrategy): Promise<tools.FilePathRelative | tools.FilePathAbsolute>;
|
|
12
23
|
}
|
|
13
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-alpha-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-alpha-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"image-alpha-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-alpha-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7E,eAAO,MAAM,2BAA2B;;CAEvC,CAAC;AAEF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;AACrD,KAAK,aAAa,GAAG,OAAO,KAAK,CAAC;AAClC,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9C,qBAAa,sBAAuB,YAAW,cAAc;IAEzD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFvB,OAAO;WAKM,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC;mBAIlD,OAAO;WAUf,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAMrC,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;CAsBpG"}
|
|
@@ -1,20 +1,38 @@
|
|
|
1
|
+
export const ImageAlphaSharpAdapterError = {
|
|
2
|
+
MissingDependency: "image.alpha.sharp.adapter.error.missing.dependency",
|
|
3
|
+
};
|
|
1
4
|
export class ImageAlphaSharpAdapter {
|
|
5
|
+
sharp;
|
|
2
6
|
deps;
|
|
3
|
-
constructor(deps) {
|
|
7
|
+
constructor(sharp, deps) {
|
|
8
|
+
this.sharp = sharp;
|
|
4
9
|
this.deps = deps;
|
|
5
10
|
}
|
|
6
|
-
async
|
|
11
|
+
static async build(deps) {
|
|
12
|
+
return new ImageAlphaSharpAdapter(await ImageAlphaSharpAdapter.resolve(), deps);
|
|
13
|
+
}
|
|
14
|
+
static async resolve() {
|
|
15
|
+
try {
|
|
16
|
+
const module = await ImageAlphaSharpAdapter.import();
|
|
17
|
+
return module.default;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error(ImageAlphaSharpAdapterError.MissingDependency);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Stryker disable all
|
|
24
|
+
static async import() {
|
|
7
25
|
const name = "sha" + "rp"; // Bun does not resolve dynamic imports with a dynamic name
|
|
8
|
-
return
|
|
26
|
+
return import(name);
|
|
9
27
|
}
|
|
28
|
+
// Stryker restore all
|
|
10
29
|
async flatten(recipe) {
|
|
11
|
-
const sharp = await this.load();
|
|
12
30
|
const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
|
|
13
31
|
const filename = final.getFilename();
|
|
14
32
|
const temporary = final.withFilename(filename.withSuffix("-flattened"));
|
|
15
33
|
const extension = final.getFilename().getExtension();
|
|
16
34
|
const format = (extension === "jpg" ? "jpeg" : extension);
|
|
17
|
-
const pipeline = sharp(recipe.input.get());
|
|
35
|
+
const pipeline = this.sharp(recipe.input.get());
|
|
18
36
|
using _pipeline_dispose = { [Symbol.dispose]: () => pipeline.destroy() };
|
|
19
37
|
await pipeline
|
|
20
38
|
.rotate()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-alpha-sharp.adapter.js","sourceRoot":"","sources":["../src/image-alpha-sharp.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-alpha-sharp.adapter.js","sourceRoot":"","sources":["../src/image-alpha-sharp.adapter.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,iBAAiB,EAAE,oDAAoD;CACxE,CAAC;AAMF,MAAM,OAAO,sBAAsB;IAEd;IACA;IAFnB,YACmB,KAAoB,EACpB,IAAkB;QADlB,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAc;IAClC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAkB;QACnC,OAAO,IAAI,sBAAsB,CAAC,MAAM,sBAAsB,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACtF,OAAO,MAAM,CAAC,IAAI,CAAyB,CAAC;IAC9C,CAAC;IACD,sBAAsB;IAEtB,KAAK,CAAC,OAAO,CAAC,MAA0B;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAExE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAqC,CAAC;QAE9F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAEzE,MAAM,QAAQ;aACX,MAAM,EAAE;aACR,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;aAC1C,QAAQ,CAAC,MAAM,CAAC;aAChB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QAE3B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type sharp from "sharp";
|
|
2
3
|
import type { FileRenamerPort } from "./file-renamer.port";
|
|
3
4
|
import type { ImageBlurPort, ImageBlurStrategy } from "./image-blur.port";
|
|
5
|
+
export declare const ImageBlurSharpAdapterError: {
|
|
6
|
+
MissingDependency: string;
|
|
7
|
+
};
|
|
4
8
|
type Dependencies = {
|
|
5
9
|
FileRenamer: FileRenamerPort;
|
|
6
10
|
};
|
|
11
|
+
type SharpCallable = typeof sharp;
|
|
12
|
+
type SharpModule = {
|
|
13
|
+
default: SharpCallable;
|
|
14
|
+
};
|
|
7
15
|
export declare class ImageBlurSharpAdapter implements ImageBlurPort {
|
|
16
|
+
private readonly sharp;
|
|
8
17
|
private readonly deps;
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
18
|
+
private constructor();
|
|
19
|
+
static build(deps: Dependencies): Promise<ImageBlurSharpAdapter>;
|
|
20
|
+
private static resolve;
|
|
21
|
+
static import(): Promise<SharpModule>;
|
|
11
22
|
blur(recipe: ImageBlurStrategy): Promise<tools.FilePathRelative | tools.FilePathAbsolute>;
|
|
12
23
|
}
|
|
13
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-blur-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-blur-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"image-blur-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-blur-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,eAAO,MAAM,0BAA0B;;CAEtC,CAAC;AAEF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;AACrD,KAAK,aAAa,GAAG,OAAO,KAAK,CAAC;AAClC,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9C,qBAAa,qBAAsB,YAAW,aAAa;IAEvD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFvB,OAAO;WAKM,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC;mBAIjD,OAAO;WAUf,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAMrC,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;CAiBhG"}
|
|
@@ -1,20 +1,38 @@
|
|
|
1
|
+
export const ImageBlurSharpAdapterError = {
|
|
2
|
+
MissingDependency: "image.blur.sharp.adapter.error.missing.dependency",
|
|
3
|
+
};
|
|
1
4
|
export class ImageBlurSharpAdapter {
|
|
5
|
+
sharp;
|
|
2
6
|
deps;
|
|
3
|
-
constructor(deps) {
|
|
7
|
+
constructor(sharp, deps) {
|
|
8
|
+
this.sharp = sharp;
|
|
4
9
|
this.deps = deps;
|
|
5
10
|
}
|
|
6
|
-
async
|
|
11
|
+
static async build(deps) {
|
|
12
|
+
return new ImageBlurSharpAdapter(await ImageBlurSharpAdapter.resolve(), deps);
|
|
13
|
+
}
|
|
14
|
+
static async resolve() {
|
|
15
|
+
try {
|
|
16
|
+
const module = await ImageBlurSharpAdapter.import();
|
|
17
|
+
return module.default;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error(ImageBlurSharpAdapterError.MissingDependency);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Stryker disable all
|
|
24
|
+
static async import() {
|
|
7
25
|
const name = "sha" + "rp"; // Bun does not resolve dynamic imports with a dynamic name
|
|
8
|
-
return
|
|
26
|
+
return import(name);
|
|
9
27
|
}
|
|
28
|
+
// Stryker restore all
|
|
10
29
|
async blur(recipe) {
|
|
11
|
-
const sharp = await this.load();
|
|
12
30
|
const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
|
|
13
31
|
const filename = final.getFilename();
|
|
14
32
|
const temporary = final.withFilename(filename.withSuffix("-blurred"));
|
|
15
33
|
const extension = final.getFilename().getExtension();
|
|
16
34
|
const format = (extension === "jpg" ? "jpeg" : extension);
|
|
17
|
-
const pipeline = sharp(recipe.input.get());
|
|
35
|
+
const pipeline = this.sharp(recipe.input.get());
|
|
18
36
|
using _sharp_ = { [Symbol.dispose]: () => pipeline.destroy() };
|
|
19
37
|
await pipeline.rotate().blur(recipe.sigma).toFormat(format).toFile(temporary.get());
|
|
20
38
|
await this.deps.FileRenamer.rename(temporary, final);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-blur-sharp.adapter.js","sourceRoot":"","sources":["../src/image-blur-sharp.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-blur-sharp.adapter.js","sourceRoot":"","sources":["../src/image-blur-sharp.adapter.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,iBAAiB,EAAE,mDAAmD;CACvE,CAAC;AAMF,MAAM,OAAO,qBAAqB;IAEb;IACA;IAFnB,YACmB,KAAoB,EACpB,IAAkB;QADlB,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAc;IAClC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAkB;QACnC,OAAO,IAAI,qBAAqB,CAAC,MAAM,qBAAqB,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACtF,OAAO,MAAM,CAAC,IAAI,CAAyB,CAAC;IAC9C,CAAC;IACD,sBAAsB;IAEtB,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QAEtE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAqC,CAAC;QAE9F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAE/D,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type sharp from "sharp";
|
|
2
3
|
import type { FileRenamerPort } from "./file-renamer.port";
|
|
3
4
|
import type { ImageCompressorPort, ImageCompressorStrategy } from "./image-compressor.port";
|
|
5
|
+
export declare const ImageCompressorSharpAdapterError: {
|
|
6
|
+
MissingDependency: string;
|
|
7
|
+
};
|
|
4
8
|
type Dependencies = {
|
|
5
9
|
FileRenamer: FileRenamerPort;
|
|
6
10
|
};
|
|
11
|
+
type SharpCallable = typeof sharp;
|
|
12
|
+
type SharpModule = {
|
|
13
|
+
default: SharpCallable;
|
|
14
|
+
};
|
|
7
15
|
export declare class ImageCompressorSharpAdapter implements ImageCompressorPort {
|
|
16
|
+
private readonly sharp;
|
|
8
17
|
private readonly deps;
|
|
9
|
-
constructor(deps: Dependencies);
|
|
10
|
-
private load;
|
|
11
18
|
private static readonly DEFAULT_QUALITY;
|
|
19
|
+
private constructor();
|
|
20
|
+
static build(deps: Dependencies): Promise<ImageCompressorSharpAdapter>;
|
|
21
|
+
private static resolve;
|
|
22
|
+
static import(): Promise<SharpModule>;
|
|
12
23
|
compress(recipe: ImageCompressorStrategy): Promise<tools.FilePathRelative | tools.FilePathAbsolute>;
|
|
13
24
|
}
|
|
14
25
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-compressor-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-compressor-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE5F,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"image-compressor-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-compressor-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAE5F,eAAO,MAAM,gCAAgC;;CAE5C,CAAC;AAEF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;AACrD,KAAK,aAAa,GAAG,OAAO,KAAK,CAAC;AAClC,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9C,qBAAa,2BAA4B,YAAW,mBAAmB;IAInE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAE7C,OAAO;WAKM,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,CAAC;mBAIvD,OAAO;WAUf,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAMrC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;CAkB1G"}
|
|
@@ -1,22 +1,40 @@
|
|
|
1
|
+
export const ImageCompressorSharpAdapterError = {
|
|
2
|
+
MissingDependency: "image.compressor.sharp.adapter.error.missing.dependency",
|
|
3
|
+
};
|
|
1
4
|
export class ImageCompressorSharpAdapter {
|
|
5
|
+
sharp;
|
|
2
6
|
deps;
|
|
3
|
-
|
|
7
|
+
static DEFAULT_QUALITY = 85;
|
|
8
|
+
constructor(sharp, deps) {
|
|
9
|
+
this.sharp = sharp;
|
|
4
10
|
this.deps = deps;
|
|
5
11
|
}
|
|
6
|
-
async
|
|
12
|
+
static async build(deps) {
|
|
13
|
+
return new ImageCompressorSharpAdapter(await ImageCompressorSharpAdapter.resolve(), deps);
|
|
14
|
+
}
|
|
15
|
+
static async resolve() {
|
|
16
|
+
try {
|
|
17
|
+
const module = await ImageCompressorSharpAdapter.import();
|
|
18
|
+
return module.default;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
throw new Error(ImageCompressorSharpAdapterError.MissingDependency);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Stryker disable all
|
|
25
|
+
static async import() {
|
|
7
26
|
const name = "sha" + "rp"; // Bun does not resolve dynamic imports with a dynamic name
|
|
8
|
-
return
|
|
27
|
+
return import(name);
|
|
9
28
|
}
|
|
10
|
-
|
|
29
|
+
// Stryker restore all
|
|
11
30
|
async compress(recipe) {
|
|
12
|
-
const sharp = await this.load();
|
|
13
31
|
const quality = recipe.quality ?? ImageCompressorSharpAdapter.DEFAULT_QUALITY;
|
|
14
32
|
const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
|
|
15
33
|
const filename = final.getFilename();
|
|
16
34
|
const temporary = final.withFilename(filename.withSuffix("-compressed"));
|
|
17
35
|
const extension = final.getFilename().getExtension();
|
|
18
36
|
const format = (extension === "jpg" ? "jpeg" : extension);
|
|
19
|
-
const pipeline = sharp(recipe.input.get());
|
|
37
|
+
const pipeline = this.sharp(recipe.input.get());
|
|
20
38
|
using _sharp_ = { [Symbol.dispose]: () => pipeline.destroy() };
|
|
21
39
|
await pipeline.rotate().toFormat(format, { quality }).toFile(temporary.get());
|
|
22
40
|
await this.deps.FileRenamer.rename(temporary, final);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-compressor-sharp.adapter.js","sourceRoot":"","sources":["../src/image-compressor-sharp.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-compressor-sharp.adapter.js","sourceRoot":"","sources":["../src/image-compressor-sharp.adapter.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,iBAAiB,EAAE,yDAAyD;CAC7E,CAAC;AAMF,MAAM,OAAO,2BAA2B;IAInB;IACA;IAJX,MAAM,CAAU,eAAe,GAAG,EAAE,CAAC;IAE7C,YACmB,KAAoB,EACpB,IAAkB;QADlB,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAc;IAClC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAkB;QACnC,OAAO,IAAI,2BAA2B,CAAC,MAAM,2BAA2B,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5F,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,MAAM,EAAE,CAAC;YAC1D,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACtF,OAAO,MAAM,CAAC,IAAI,CAAyB,CAAC;IAC9C,CAAC;IACD,sBAAsB;IAEtB,KAAK,CAAC,QAAQ,CAAC,MAA+B;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,2BAA2B,CAAC,eAAe,CAAC;QAE9E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;QAEzE,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAqC,CAAC;QAE9F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAE/D,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type sharp from "sharp";
|
|
2
3
|
import type { FileRenamerPort } from "./file-renamer.port";
|
|
3
4
|
import type { ImageExifClearPort, ImageExifClearStrategy } from "./image-exif-clear.port";
|
|
5
|
+
export declare const ImageExifClearSharpAdapterError: {
|
|
6
|
+
MissingDependency: string;
|
|
7
|
+
};
|
|
4
8
|
type Dependencies = {
|
|
5
9
|
FileRenamer: FileRenamerPort;
|
|
6
10
|
};
|
|
11
|
+
type SharpCallable = typeof sharp;
|
|
12
|
+
type SharpModule = {
|
|
13
|
+
default: SharpCallable;
|
|
14
|
+
};
|
|
7
15
|
export declare class ImageExifClearSharpAdapter implements ImageExifClearPort {
|
|
16
|
+
private readonly sharp;
|
|
8
17
|
private readonly deps;
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
18
|
+
private constructor();
|
|
19
|
+
static build(deps: Dependencies): Promise<ImageExifClearSharpAdapter>;
|
|
20
|
+
private static resolve;
|
|
21
|
+
static import(): Promise<SharpModule>;
|
|
11
22
|
clear(recipe: ImageExifClearStrategy): Promise<tools.FilePathRelative | tools.FilePathAbsolute>;
|
|
12
23
|
}
|
|
13
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-exif-clear-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-exif-clear-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"image-exif-clear-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-exif-clear-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,eAAO,MAAM,+BAA+B;;CAE3C,CAAC;AAEF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;AACrD,KAAK,aAAa,GAAG,OAAO,KAAK,CAAC;AAClC,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9C,qBAAa,0BAA2B,YAAW,kBAAkB;IAEjE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFvB,OAAO;WAKM,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,0BAA0B,CAAC;mBAItD,OAAO;WAUf,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAMrC,KAAK,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;CActG"}
|
|
@@ -1,18 +1,36 @@
|
|
|
1
|
+
export const ImageExifClearSharpAdapterError = {
|
|
2
|
+
MissingDependency: "image.exif.clear.sharp.adapter.error.missing.dependency",
|
|
3
|
+
};
|
|
1
4
|
export class ImageExifClearSharpAdapter {
|
|
5
|
+
sharp;
|
|
2
6
|
deps;
|
|
3
|
-
constructor(deps) {
|
|
7
|
+
constructor(sharp, deps) {
|
|
8
|
+
this.sharp = sharp;
|
|
4
9
|
this.deps = deps;
|
|
5
10
|
}
|
|
6
|
-
async
|
|
11
|
+
static async build(deps) {
|
|
12
|
+
return new ImageExifClearSharpAdapter(await ImageExifClearSharpAdapter.resolve(), deps);
|
|
13
|
+
}
|
|
14
|
+
static async resolve() {
|
|
15
|
+
try {
|
|
16
|
+
const module = await ImageExifClearSharpAdapter.import();
|
|
17
|
+
return module.default;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error(ImageExifClearSharpAdapterError.MissingDependency);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Stryker disable all
|
|
24
|
+
static async import() {
|
|
7
25
|
const name = "sha" + "rp"; // Bun does not resolve dynamic imports with a dynamic name
|
|
8
|
-
return
|
|
26
|
+
return import(name);
|
|
9
27
|
}
|
|
28
|
+
// Stryker restore all
|
|
10
29
|
async clear(recipe) {
|
|
11
|
-
const sharp = await this.load();
|
|
12
30
|
const final = recipe.strategy === "output_path" ? recipe.output : recipe.input;
|
|
13
31
|
const filename = final.getFilename();
|
|
14
32
|
const temporary = final.withFilename(filename.withSuffix("-exif-cleared"));
|
|
15
|
-
const pipeline = sharp(recipe.input.get());
|
|
33
|
+
const pipeline = this.sharp(recipe.input.get());
|
|
16
34
|
using _sharp_ = { [Symbol.dispose]: () => pipeline.destroy() };
|
|
17
35
|
await pipeline.rotate().toFile(temporary.get());
|
|
18
36
|
await this.deps.FileRenamer.rename(temporary, final);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-exif-clear-sharp.adapter.js","sourceRoot":"","sources":["../src/image-exif-clear-sharp.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-exif-clear-sharp.adapter.js","sourceRoot":"","sources":["../src/image-exif-clear-sharp.adapter.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,iBAAiB,EAAE,yDAAyD;CAC7E,CAAC;AAMF,MAAM,OAAO,0BAA0B;IAElB;IACA;IAFnB,YACmB,KAAoB,EACpB,IAAkB;QADlB,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAc;IAClC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAkB;QACnC,OAAO,IAAI,0BAA0B,CAAC,MAAM,0BAA0B,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACtF,OAAO,MAAM,CAAC,IAAI,CAAyB,CAAC;IAC9C,CAAC;IACD,sBAAsB;IAEtB,KAAK,CAAC,KAAK,CAAC,MAA8B;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAE/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAE/D,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import type * as tools from "@bgord/tools";
|
|
2
|
+
import type sharp from "sharp";
|
|
2
3
|
import type { FileCleanerPort } from "./file-cleaner.port";
|
|
3
4
|
import type { FileRenamerPort } from "./file-renamer.port";
|
|
4
5
|
import type { ImageFormatterPort, ImageFormatterStrategy } from "./image-formatter.port";
|
|
6
|
+
export declare const ImageFormatterSharpAdapterError: {
|
|
7
|
+
MissingDependency: string;
|
|
8
|
+
};
|
|
5
9
|
type Dependencies = {
|
|
6
10
|
FileCleaner: FileCleanerPort;
|
|
7
11
|
FileRenamer: FileRenamerPort;
|
|
8
12
|
};
|
|
13
|
+
type SharpCallable = typeof sharp;
|
|
14
|
+
type SharpModule = {
|
|
15
|
+
default: SharpCallable;
|
|
16
|
+
};
|
|
9
17
|
export declare class ImageFormatterSharpAdapter implements ImageFormatterPort {
|
|
18
|
+
private readonly sharp;
|
|
10
19
|
private readonly deps;
|
|
11
|
-
constructor(
|
|
12
|
-
|
|
20
|
+
private constructor();
|
|
21
|
+
static build(deps: Dependencies): Promise<ImageFormatterSharpAdapter>;
|
|
22
|
+
private static resolve;
|
|
23
|
+
static import(): Promise<SharpModule>;
|
|
13
24
|
format(recipe: ImageFormatterStrategy): Promise<tools.FilePathRelative | tools.FilePathAbsolute>;
|
|
14
25
|
}
|
|
15
26
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-formatter-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-formatter-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"image-formatter-sharp.adapter.d.ts","sourceRoot":"","sources":["../src/image-formatter-sharp.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,eAAO,MAAM,+BAA+B;;CAE3C,CAAC;AAEF,KAAK,YAAY,GAAG;IAAE,WAAW,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,eAAe,CAAA;CAAE,CAAC;AACnF,KAAK,aAAa,GAAG,OAAO,KAAK,CAAC;AAClC,KAAK,WAAW,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9C,qBAAa,0BAA2B,YAAW,kBAAkB;IAEjE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFvB,OAAO;WAKM,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,0BAA0B,CAAC;mBAItD,OAAO;WAUf,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAMrC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;CAuBvG"}
|
|
@@ -1,21 +1,39 @@
|
|
|
1
|
+
export const ImageFormatterSharpAdapterError = {
|
|
2
|
+
MissingDependency: "image.formatter.sharp.adapter.error.missing.dependency",
|
|
3
|
+
};
|
|
1
4
|
export class ImageFormatterSharpAdapter {
|
|
5
|
+
sharp;
|
|
2
6
|
deps;
|
|
3
|
-
constructor(deps) {
|
|
7
|
+
constructor(sharp, deps) {
|
|
8
|
+
this.sharp = sharp;
|
|
4
9
|
this.deps = deps;
|
|
5
10
|
}
|
|
6
|
-
async
|
|
11
|
+
static async build(deps) {
|
|
12
|
+
return new ImageFormatterSharpAdapter(await ImageFormatterSharpAdapter.resolve(), deps);
|
|
13
|
+
}
|
|
14
|
+
static async resolve() {
|
|
15
|
+
try {
|
|
16
|
+
const module = await ImageFormatterSharpAdapter.import();
|
|
17
|
+
return module.default;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error(ImageFormatterSharpAdapterError.MissingDependency);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Stryker disable all
|
|
24
|
+
static async import() {
|
|
7
25
|
const name = "sha" + "rp"; // Bun does not resolve dynamic imports with a dynamic name
|
|
8
|
-
return
|
|
26
|
+
return import(name);
|
|
9
27
|
}
|
|
28
|
+
// Stryker restore all
|
|
10
29
|
async format(recipe) {
|
|
11
|
-
const sharp = await this.load();
|
|
12
30
|
const final = recipe.strategy === "output_path"
|
|
13
31
|
? recipe.output
|
|
14
32
|
: recipe.input.withFilename(recipe.input.getFilename().withExtension(recipe.to));
|
|
15
33
|
const temporary = final.withFilename(final.getFilename().withSuffix("-formatted"));
|
|
16
34
|
const extension = final.getFilename().getExtension();
|
|
17
35
|
const encoder = (extension === "jpg" ? "jpeg" : extension);
|
|
18
|
-
const pipeline = sharp(recipe.input.get());
|
|
36
|
+
const pipeline = this.sharp(recipe.input.get());
|
|
19
37
|
using _sharp_ = { [Symbol.dispose]: () => pipeline.destroy() };
|
|
20
38
|
await pipeline.toFormat(encoder).toFile(temporary.get());
|
|
21
39
|
await this.deps.FileRenamer.rename(temporary, final);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-formatter-sharp.adapter.js","sourceRoot":"","sources":["../src/image-formatter-sharp.adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-formatter-sharp.adapter.js","sourceRoot":"","sources":["../src/image-formatter-sharp.adapter.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,iBAAiB,EAAE,wDAAwD;CAC5E,CAAC;AAMF,MAAM,OAAO,0BAA0B;IAElB;IACA;IAFnB,YACmB,KAAoB,EACpB,IAAkB;QADlB,UAAK,GAAL,KAAK,CAAe;QACpB,SAAI,GAAJ,IAAI,CAAc;IAClC,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAkB;QACnC,OAAO,IAAI,0BAA0B,CAAC,MAAM,0BAA0B,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1F,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,CAAC,KAAK,CAAC,MAAM;QACjB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,2DAA2D;QACtF,OAAO,MAAM,CAAC,IAAI,CAAyB,CAAC;IAC9C,CAAC;IACD,sBAAsB;IAEtB,KAAK,CAAC,MAAM,CAAC,MAA8B;QACzC,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,KAAK,aAAa;YAC/B,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAErF,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAEnF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAqC,CAAC;QAE/F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAE/D,MAAM,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import * as tools from "@bgord/tools";
|
|
2
|
+
import type sharp from "sharp";
|
|
2
3
|
import type { FileInspectionPort } from "./file-inspection.port";
|
|
3
4
|
import type { ImageInfoPort, ImageInfoType } from "./image-info.port";
|
|
5
|
+
export declare const ImageInfoSharpAdapterError: {
|
|
6
|
+
MissingDependency: string;
|
|
7
|
+
};
|
|
4
8
|
type Dependencies = {
|
|
5
9
|
FileInspection: FileInspectionPort;
|
|
6
10
|
MimeRegistry: tools.MimeRegistry;
|
|
7
11
|
};
|
|
12
|
+
type SharpCallable = typeof sharp;
|
|
13
|
+
type SharpModule = {
|
|
14
|
+
default: SharpCallable;
|
|
15
|
+
};
|
|
8
16
|
export declare class ImageInfoSharpAdapter implements ImageInfoPort {
|
|
17
|
+
private readonly sharp;
|
|
9
18
|
private readonly deps;
|
|
10
|
-
constructor(
|
|
11
|
-
|
|
19
|
+
private constructor();
|
|
20
|
+
static build(deps: Dependencies): Promise<ImageInfoSharpAdapter>;
|
|
21
|
+
private static resolve;
|
|
22
|
+
static import(): Promise<SharpModule>;
|
|
12
23
|
inspect(path: tools.FilePathRelative | tools.FilePathAbsolute): Promise<ImageInfoType>;
|
|
13
24
|
}
|
|
14
25
|
export {};
|