knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
53 lines (52 loc) • 1.48 kB
JavaScript
import { isDirectory } from '../../util/fs.js';
import { toEntry } from '../../util/input.js';
import { join } from '../../util/path.js';
import { hasDependency } from '../../util/plugin.js';
const title = 'Prisma';
const enablers = ['prisma', /^@prisma\/.*/];
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
const entry = ['prisma/schema.prisma', 'schema.prisma'];
const config = [
'prisma.config.{js,ts,mjs,cjs,mts,cts}',
'.config/prisma.{js,ts,mjs,cjs,mts,cts}',
'package.json',
];
const resolveSchema = (path, cwd) => {
if (!isDirectory(join(cwd, path))) {
return toEntry(path);
}
return toEntry(join(path, '**/*.prisma'));
};
const resolveConfig = async (config, options) => {
const inputs = [];
if (config.seed) {
inputs.push(...options.getInputsFromScripts(config.seed));
}
else if (config.migrations?.seed) {
inputs.push(...options.getInputsFromScripts(config.migrations.seed));
}
if (config.schema) {
inputs.push(resolveSchema(config.schema, options.cwd));
}
return inputs;
};
const args = {
config: true,
resolveInputs: (parsed, { cwd }) => {
const inputs = [];
if (parsed['schema']) {
inputs.push(resolveSchema(parsed['schema'], cwd));
}
return inputs;
},
};
const plugin = {
title,
enablers,
isEnabled,
entry,
config,
args,
resolveConfig,
};
export default plugin;