wasm-image-optimization 1.4.5 → 2.0.0

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.
Files changed (72) hide show
  1. package/LICENSE +5 -5
  2. package/README.md +152 -97
  3. package/dist/child-workers.d.ts +6 -0
  4. package/dist/child-workers.js +20 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.js +47 -0
  7. package/dist/core.d.ts +76 -0
  8. package/dist/core.js +174 -0
  9. package/dist/index.d.ts +5 -0
  10. package/dist/index.js +7 -0
  11. package/dist/single.d.ts +14 -0
  12. package/dist/single.js +28 -0
  13. package/dist/wasm-image-optimization-single.js +0 -0
  14. package/dist/wasm-image-optimization.js +2 -0
  15. package/dist/wasm-image-optimization.wasm +0 -0
  16. package/dist/web-workers.js +2958 -0
  17. package/dist/workerd.d.ts +19 -0
  18. package/dist/workerd.js +48 -0
  19. package/dist/workers.d.ts +7 -0
  20. package/dist/workers.js +50 -0
  21. package/package.json +64 -91
  22. package/dist/cjs/dummy/index.d.ts +0 -9
  23. package/dist/cjs/dummy/index.js +0 -22
  24. package/dist/cjs/dummy/index.js.map +0 -1
  25. package/dist/cjs/lib/optimizeImage.d.ts +0 -14
  26. package/dist/cjs/lib/optimizeImage.js +0 -24
  27. package/dist/cjs/lib/optimizeImage.js.map +0 -1
  28. package/dist/cjs/libImage.js +0 -2
  29. package/dist/cjs/libImage.wasm +0 -0
  30. package/dist/cjs/node/_node-worker.d.ts +0 -12
  31. package/dist/cjs/node/_node-worker.js +0 -9
  32. package/dist/cjs/node/_node-worker.js.map +0 -1
  33. package/dist/cjs/node/cjs-worker.d.ts +0 -12
  34. package/dist/cjs/node/cjs-worker.js +0 -23
  35. package/dist/cjs/node/cjs-worker.js.map +0 -1
  36. package/dist/cjs/node/index.d.ts +0 -10
  37. package/dist/cjs/node/index.js +0 -20
  38. package/dist/cjs/node/index.js.map +0 -1
  39. package/dist/cjs/node/node-worker.js +0 -4055
  40. package/dist/cjs/types/index.d.ts +0 -16
  41. package/dist/cjs/types/index.js +0 -3
  42. package/dist/cjs/types/index.js.map +0 -1
  43. package/dist/cjs/vite-plugin/index.d.ts +0 -3
  44. package/dist/cjs/vite-plugin/index.js +0 -19
  45. package/dist/cjs/vite-plugin/index.js.map +0 -1
  46. package/dist/dummy/index.d.ts +0 -9
  47. package/dist/dummy/index.js +0 -12
  48. package/dist/dummy/index.js.map +0 -1
  49. package/dist/esm/index.d.ts +0 -10
  50. package/dist/esm/index.js +0 -6
  51. package/dist/esm/index.js.map +0 -1
  52. package/dist/esm/libImage.js +0 -0
  53. package/dist/esm/package.json +0 -3
  54. package/dist/esm/web-worker.js +0 -3886
  55. package/dist/lib/optimizeImage.d.ts +0 -14
  56. package/dist/lib/optimizeImage.js +0 -19
  57. package/dist/lib/optimizeImage.js.map +0 -1
  58. package/dist/types/index.d.ts +0 -16
  59. package/dist/types/index.js +0 -2
  60. package/dist/types/index.js.map +0 -1
  61. package/dist/vite-plugin/index.d.ts +0 -3
  62. package/dist/vite-plugin/index.js +0 -17
  63. package/dist/vite-plugin/index.js.map +0 -1
  64. package/dist/web-worker/_web-worker.d.ts +0 -14
  65. package/dist/web-worker/_web-worker.js +0 -9
  66. package/dist/web-worker/_web-worker.js.map +0 -1
  67. package/dist/web-worker/index.d.ts +0 -12
  68. package/dist/web-worker/index.js +0 -6
  69. package/dist/web-worker/index.js.map +0 -1
  70. package/dist/workers/index.d.ts +0 -10
  71. package/dist/workers/index.js +0 -11
  72. package/dist/workers/index.js.map +0 -1
