@code-pushup/eslint-plugin
Version:
Code PushUp plugin for detecting problems in source code using ESLint.📋
41 lines • 1.69 kB
JavaScript
import { z } from 'zod';
import { toArray } from '@code-pushup/utils';
const patternsSchema = z
.union([z.string(), z.array(z.string()).min(1)])
.describe('Lint target files. May contain file paths, directory paths or glob patterns');
const eslintrcSchema = z.string().describe('Path to ESLint config file');
const eslintTargetObjectSchema = z.object({
eslintrc: eslintrcSchema.optional(),
patterns: patternsSchema,
});
export const eslintTargetSchema = z
.union([patternsSchema, eslintTargetObjectSchema])
.transform((target) => typeof target === 'string' || Array.isArray(target)
? { patterns: target }
: target);
export const eslintPluginConfigSchema = z
.union([eslintTargetSchema, z.array(eslintTargetSchema).min(1)])
.transform(toArray);
const customGroupRulesSchema = z
.union([
z
.array(z.string())
.min(1, 'Custom group rules must contain at least 1 element'),
z
.record(z.string(), z.number())
.refine(schema => Object.keys(schema).length > 0, {
error: 'Custom group rules must contain at least 1 element',
}),
])
.describe('Array of rule IDs with equal weights or object mapping rule IDs to specific weights');
const customGroupSchema = z.object({
slug: z.string().describe('Unique group identifier'),
title: z.string().describe('Group display title'),
description: z.string().describe('Group metadata').optional(),
docsUrl: z.string().describe('Group documentation site').optional(),
rules: customGroupRulesSchema,
});
export const eslintPluginOptionsSchema = z.object({
groups: z.array(customGroupSchema).optional(),
});
//# sourceMappingURL=config.js.map