| /** |
| * @fileoverview Defines a schema for configs. |
| * @author Sylvan Mably |
| */ |
| |
| "use strict"; |
| |
| const baseConfigProperties = { |
| env: { type: "object" }, |
| globals: { type: "object" }, |
| parser: { type: ["string", "null"] }, |
| parserOptions: { type: "object" }, |
| plugins: { type: "array" }, |
| rules: { type: "object" }, |
| settings: { type: "object" }, |
| |
| ecmaFeatures: { type: "object" } // deprecated; logs a warning when used |
| }; |
| |
| const overrideProperties = Object.assign( |
| {}, |
| baseConfigProperties, |
| { |
| files: { |
| oneOf: [ |
| { type: "string" }, |
| { |
| type: "array", |
| items: { type: "string" }, |
| minItems: 1 |
| } |
| ] |
| }, |
| excludedFiles: { |
| oneOf: [ |
| { type: "string" }, |
| { |
| type: "array", |
| items: { type: "string" } |
| } |
| ] |
| } |
| } |
| ); |
| |
| const topLevelConfigProperties = Object.assign( |
| {}, |
| baseConfigProperties, |
| { |
| extends: { type: ["string", "array"] }, |
| root: { type: "boolean" }, |
| overrides: { |
| type: "array", |
| items: { |
| type: "object", |
| properties: overrideProperties, |
| required: ["files"], |
| additionalProperties: false |
| } |
| } |
| } |
| ); |
| |
| const configSchema = { |
| type: "object", |
| properties: topLevelConfigProperties, |
| additionalProperties: false |
| }; |
| |
| module.exports = configSchema; |