| /* | |
|  * 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;
 |