bpms_site/.svn/pristine/ee/ee40895ccce7fd3d41afc00c569cd5c7f5ee229b.svn-base
2025-11-02 16:38:49 +03:30

38 lines
1.5 KiB
Plaintext

import { promises as fs } from "fs";
import path from "path";
import { fileExists } from "../file-exists";
import { recursiveReadDir } from "../recursive-readdir";
export async function getTypeScriptIntent(baseDir, intentDirs, tsconfigPath) {
const resolvedTsConfigPath = path.join(baseDir, tsconfigPath);
// The integration turns on if we find a `tsconfig.json` in the user's
// project.
const hasTypeScriptConfiguration = await fileExists(resolvedTsConfigPath);
if (hasTypeScriptConfiguration) {
const content = await fs.readFile(resolvedTsConfigPath, {
encoding: "utf8"
}).then((txt)=>txt.trim(), ()=>null);
return {
firstTimeSetup: content === "" || content === "{}"
};
}
// Next.js also offers a friendly setup mode that bootstraps a TypeScript
// project for the user when we detect TypeScript files. So, we need to check
// the `pages/` directory for a TypeScript file.
// Checking all directories is too slow, so this is a happy medium.
const tsFilesRegex = /.*\.(ts|tsx)$/;
const excludedRegex = /(node_modules|.*\.d\.ts$)/;
for (const dir of intentDirs){
const typescriptFiles = await recursiveReadDir(dir, {
pathnameFilter: (name)=>tsFilesRegex.test(name),
ignoreFilter: (name)=>excludedRegex.test(name)
});
if (typescriptFiles.length) {
return {
firstTimeSetup: true
};
}
}
return false;
}
//# sourceMappingURL=getTypeScriptIntent.js.map