knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
38 lines (37 loc) • 1.44 kB
JavaScript
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;