80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.2 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;
 |