/* * STOP!!! DO NOT MODIFY. * * This file is part of the ongoing work to move the eslintrc-style config * system into the @eslint/eslintrc package. This file needs to remain * unchanged in order for this work to proceed. * * If you think you need to change this file, please contact @nzakas first. * * Thanks in advance for your cooperation. */ /** * @fileoverview Defines a schema for configs. * @author Sylvan Mably */ "use strict"; const baseConfigProperties = { $schema: { type: "string" }, env: { type: "object" }, extends: { $ref: "#/definitions/stringOrStrings" }, globals: { type: "object" }, overrides: { type: "array", items: { $ref: "#/definitions/overrideConfig" }, additionalItems: false }, parser: { type: ["string", "null"] }, parserOptions: { type: "object" }, plugins: { type: "array" }, processor: { type: "string" }, rules: { type: "object" }, settings: { type: "object" }, noInlineConfig: { type: "boolean" }, reportUnusedDisableDirectives: { type: "boolean" }, ecmaFeatures: { type: "object" } // deprecated; logs a warning when used }; const configSchema = { definitions: { stringOrStrings: { oneOf: [ { type: "string" }, { type: "array", items: { type: "string" }, additionalItems: false } ] }, stringOrStringsRequired: { oneOf: [ { type: "string" }, { type: "array", items: { type: "string" }, additionalItems: false, minItems: 1 } ] }, // Config at top-level. objectConfig: { type: "object", properties: { root: { type: "boolean" }, ignorePatterns: { $ref: "#/definitions/stringOrStrings" }, ...baseConfigProperties }, additionalProperties: false }, // Config in `overrides`. overrideConfig: { type: "object", properties: { excludedFiles: { $ref: "#/definitions/stringOrStrings" }, files: { $ref: "#/definitions/stringOrStringsRequired" }, ...baseConfigProperties }, required: ["files"], additionalProperties: false } }, $ref: "#/definitions/objectConfig" }; module.exports = configSchema;