@@ -0,0 +1,19 @@
1
+ import { ImageConverter as ImageConverterBase, OptimizeParams, OptimizeResult } from "./index.js";
2
+ export * from "./core.js";
3
+ /**
4
+ * Cloudflare Workers (workerd) specialized wrapper for Satoru.
5
+ * Handles the specific WASM instantiation requirements for the environment.
6
+ */
7
+ export declare class ImageConverter extends ImageConverterBase {
8
+ private constructor();
9
+ /**
10
+ * Create Satoru instance for Cloudflare Workers.
11
+ * @param wasm The compiled WASM module (defaults to the bundled one)
12
+ */
13
+ static create(wasm?: WebAssembly.Module): Promise<ImageConverter>;
14
+ }
15
+ /**
16
+ * High-level convert function for Cloudflare Workers.
17
+ * Automatically creates and reuses a Satoru instance.
18
+ */
19
+ export declare function optimizeImage(params: OptimizeParams): Promise<OptimizeResult>;
@@ -0,0 +1,48 @@
1
+ // @ts-ignore
2
+ import createModule from "../dist/wasm-image-optimization.js";
3
+ import { ImageConverter as ImageConverterBase, } from "./index.js";
4
+ export * from "./core.js";
5
+ // @ts-ignore
6
+ import satoruWasm from "../dist/wasm-image-optimization.wasm";
7
+ /**
8
+ * Cloudflare Workers (workerd) specialized wrapper for Satoru.
9
+ * Handles the specific WASM instantiation requirements for the environment.
10
+ */
11
+ export class ImageConverter extends ImageConverterBase {
12
+ // Use protected constructor from base
13
+ constructor(factory) {
14
+ super(factory);
15
+ }
16
+ /**
17
+ * Create Satoru instance for Cloudflare Workers.
18
+ * @param wasm The compiled WASM module (defaults to the bundled one)
19
+ */
20
+ static async create(wasm = satoruWasm) {
21
+ const factory = async (o) => createModule({
22
+ ...o,
23
+ instantiateWasm: (imports, successCallback) => {
24
+ // Cloudflare Workers requires using the pre-compiled WebAssembly.Module
25
+ WebAssembly.instantiate(wasm, imports)
26
+ .then((instance) => {
27
+ successCallback(instance, wasm);
28
+ })
29
+ .catch((e) => {
30
+ console.error("wasm-image-optimization [workerd]: Wasm instantiation failed:", e);
31
+ });
32
+ return {}; // Return empty object as emscripten expects
33
+ },
34
+ });
35
+ return ImageConverterBase.create(factory);
36
+ }
37
+ }
38
+ let instance = null;
39
+ /**
40
+ * High-level convert function for Cloudflare Workers.
41
+ * Automatically creates and reuses a Satoru instance.
42
+ */
43
+ export async function optimizeImage(params) {
44
+ if (!instance) {
45
+ instance = await ImageConverter.create();
46
+ }
47
+ return instance.optimizeImage(params);
48
+ }
@@ -0,0 +1,7 @@
1
+ export type { ImageConverterWorker } from "./child-workers.js";
2
+ import { type OptimizeParams, type OptimizeResult } from "./index.js";
3
+ export { ImageConverter } from "./index.js";
4
+ export * from "./index.js";
5
+ export type { OptimizeParams, OptimizeResult };
6
+ declare const close: () => void, optimizeImage: (options: OptimizeParams) => Promise<OptimizeResult>, launchWorker: () => Promise<void[]>, setLimit: (newLimit: number) => void, waitAll: () => Promise<void>, waitReady: (retryTime?: number) => Promise<void>;
7
+ export { close, optimizeImage, launchWorker, setLimit, waitAll, waitReady };
@@ -0,0 +1,50 @@
1
+ import { createWorker, Worker } from "worker-lib";
2
+ export { ImageConverter } from "./index.js";
3
+ export * from "./index.js";
4
+ /**
5
+ * Create a Satoru worker proxy using worker-lib.
6
+ * @param params Initialization parameters
7
+ * @param params.worker Optional: Path to the worker file, a URL, or a factory function.
8
+ * Defaults to the bundled workers.js in the same directory.
9
+ * @param params.maxParallel Maximum number of parallel workers
10
+ */
11
+ const createImageConverterWorker = (params) => {
12
+ const { worker, maxParallel = 4 } = params ?? {};
13
+ const factory = () => {
14
+ let w;
15
+ if (worker) {
16
+ w = typeof worker === "function" ? worker() : worker;
17
+ }
18
+ else {
19
+ const workerUrl = typeof window !== "undefined"
20
+ ? new URL("./web-workers.js", import.meta.url)
21
+ : new URL("./child-workers.js", import.meta.url);
22
+ if (typeof Worker !== "undefined") {
23
+ w = new Worker(workerUrl, { type: "module" });
24
+ }
25
+ }
26
+ if (!w)
27
+ throw new Error("Worker is not supported in this environment.");
28
+ return w;
29
+ };
30
+ const workerInstance = createWorker(factory, maxParallel);
31
+ const proxy = new Proxy(workerInstance, {
32
+ get(target, prop, receiver) {
33
+ if (prop === "optimizeImage") {
34
+ return async (options) => {
35
+ return await target.execute("optimizeImage", {
36
+ ...options,
37
+ image: new Uint8Array(options.image),
38
+ });
39
+ };
40
+ }
41
+ if (prop in target) {
42
+ return Reflect.get(target, prop, receiver);
43
+ }
44
+ return (...args) => target.execute(prop, ...args);
45
+ },
46
+ });
47
+ return proxy;
48
+ };
49
+ const { close, optimizeImage, launchWorker, setLimit, waitAll, waitReady } = createImageConverterWorker({ maxParallel: 4 });
50
+ export { close, optimizeImage, launchWorker, setLimit, waitAll, waitReady };
package/package.json CHANGED
@@ -1,117 +1,90 @@
1
1
  {
2
2
  "name": "wasm-image-optimization",
3
+ "version": "2.0.0",
3
4
  "description": "Optimize images with wasm on edge runtime",
4
- "version": "1.4.5",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "wasm-image-optimization": "./dist/cli.js"
9
+ },
10
+ "types": "./dist/index.d.ts",
5
11
  "scripts": {
6
- "test": "yarn ts-node test",
7
- "lint:fix": "eslint --fix src/ && prettier -w src",
8
- "build": "tsc && tsc -p ./tsconfig.csj.json && cpy esm dist && tsx bin/build",
9
- "build:wasm": "mkdirp dist && docker compose -f docker/docker-compose.yml run --build --rm emcc make -j",
10
- "docker:shell": "mkdirp dist && docker compose -f docker/docker-compose.yml run --build --rm emcc bash -l"
12
+ "build": "tsc -b && rolldown -c rolldown.config.js"
11
13
  },
