UNPKG

knip

Version:

Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects

42 lines (41 loc) 1.45 kB
import ts from 'typescript'; import { getPropertyValues } from "../../typescript/ast-helpers.js"; const ASTRO_CONFIG_SPECIFIER = 'astro/config'; export const getSrcDir = (sourceFile) => { const srcDir = 'src'; function visit(node) { if (ts.isObjectLiteralExpression(node)) { const values = getPropertyValues(node, 'srcDir'); if (values.size > 0) { return Array.from(values)[0]; } } let result; ts.forEachChild(node, innerNode => { const innerValue = visit(innerNode); if (innerValue) { result = innerValue; return true; } return false; }); return result; } return visit(sourceFile) ?? srcDir; }; export const usesSharpImageService = (sourceFile) => { for (const statement of sourceFile.statements) { if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)) continue; if (statement.moduleSpecifier.text !== ASTRO_CONFIG_SPECIFIER) continue; const bindings = statement.importClause?.namedBindings; if (!bindings || !ts.isNamedImports(bindings)) continue; for (const el of bindings.elements) { if ((el.propertyName?.text ?? el.name.text) === 'sharpImageService') return true; } } return false; };