1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| /**
| * @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;
|
|