mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 13:36:36 +00:00
feat: add executor support for multifiles result
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user