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