mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 21:46:35 +00:00
feat: add executor support for multifiles result
This commit is contained in:
@@ -88,6 +88,12 @@ function ensureWorker(): Worker | null {
|
||||
width?: number;
|
||||
height?: number;
|
||||
data?: Uint8ClampedArray;
|
||||
files?: {
|
||||
name: string;
|
||||
width: number;
|
||||
height: number;
|
||||
data: Uint8ClampedArray;
|
||||
}[];
|
||||
text?: string;
|
||||
error?: string;
|
||||
errorKey?: string;
|
||||
@@ -102,6 +108,17 @@ function ensureWorker(): Worker | null {
|
||||
height: payload.height,
|
||||
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") {
|
||||
entry.resolve(payload.text);
|
||||
} else if (payload.errorKey) {
|
||||
|
||||
@@ -20,6 +20,7 @@ type WorkerResponse =
|
||||
height?: number;
|
||||
data?: Uint8ClampedArray;
|
||||
text?: string;
|
||||
files?: WorkerImageFile[];
|
||||
}
|
||||
| {
|
||||
id: number;
|
||||
@@ -29,6 +30,13 @@ type WorkerResponse =
|
||||
errorVars?: Record<string, string | number>;
|
||||
};
|
||||
|
||||
type WorkerImageFile = {
|
||||
name: string;
|
||||
width: number;
|
||||
height: number;
|
||||
data: Uint8ClampedArray;
|
||||
};
|
||||
|
||||
self.onmessage = (event: MessageEvent<WorkerRequest>) => {
|
||||
void handle(event.data);
|
||||
};
|
||||
@@ -59,6 +67,19 @@ async function handle(request: WorkerRequest): Promise<void> {
|
||||
} satisfies WorkerResponse);
|
||||
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(
|
||||
{
|
||||
id: request.id,
|
||||
|
||||
Reference in New Issue
Block a user