UNPKG

types-eslintrc

Version:
83 lines 2.75 kB
import { jsonValueSchema } from "types-json"; import { z } from "zod"; import { esLintEnvironmentSchema } from "./environment.js"; export const fileName = ".eslintrc.json"; const esLintECMAVersionSchema = z.union([ z.literal(3), z.literal(5), z.literal(6), z.literal(7), z.literal(8), z.literal(9), z.literal(10), z.literal(11), z.literal(12), z.literal(13), z.literal(14), z.literal(15), z.literal(2015), z.literal(2016), z.literal(2017), z.literal(2018), z.literal(2019), z.literal(2020), z.literal(2021), z.literal(2022), z.literal(2023), z.literal(2024), z.literal("latest") ]); const esLintSeveritySchema = z.union([ z.literal("off"), z.literal("warn"), z.literal("error"), z.literal(0), z.literal(1), z.literal(2) ]); const esLintGlobalPermissionSchema = z.union([ z.literal("readonly"), z.literal("writable"), z.literal("off"), z.literal("readable"), z.boolean() ]); const esLintRuleSchema = z.union([ esLintSeveritySchema, z.tuple([esLintSeveritySchema]).rest(jsonValueSchema) ]); export const schema = z.object({ $schema: z.string().optional(), env: esLintEnvironmentSchema.optional(), extends: z.union([z.string(), z.array(z.string())]).optional(), globals: z.record(esLintGlobalPermissionSchema).optional(), noInlineConfig: z.boolean().optional(), ignorePatterns: z.array(z.string()).optional(), overrides: z.array(z.object({ excludedFiles: z.union([z.string(), z.array(z.string())]).optional(), files: z.union([z.string(), z.array(z.string())]) }).and(z.lazy(() => schema))).optional(), parser: z.union([z.literal("esprima"), z.literal("@babel/eslint-parser"), z.literal("@typescript-eslint/parser"), z.string()]).optional(), parserOptions: z.object({ ecmaVersion: esLintECMAVersionSchema.optional(), sourceType: z.union([z.literal("script"), z.literal("module")]).optional(), ecmaFeatures: z.object({ globalReturn: z.boolean().optional(), impliedStrict: z.boolean().optional(), jsx: z.boolean().optional(), experimentalObjectRestSpread: z.boolean().optional() }).optional() }).optional(), plugins: z.array(z.string()).optional(), processor: z.string().optional(), reportUnusedDisableDirectives: z.boolean().optional(), rules: z.record(esLintRuleSchema).optional(), settings: z.record(z.any()).optional() }).strict(); export function isESLintConfig(value) { return schema.safeParse(value).success; } export function parseESLintConfig(value) { return isESLintConfig(value) ? value : undefined; } //# sourceMappingURL=index.js.map