// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import heicConvert from 'heic-convert'; import { parentPort } from 'worker_threads'; import type { WrappedWorkerRequest, WrappedWorkerResponse, } from './heicConverterMain'; if (!parentPort) { throw new Error('Must run as a worker thread'); } const port = parentPort; function respond(uuid: string, error: Error | undefined, response?: File) { const wrappedResponse: WrappedWorkerResponse = { uuid, error: error?.stack, response, }; port.postMessage(wrappedResponse); } port.on('message', async ({ uuid, data }: WrappedWorkerRequest) => { try { const file = await heicConvert({ buffer: new Uint8Array(data), format: 'JPEG', quality: 0.75, }); respond(uuid, undefined, file); } catch (error) { respond(uuid, error, undefined); } });