feat: add executor support for multifiles result

This commit is contained in:
2026-09-12 15:24:17 +05:00
parent a7a42d0091
commit adb578540f
2 changed files with 38 additions and 0 deletions
+17
View File
@@ -88,6 +88,12 @@ function ensureWorker(): Worker | null {
width?: number; width?: number;
height?: number; height?: number;
data?: Uint8ClampedArray; data?: Uint8ClampedArray;
files?: {
name: string;
width: number;
height: number;
data: Uint8ClampedArray;
}[];
text?: string; text?: string;
error?: string; error?: string;
errorKey?: string; errorKey?: string;
@@ -102,6 +108,17 @@ function ensureWorker(): Worker | null {
height: payload.height, height: payload.height,
data: new Uint8ClampedArray(payload.data), data: new Uint8ClampedArray(payload.data),
}); });
} else if (payload.ok && Array.isArray(payload.files)) {
entry.resolve({
files: payload.files.map((file) => ({
name: file.name,
image: {
width: file.width,
height: file.height,
data: new Uint8ClampedArray(file.data),
},
})),
});
} else if (payload.ok && typeof payload.text === "string") { } else if (payload.ok && typeof payload.text === "string") {
entry.resolve(payload.text); entry.resolve(payload.text);
} else if (payload.errorKey) { } else if (payload.errorKey) {
+21
View File
@@ -20,6 +20,7 @@ type WorkerResponse =
height?: number; height?: number;
data?: Uint8ClampedArray; data?: Uint8ClampedArray;
text?: string; text?: string;
files?: WorkerImageFile[];
} }
| { | {
id: number; id: number;
@@ -29,6 +30,13 @@ type WorkerResponse =
errorVars?: Record<string, string | number>; errorVars?: Record<string, string | number>;
}; };
type WorkerImageFile = {
name: string;
width: number;
height: number;
data: Uint8ClampedArray;
};
self.onmessage = (event: MessageEvent<WorkerRequest>) => { self.onmessage = (event: MessageEvent<WorkerRequest>) => {
void handle(event.data); void handle(event.data);
}; };
@@ -59,6 +67,19 @@ async function handle(request: WorkerRequest): Promise<void> {
} satisfies WorkerResponse); } satisfies WorkerResponse);
return; return;
} }
if ("files" in output) {
const files = output.files.map((file) => ({
name: file.name,
width: file.image.width,
height: file.image.height,
data: file.image.data,
}));
(self as unknown as Worker).postMessage(
{ id: request.id, ok: true, files } satisfies WorkerResponse,
files.map((file) => file.data.buffer),
);
return;
}
(self as unknown as Worker).postMessage( (self as unknown as Worker).postMessage(
{ {
id: request.id, id: request.id,