import path from "path";
import fs from "fs";

const rootDir = path.resolve(__dirname, "../../../");
const ignorePattern =
    /\/\.git\/|\/\.next\/|\/\.dist\/|node_modules|\/\.local_dist\/|\/\.tmp\/|\/types\/|\.config\.js|\/public\//;

function transformJsToTs(dir: string) {
    const dirContent = fs.readdirSync(dir);

    for (let i = 0; i < dirContent.length; i++) {
        const fileFolder = dirContent[i];
        const fullFileFolderPath = path.join(dir, fileFolder);
        const stat = fs.statSync(fullFileFolderPath);

        if (stat.isDirectory()) {
            transformJsToTs(fullFileFolderPath);
            continue;
        }

        if (ignorePattern.test(fullFileFolderPath)) continue;

        if (fullFileFolderPath.match(/\.jsx?$/)) {
            const extension = fullFileFolderPath.match(/\.jsx?$/)?.[0];
            if (!extension) continue;
            const newExtension = extension.replace("js", "ts");
            const newFilePath = fullFileFolderPath.replace(
                /\.jsx?$/,
                newExtension
            );

            console.log(fullFileFolderPath);
            console.log(extension, "=>", newExtension);
            console.log(newFilePath);
            console.log("\n/////////////////////////////////////////");
            console.log("/////////////////////////////////////////\n");

            fs.copyFileSync(fullFileFolderPath, newFilePath);
            fs.unlinkSync(fullFileFolderPath);
        }
    }
}

console.log("rootDir", rootDir);

transformJsToTs(rootDir);