UNPKG

knip

Version:

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

38 lines (37 loc) 1.44 kB
import { toDependency, toEntry } from "../../util/input.js"; import { hasDependency } from "../../util/plugin.js"; import { clientToPackages } from "./helpers.js"; const title = 'Knex'; const enablers = ['knex']; const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers); const config = ['knexfile.{js,cjs,mjs,ts,cts,mts}']; const processKnexConfig = (config) => { const inputs = []; if (config.client) { const packages = clientToPackages(config.client); inputs.push(...packages.map(pkg => toDependency(pkg, { optional: true }))); } if (config.migrations?.directory) { const dirs = Array.isArray(config.migrations.directory) ? config.migrations.directory : [config.migrations.directory]; inputs.push(...dirs.map(dir => toEntry(`${dir}/*.{js,ts}`))); } if (config.seeds?.directory) { const dirs = Array.isArray(config.seeds.directory) ? config.seeds.directory : [config.seeds.directory]; inputs.push(...dirs.map(dir => toEntry(`${dir}/*.{js,ts}`))); } return inputs; }; const resolveConfig = config => { const configs = 'client' in config && config.client ? [config] : Object.values(config); return configs.flatMap(cfg => (typeof cfg === 'object' && cfg !== null ? processKnexConfig(cfg) : [])); }; const plugin = { title, enablers, isEnabled, config, resolveConfig, }; export default plugin;