12
14
  "exports": {
13
- "./esm": {
14
- "import": "./dist/esm/index.js",
15
- "types": "./dist/esm/index.d.ts"
16
- },
17
- "./node": {
18
- "types": "./dist/cjs/node/index.d.ts",
19
- "default": "./dist/cjs/node/index.js"
20
- },
21
- "./web-worker": {
22
- "types": "./dist/web-worker/index.d.ts",
23
- "browser": "./dist/web-worker/index.js",
24
- "node": "./dist/dummy/index.js"
25
- },
26
- "./node-worker": {
27
- "types": "./dist/cjs/node/cjs-worker.d.ts",
28
- "require": "./dist/cjs/node/cjs-worker.js",
29
- "import": "./dist/cjs/node/cjs-worker.js"
30
- },
31
15
  ".": {
32
- "require": {
33
- "types": "./dist/cjs/node/index.d.ts",
34
- "node": "./dist/cjs/node/index.js",
35
- "edge-light": "./dist/esm/index.js",
36
- "workerd": "./dist/workers/index.js",
37
- "worker": "./dist/workers/index.js",
38
- "browser": "./dist/esm/index.js"
16
+ "workerd": {
17
+ "types": "./dist/workerd.d.ts",
18
+ "import": "./dist/workerd.js"
19
+ },
20
+ "deno": {
21
+ "types": "./dist/single.d.ts",
22
+ "import": "./dist/single.js"
39
23
  },
40
- "import": {
41
- "types": "./dist/cjs/node/index.d.ts",
42
- "node": "./dist/cjs/node/index.js",
43
- "edge-light": "./dist/esm/index.js",
44
- "workerd": "./dist/workers/index.js",
45
- "worker": "./dist/workers/index.js",
46
- "browser": "./dist/esm/index.js"
24
+ "single": {
25
+ "types": "./dist/single.d.ts",
26
+ "import": "./dist/single.js"
47
27
  },
48
- "default": {
49
- "types": "./dist/workers/index.d.ts",
50
- "default": "./dist/workers/index.js"
51
- }
28
+ "types": "./dist/single.d.ts",
29
+ "import": "./dist/single.js",
30
+ "default": "./dist/single.js"
52
31
  },
53
- "./vite-plugin": {
54
- "types": "./dist/vite-plugin/index.d.ts",
55
- "default": "./dist/vite-plugin/index.js"
56
- }
32
+ "./workerd": {
33
+ "types": "./dist/workerd.d.ts",
34
+ "import": "./dist/workerd.js"
35
+ },
36
+ "./workers": {
37
+ "types": "./dist/workers.d.ts",
38
+ "import": "./dist/workers.js"
39
+ },
40
+ "./single": {
41
+ "types": "./dist/single.d.ts",
42
+ "import": "./dist/single.js"
43
+ },
44
+ "./wasm-image-optimization.js": "./dist/wasm-image-optimization.js",
45
+ "./wasm-image-optimization.wasm": "./dist/wasm-image-optimization.wasm"
57
46
  },
58
47
  "typesVersions": {
59
48
  "*": {
60
- "edge": [
61
- "./dist/esm/index.d.ts"
49
+ "workers": [
50
+ "./dist/workers.d.ts"
62
51
  ],
63
- "web-worker": [
64
- "./dist/web-worker/index.d.ts"
52
+ "workerd": [
53
+ "./dist/workerd.d.ts"
65
54
  ],
66
- "node-worker": [
67
- "./dist/cjs/node/cjs-worker.d.ts"
68
- ],
69
- "node": [
70
- "./dist/cjs/node/index.d.ts"
71
- ],
72
- "vite": [
73
- "./dist/esm/index.d.ts"
55
+ "single": [
56
+ "./dist/single.d.ts"
74
57
  ],
75
58
  "*": [
76
- "./dist/workers/index.d.ts"
59
+ "./dist/single.d.ts"
77
60
  ]
78
61
  }
79
62
  },
63
+ "files": [
64
+ "dist",
65
+ "README.md",
66
+ "LICENSE"
67
+ ],
68
+ "author": "SoraKumo <info@croud.jp>",
80
69
  "license": "MIT",
81
- "dependencies": {
82
- "mkdirp": "3.0.1",
83
- "worker-lib": "2.0.8"
84
- },
85
- "devDependencies": {
86
- "@eslint/js": "9.39.2",
87
- "@types/node": "25.0.9",
88
- "@typescript-eslint/eslint-plugin": "^8.53.1",
89
- "@typescript-eslint/parser": "^8.53.1",
90
- "cpy-cli": "^6.0.0",
91
- "esbuild": "0.27.2",
92
- "eslint": "9.39.2",
93
- "eslint-config-prettier": "^10.1.8",
94
- "eslint-import-resolver-typescript": "^4.4.4",
95
- "eslint-plugin-import": "^2.32.0",
96
- "prettier": "^3.8.0",
97
- "ts-node": "^10.9.2",
98
- "tsx": "4.21.0",
99
- "typescript": "^5.9.3",
100
- "typescript-eslint": "^8.53.1",
101
- "vite": "7.3.1"
102
- },
103
- "publishConfig": {
104
- "access": "public"
105
- },
106
70
  "keywords": [
71
+ "image",
72
+ "converter",
107
73
  "webp",
108
- "encode",
74
+ "png",
75
+ "jpeg",
76
+ "avif",
109
77
  "wasm",
110
- "cloudflare",
111
- "workers",
112
- "WebAssembly"
78
+ "skia",
79
+ "webassembly"
113
80
  ],
114
- "repository": "https://github.com/node-libraries/wasm-image-optimization",
115
- "author": "SoraKumo <info@croud.jp>",
116
- "main": "index.js"
81
+ "devDependencies": {
82
+ "rolldown": "1.0.0-rc.7",
83
+ "typescript": "^5.9.3",
84
+ "vitest": "^4.0.18"
85
+ },
86
+ "dependencies": {
87
+ "commander": "14.0.3",
88
+ "worker-lib": "2.2.0"
89
+ }
117
90
  }
@@ -1,9 +0,0 @@
1
- import type { OptimizeParams, OptimizeResult } from "../types/index.js";
2
- export type { OptimizeParams, OptimizeResult };
3
- export declare const optimizeImage: (_params: OptimizeParams) => OptimizeResult;
4
- export declare const optimizeImageExt: (_params: OptimizeParams) => OptimizeResult;
5
- export declare const setLimit: (_limit: number) => void;
6
- export declare const close: () => void;
7
- export declare const waitAll: () => Promise<void>;
8
- export declare const waitReady: (_retryTime?: number) => Promise<void>;
9
- export declare const launchWorker: () => Promise<void>;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.launchWorker = exports.waitReady = exports.waitAll = exports.close = exports.setLimit = exports.optimizeImageExt = exports.optimizeImage = void 0;
4
- const optimizeImage = (_params) => {
5
- return undefined;
6
- };
7
- exports.optimizeImage = optimizeImage;
8
- const optimizeImageExt = (_params) => {
9
- return undefined;
10
- };
11
- exports.optimizeImageExt = optimizeImageExt;
12
- const setLimit = (_limit) => { };
13
- exports.setLimit = setLimit;
14
- const close = () => { };
15
- exports.close = close;
16
- const waitAll = () => Promise.resolve();
17
- exports.waitAll = waitAll;
18
- const waitReady = (_retryTime) => Promise.resolve();
19
- exports.waitReady = waitReady;
20
- const launchWorker = () => Promise.resolve();
21
- exports.launchWorker = launchWorker;
22
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dummy/index.ts"],"names":[],"mappings":";;;AAIO,MAAM,aAAa,GAAG,CAAC,OAAuB,EAAkB,EAAE;IACvE,OAAO,SAAkB,CAAC;AAC5B,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AACK,MAAM,gBAAgB,GAAG,CAAC,OAAuB,EAAkB,EAAE;IAC1E,OAAO,SAAkB,CAAC;AAC5B,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AACK,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAQ,EAAE,GAAE,CAAC,CAAC;AAAxC,QAAA,QAAQ,YAAgC;AAC9C,MAAM,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAAjB,QAAA,KAAK,SAAY;AACvB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAAlC,QAAA,OAAO,WAA2B;AACxC,MAAM,SAAS,GAAG,CAAC,UAAmB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAAvD,QAAA,SAAS,aAA8C;AAC7D,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAAvC,QAAA,YAAY,gBAA2B","sourcesContent":["import { _optimizeImage, _optimizeImageExt } from \"../lib/optimizeImage.js\";\nimport type { OptimizeParams, OptimizeResult } from \"../types/index.js\";\nexport type { OptimizeParams, OptimizeResult };\n\nexport const optimizeImage = (_params: OptimizeParams): OptimizeResult => {\n return undefined as never;\n};\nexport const optimizeImageExt = (_params: OptimizeParams): OptimizeResult => {\n return undefined as never;\n};\nexport const setLimit = (_limit: number): void => {};\nexport const close = () => {};\nexport const waitAll = () => Promise.resolve();\nexport const waitReady = (_retryTime?: number) => Promise.resolve();\nexport const launchWorker = () => Promise.resolve();\n"]}
@@ -1,14 +0,0 @@
1
- import type { ModuleType } from "../esm/libImage.js";
2
- import type { OptimizeParams } from "../types/index.js";
3
- export declare const _optimizeImage: ({ image, width, height, quality, format, speed, filter, libImage, }: OptimizeParams & {
4
- libImage: Promise<ModuleType>;
5
- }) => Promise<Uint8Array<ArrayBuffer> | undefined>;
6
- export declare const _optimizeImageExt: ({ image, width, height, quality, format, speed, filter, libImage, }: OptimizeParams & {
7
- libImage: Promise<ModuleType>;
8
- }) => Promise<{
9
- data: Uint8Array<ArrayBuffer>;
10
- originalWidth: number;
11
- originalHeight: number;
12
- width: number;
13
- height: number;
14
- } | undefined>;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._optimizeImageExt = exports._optimizeImage = void 0;
4
- const result = (result, releaseResult) => {
5
- const r = result
6
- ? { ...result, data: Uint8Array.from(result.data) }
7
- : undefined;
8
- releaseResult();
9
- return r;
10
- };
11
- const _optimizeImage = async ({ image, width = 0, height = 0, quality = 100, format = "avif", speed = 6, filter = true, libImage, }) => (0, exports._optimizeImageExt)({
12
- image,
13
- width,
14
- height,
15
- quality,
16
- format,
17
- speed,
18
- filter,
19
- libImage,
20
- }).then((r) => r?.data);
21
- exports._optimizeImage = _optimizeImage;
22
- const _optimizeImageExt = async ({ image, width = 0, height = 0, quality = 100, format = "avif", speed = 6, filter = true, libImage, }) => libImage.then(({ optimize, releaseResult }) => result(optimize(image, width, height, quality, format, speed, filter), releaseResult));
23
- exports._optimizeImageExt = _optimizeImageExt;
24
- //# sourceMappingURL=optimizeImage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"optimizeImage.js","sourceRoot":"","sources":["../../../src/lib/optimizeImage.ts"],"names":[],"mappings":";;;AAGA,MAAM,MAAM,GAAG,CACb,MAAsD,EACtD,aAAyB,EACzB,EAAE;IACF,MAAM,CAAC,GAAG,MAAM;QACd,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACnD,CAAC,CAAC,SAAS,CAAC;IACd,aAAa,EAAE,CAAC;IAChB,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACK,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,KAAK,EACL,KAAK,GAAG,CAAC,EACT,MAAM,GAAG,CAAC,EACV,OAAO,GAAG,GAAG,EACb,MAAM,GAAG,MAAM,EACf,KAAK,GAAG,CAAC,EACT,MAAM,GAAG,IAAI,EACb,QAAQ,GAGT,EAAE,EAAE,CACH,IAAA,yBAAiB,EAAC;IAChB,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,MAAM;IACN,QAAQ;CACT,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AArBb,QAAA,cAAc,kBAqBD;AAEnB,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,KAAK,EACL,KAAK,GAAG,CAAC,EACT,MAAM,GAAG,CAAC,EACV,OAAO,GAAG,GAAG,EACb,MAAM,GAAG,MAAM,EACf,KAAK,GAAG,CAAC,EACT,MAAM,GAAG,IAAI,EACb,QAAQ,GAGT,EAAE,EAAE,CACH,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,CAC5C,MAAM,CACJ,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAC9D,aAAa,CACd,CACF,CAAC;AAjBS,QAAA,iBAAiB,qBAiB1B","sourcesContent":["import type { ModuleType } from \"../esm/libImage.js\";\nimport type { OptimizeParams } from \"../types/index.js\";\n\nconst result = (\n result: ReturnType<ModuleType[\"optimize\"]> | undefined,\n releaseResult: () => void\n) => {\n const r = result\n ? { ...result, data: Uint8Array.from(result.data) }\n : undefined;\n releaseResult();\n return r;\n};\nexport const _optimizeImage = async ({\n image,\n width = 0,\n height = 0,\n quality = 100,\n format = \"avif\",\n speed = 6,\n filter = true,\n libImage,\n}: OptimizeParams & {\n libImage: Promise<ModuleType>;\n}) =>\n _optimizeImageExt({\n image,\n width,\n height,\n quality,\n format,\n speed,\n filter,\n libImage,\n }).then((r) => r?.data);\n\nexport const _optimizeImageExt = async ({\n image,\n width = 0,\n height = 0,\n quality = 100,\n format = \"avif\",\n speed = 6,\n filter = true,\n libImage,\n}: OptimizeParams & {\n libImage: Promise<ModuleType>;\n}) =>\n libImage.then(({ optimize, releaseResult }) =>\n result(\n optimize(image, width, height, quality, format, speed, filter),\n releaseResult\n )\n );\n"]}