import { workerData } from 'worker_threads';
import { writeFile, access, constants, mkdir } from 'fs/promises';
import path from 'path';
import { generateDtsBundle } from 'dts-bundle-generator';

async function generateBundle() {
    const { input, output } = workerData as { input: string; output: string };

    const outputDir = path.dirname(output);

    try {
        await access(outputDir, constants.W_OK);
    } catch {
        await mkdir(outputDir, { recursive: true });
    }

    let bundle = generateDtsBundle([
        {
            filePath: input,
        },
    ]).join('');

    if (bundle?.includes('Generated by dts-bundle-generator')) {
        bundle = bundle.replace(/^\/\/ Generated by dts-bundle-generator.*(\r?\n){1,2}/m, '');
    }

    await writeFile(output, bundle);
}

generateBundle();
