no1b4me's picture
Upload 5037 files
95f4e64 verified
import { existsSync, statSync, readFileSync } from "fs";
import { posix } from "path";
export default function findInputFile(path) {
if (!existsSync(path)) {
if (existsSync(`${path}.ts`))
path = `${path}.ts`;
else if (existsSync(`${path}.js`))
path = `${path}.js`;
else
throw `Path '${path}' does not exist`;
}
const stat = statSync(path);
if (stat.isFile())
return path;
else if (stat.isDirectory()) {
// first we check if there is a package.json file with a `main` key
const packageFile = posix.resolve(path, "package.json");
if (existsSync(packageFile) && statSync(packageFile).isFile()) {
const { main } = JSON.parse(readFileSync(packageFile, "utf8"));
if (main)
return findInputFile(posix.resolve(path, main));
}
// otherwise we look for a default entry point
const name = posix.basename(path);
for (const subpath of [
posix.resolve(path, "index.ts"),
posix.resolve(path, name),
posix.resolve(path, `${name}.ts`),
posix.resolve(path, "main.ts"),
posix.resolve(path, "index.js"),
posix.resolve(path, `${name}.js`),
posix.resolve(path, "main.js"),
])
if (existsSync(subpath) && statSync(subpath).isFile())
return subpath;
throw `Could not resolve an entry point in folder '${path}`;
}
else
throw `Path '${path}' should be a file or a directory`;
}