80 lines
1.9 KiB
JavaScript
80 lines
1.9 KiB
JavaScript
/**
|
|
* @fileoverview Defines a schema for configs.
|
|
* @author Sylvan Mably
|
|
*/
|
|
|
|
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',
|
|
};
|
|
|
|
export default configSchema;
|