UNPKG

knip

Version:

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

44 lines (43 loc) 2.24 kB
import { Visitor } from 'oxc-parser'; import { toDeferResolve } from "../../util/input.js"; import { findProperty } from "../../typescript/ast-helpers.js"; import { isInternal } from "../../util/path.js"; export const getInputsFromFlatConfigAST = (program) => { const inputs = []; const visitor = new Visitor({ ObjectExpression(node) { const settingsNode = findProperty(node, 'settings'); if (!settingsNode || settingsNode.type !== 'ObjectExpression') return; for (const prop of settingsNode.properties ?? []) { if (prop.type !== 'Property') continue; const key = prop.key?.name ?? prop.key?.value; if (key === 'import/resolver' || key === 'import/parsers') { if (prop.value?.type === 'ObjectExpression') { for (const p of prop.value.properties ?? []) { if (p.type !== 'Property') continue; const resolver = p.key?.name ?? p.key?.value; if (resolver && resolver !== 'node' && !isInternal(resolver)) { const dep = key === 'import/resolver' ? `eslint-import-resolver-${resolver}` : resolver; inputs.push(toDeferResolve(dep, { optional: true })); } } } else if (prop.value?.type === 'StringLiteral' || (prop.value?.type === 'Literal' && typeof prop.value.value === 'string')) { const resolver = prop.value.value; if (resolver && resolver !== 'node' && !isInternal(resolver)) { const dep = key === 'import/resolver' ? `eslint-import-resolver-${resolver}` : resolver; inputs.push(toDeferResolve(dep, { optional: true })); } } } } }, }); visitor.visit(program); inputs.push(toDeferResolve('eslint-import-resolver-typescript', { optional: true })); return inputs; };