import { spawn, Worker } from "threads"; import "../loadEnv"; import type { CryptFns } from "./cryptWorker"; if (!process.env.KEY) { // tslint:disable-next-line:no-console console.error("Environment value KEY required for encryption"); process.exit(1); } const KEY = process.env.KEY; let workerPromise: Promise<CryptFns> | null = null; async function getWorker(): Promise<CryptFns> { if (workerPromise == null) { workerPromise = spawn(new Worker("./cryptWorker")) as unknown as Promise<CryptFns>; } return workerPromise; } export async function encrypt(data: string) { return (await getWorker()).encrypt(data, KEY); } export async function decrypt(data: string) { return (await getWorker()).decrypt(data, KEY); }