knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
38 lines (37 loc) • 1.18 kB
JavaScript
import ts from 'typescript';
import { getPropertyValues } from "../../typescript/ast-helpers.js";
const findCallArg = (sourceFile, fnName) => {
let result;
function visit(node) {
if (ts.isCallExpression(node)) {
const callee = node.expression;
if (ts.isIdentifier(callee) && callee.text === fnName) {
const arg = node.arguments[0];
if (arg && ts.isObjectLiteralExpression(arg))
result = arg;
}
}
if (!result)
ts.forEachChild(node, visit);
}
visit(sourceFile);
return result;
};
export const getSrcDir = (sourceFile) => {
const arg = findCallArg(sourceFile, 'qwikVite');
if (arg) {
const values = getPropertyValues(arg, 'srcDir');
if (values.size > 0)
return Array.from(values)[0];
}
return 'src';
};
export const getRoutesDirs = (sourceFile, srcDir) => {
const arg = findCallArg(sourceFile, 'qwikCity');
if (arg) {
const values = getPropertyValues(arg, 'routesDir');
if (values.size > 0)
return Array.from(values);
}
return [`${srcDir}/routes`];
};