{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/stylelintrc.json",
  "definitions": {
    "allRules": {
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/atRule"
        },
        {
          "$ref": "#/definitions/block"
        },
        {
          "$ref": "#/definitions/color"
        },
        {
          "$ref": "#/definitions/comment"
        },
        {
          "$ref": "#/definitions/customMedia"
        },
        {
          "$ref": "#/definitions/customProperty"
        },
        {
          "$ref": "#/definitions/declaration"
        },
        {
          "$ref": "#/definitions/declarationBlock"
        },
        {
          "$ref": "#/definitions/font"
        },
        {
          "$ref": "#/definitions/function"
        },
        {
          "$ref": "#/definitions/generalSheet"
        },
        {
          "$ref": "#/definitions/keyframeDeclaration"
        },
        {
          "$ref": "#/definitions/length"
        },
        {
          "$ref": "#/definitions/lightness"
        },
        {
          "$ref": "#/definitions/mediaFeature"
        },
        {
          "$ref": "#/definitions/mediaQuery"
        },
        {
          "$ref": "#/definitions/mediaQueryList"
        },
        {
          "$ref": "#/definitions/number"
        },
        {
          "$ref": "#/definitions/property"
        },
        {
          "$ref": "#/definitions/rootRule"
        },
        {
          "$ref": "#/definitions/rule"
        },
        {
          "$ref": "#/definitions/selector"
        },
        {
          "$ref": "#/definitions/selectorList"
        },
        {
          "$ref": "#/definitions/shorthandProperty"
        },
        {
          "$ref": "#/definitions/string"
        },
        {
          "$ref": "#/definitions/stylelintDisableComment"
        },
        {
          "$ref": "#/definitions/time"
        },
        {
          "$ref": "#/definitions/unit"
        },
        {
          "$ref": "#/definitions/value"
        },
        {
          "$ref": "#/definitions/valueList"
        }
      ]
    },
    "alwaysMultiLineRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": ["always", "always-multi-line", []]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": ["always", "always-multi-line", {}]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "alwaysNeverRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": ["always", "never", []]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": ["always", "never", {}]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "arrayStringRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": ["null", "string"]
        },
        {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": ["string", "array", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": [[], {}]
              },
              {
                "$ref": "#/definitions/simpleArrayStringRule"
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "booleanRule": {
      "default": true,
      "type": ["null", "boolean", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "boolean"
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["boolean", "object"],
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "coreRule": {
      "type": "object",
      "properties": {
        "disableFix": {
          "type": "boolean"
        },
        "message": {
          "description": "Custom message that will be used in errors and warnings",
          "type": "string"
        },
        "reportDisables": {
          "type": "boolean"
        },
        "severity": {
          "description": "Message status",
          "type": "string",
          "enum": ["warning", "error"]
        },
        "url": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "integerRule": {
      "type": ["null", "integer", "array"],
      "oneOf": [
        {
          "type": ["null", "integer"]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["integer", "object"],
            "anyOf": [
              {
                "type": "integer",
                "enum": [{}]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "lowerUpperRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": ["lower", "upper", []]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": ["lower", "upper", {}]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "newlineRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": ["always", "always-multi-line", "never-multi-line", []]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": ["always", "always-multi-line", "never-multi-line", {}]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "newlineSpaceRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": [
            "always",
            "never",
            "always-single-line",
            "never-single-line",
            "always-multi-line",
            "never-multi-line",
            []
          ]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "always",
                  "never",
                  "always-single-line",
                  "never-single-line",
                  "always-multi-line",
                  "never-multi-line",
                  {}
                ]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "newlineSpaceWithIgnoreRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": [
            "always",
            "never",
            "always-single-line",
            "never-single-line",
            "always-multi-line",
            "never-multi-line",
            []
          ]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "always",
                  "always-single-line",
                  "never-single-line",
                  "always-multi-line",
                  "never-multi-line",
                  {}
                ]
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ],
                "properties": {
                  "ignoreAtRules": {
                    "$ref": "#/definitions/simpleStringOrArrayStringRule"
                  }
                }
              }
            ]
          }
        }
      ]
    },
    "objectRule": {
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/simpleStringOrArrayStringRule"
          }
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": [
            {
              "type": "object",
              "additionalProperties": {
                "$ref": "#/definitions/simpleStringOrArrayStringRule"
              }
            },
            {
              "$ref": "#/definitions/coreRule"
            }
          ]
        }
      ]
    },
    "simpleArrayStringRule": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    },
    "simpleStringOrArrayStringRule": {
      "type": ["string", "array"],
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/definitions/simpleArrayStringRule"
        }
      ]
    },
    "singleDoubleRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": ["single", "double", []]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": ["single", "double", {}]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "spaceRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": [
            "always",
            "never",
            "always-single-line",
            "never-single-line",
            []
          ]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "always",
                  "never",
                  "always-single-line",
                  "never-single-line",
                  {}
                ]
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "stringRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": ["null", "string"]
        },
        {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "uniqueItems": true,
          "items": {
            "type": ["string", "object"],
            "anyOf": [
              {
                "type": "string"
              },
              {
                "$ref": "#/definitions/coreRule"
              }
            ]
          }
        }
      ]
    },
    "unitRule": {
      "type": ["null", "string", "array"],
      "oneOf": [
        {
          "type": "null"
        },
        {
          "type": "string",
          "enum": [
            "em",
            "ex",
            "px",
            "%",
            "rem",
            "vw",
            "vh",
            "vm",
            "vmin",
            "vmax",
            "ch",
            "in",
            "cm",
            "mm",
            "q",
            "pt",
            "pc",
            "deg",
            "grad",
            "rad",
            "turn",
            "ms",
            "s",
            "Hz",
            "kHz",
            "dpi",
            "dpcm",
            "dppx",
            "fr",
            []
          ]
        },
        {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": ["string", "array", "object"],
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "em",
                  "ex",
                  "px",
                  "%",
                  "rem",
                  "vw",
                  "vh",
                  "vm",
                  "vmin",
                  "vmax",
                  "ch",
                  "in",
                  "cm",
                  "mm",
                  "q",
                  "pt",
                  "pc",
                  "deg",
                  "grad",
                  "rad",
                  "turn",
                  "ms",
                  "s",
                  "Hz",
                  "kHz",
                  "dpi",
                  "dpcm",
                  "dppx",
                  "fr",
                  [],
                  {}
                ]
              },
              {
                "type": "array",
                "uniqueItems": true,
                "minItems": 1,
                "items": {
                  "type": "string",
                  "enum": [
                    "em",
                    "ex",
                    "px",
                    "%",
                    "rem",
                    "vw",
                    "vh",
                    "vm",
                    "vmin",
                    "vmax",
                    "ch",
                    "in",
                    "cm",
                    "mm",
                    "q",
                    "pt",
                    "pc",
                    "deg",
                    "grad",
                    "rad",
                    "turn",
                    "ms",
                    "s",
                    "Hz",
                    "kHz",
                    "dpi",
                    "dpcm",
                    "dppx",
                    "fr"
                  ]
                }
              },
              {
                "type": "object",
                "allOf": [
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ],
                "properties": {
                  "ignoreProperties": {
                    "description": "Ignore units in the values of declarations with the specified properties",
                    "type": "object",
                    "patternProperties": {
                      "(em|ex|ch|vw|vh|cm|mm|in|pt|pc|px|rem|vmin|vmax|%)": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                }
              }
            ]
          }
        }
      ]
    },
    "atRule": {
      "properties": {
        "at-rule-blacklist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a blacklist of disallowed at-rules"
        },
        "at-rule-empty-line-before": {
          "description": "Require or disallow an empty line before at-rules",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", "never", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", "never", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "except": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": [
                            "all-nested",
                            "after-same-name",
                            "inside-block",
                            "blockless-after-same-name-blockless",
                            "blockless-after-blockless",
                            "first-nested"
                          ]
                        }
                      },
                      "ignore": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": [
                            "after-comment",
                            "first-nested",
                            "inside-block",
                            "blockless-after-same-name-blockless",
                            "blockless-after-blockless"
                          ]
                        }
                      },
                      "ignoreAtRules": {
                        "$ref": "#/definitions/simpleStringOrArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "at-rule-name-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for at-rules names",
          "deprecated": true
        },
        "at-rule-name-newline-after": {
          "$ref": "#/definitions/alwaysMultiLineRule",
          "description": "Require a newline after at-rule names",
          "deprecated": true
        },
        "at-rule-name-space-after": {
          "description": "Require a single space after at-rule names",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", "always-single-line", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", "always-single-line", {}]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "at-rule-no-unknown": {
          "description": "Disallow unknown at-rules",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreAtRules": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "at-rule-no-vendor-prefix": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow vendor prefixes for at-rules"
        },
        "at-rule-semicolon-newline-after": {
          "description": "Require a newline after the semicolon of at-rules",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", {}]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "at-rule-semicolon-space-before": {
          "description": "Require a single space or disallow whitespace before the semicolons of at-rules",
          "deprecated": true
        },
        "at-rule-whitelist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a whitelist of allowed at-rules"
        }
      }
    },
    "block": {
      "properties": {
        "block-closing-brace-empty-line-before": {
          "description": "Require or disallow an empty line before the closing brace of blocks",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always-multi-line", "never", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always-multi-line", "never", {}]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "block-closing-brace-newline-after": {
          "$ref": "#/definitions/newlineSpaceWithIgnoreRule",
          "description": "Require a newline or disallow whitespace after the closing brace of blocks",
          "deprecated": true
        },
        "block-closing-brace-newline-before": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace before the closing brace of blocks",
          "deprecated": true
        },
        "block-closing-brace-space-after": {
          "$ref": "#/definitions/newlineSpaceRule",
          "description": "Require a single space or disallow whitespace after the closing brace of blocks",
          "deprecated": true
        },
        "block-closing-brace-space-before": {
          "$ref": "#/definitions/newlineSpaceRule",
          "description": "Require a single space or disallow whitespace before the closing brace of blocks",
          "deprecated": true
        },
        "block-no-empty": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow empty blocks"
        },
        "block-no-single-line": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow single-line blocks"
        },
        "block-opening-brace-newline-after": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline after the opening brace of blocks",
          "deprecated": true
        },
        "block-opening-brace-newline-before": {
          "description": "Require a newline or disallow whitespace before the opening brace of blocks",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": [
                "always",
                "always-single-line",
                "never-single-line",
                "always-multi-line",
                "never-multi-line",
                []
              ]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "always",
                      "always-single-line",
                      "never-single-line",
                      "always-multi-line",
                      "never-multi-line",
                      {}
                    ]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "block-opening-brace-space-after": {
          "$ref": "#/definitions/newlineSpaceRule",
          "description": "Require a single space or disallow whitespace after the opening brace of blocks",
          "deprecated": true
        },
        "block-opening-brace-space-before": {
          "$ref": "#/definitions/newlineSpaceWithIgnoreRule",
          "description": "Require a single space or disallow whitespace before the opening brace of blocks",
          "deprecated": true
        }
      }
    },
    "color": {
      "properties": {
        "color-hex-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for hex colors",
          "deprecated": true
        },
        "color-hex-length": {
          "description": "Specify short or long notation for hex colors",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["short", "long", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["short", "long", {}]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ]
        },
        "color-named": {
          "description": "Require (where possible) or disallow named colors",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always-where-possible", "never", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always-where-possible", "never", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "color-no-hex": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow hex colors"
        },
        "color-no-invalid-hex": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow invalid hex colors"
        }
      }
    },
    "comment": {
      "properties": {
        "comment-empty-line-before": {
          "description": "Require or disallow an empty line before comments",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", "never", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", "never", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "except": {
                        "description": "Reverse the primary option for comments that are nested and the first child of their parent node",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["first-nested"]
                        }
                      },
                      "ignore": {
                        "description": "Don't require an empty line between comments",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": [
                            "between-comments",
                            "after-comment",
                            "stylelint-command",
                            "stylelint-commands"
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "comment-no-empty": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow empty comments"
        },
        "comment-whitespace-inside": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow whitespace on the inside of comment markers"
        },
        "comment-word-blacklist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a blacklist of disallowed words within comments"
        }
      }
    },
    "customMedia": {
      "properties": {
        "custom-media-pattern": {
          "$ref": "#/definitions/stringRule",
          "description": "Specify a pattern for custom media query names"
        },
        "no-unknown-custom-media": {
          "oneOf": [
            {
              "oneOf": [{ "const": true }, { "type": "null" }]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [{ "const": true }, { "type": "null" }]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Disallow unknown custom media queries"
        }
      }
    },
    "customProperty": {
      "properties": {
        "custom-property-empty-line-before": {
          "description": "Require or disallow an empty line before custom properties",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", "never", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", "never", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "except": {
                        "description": "Reverse the primary option for custom properties that come after a comment, custom property or first child of their parent node",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": [
                            "after-comment",
                            "after-custom-property",
                            "first-nested"
                          ]
                        }
                      },
                      "ignore": {
                        "description": "Ignore custom properties that are preceded by comments or inside single-line blocks",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["after-comment", "inside-single-line-block"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "custom-property-no-outside-root": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow custom properties outside of `:root` rules"
        },
        "custom-property-pattern": {
          "$ref": "#/definitions/stringRule",
          "description": "Specify a pattern for custom properties"
        },
        "no-unknown-custom-properties": {
          "oneOf": [
            {
              "oneOf": [{ "const": true }, { "type": "null" }]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [{ "const": true }, { "type": "null" }]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Disallow unknown custom properties"
        }
      }
    },
    "declaration": {
      "properties": {
        "declaration-bang-space-after": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace after the bang of declarations",
          "deprecated": true
        },
        "declaration-bang-space-before": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace before the bang of declarations",
          "deprecated": true
        },
        "declaration-colon-newline-after": {
          "$ref": "#/definitions/alwaysMultiLineRule",
          "description": "Require a newline or disallow whitespace after the colon of declarations",
          "deprecated": true
        },
        "declaration-colon-space-after": {
          "description": "Require a single space or disallow whitespace after the colon of declarations",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", "never", "always-single-line", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", "never", "always-single-line", {}]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "declaration-colon-space-before": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace before the colon of declarations",
          "deprecated": true
        },
        "declaration-empty-line-before": {
          "description": "Require or disallow an empty line before declarations",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always", "never", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always", "never", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "except": {
                        "type": "array",
                        "minItems": 1,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "enum": [
                            "after-comment",
                            "after-declaration",
                            "first-nested"
                          ]
                        }
                      },
                      "ignore": {
                        "type": "array",
                        "minItems": 1,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "enum": [
                            "after-comment",
                            "after-declaration",
                            "first-nested",
                            "inside-single-line-block"
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "declaration-no-important": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow `!important` within declarations"
        },
        "declaration-property-unit-blacklist": {
          "$ref": "#/definitions/objectRule",
          "description": "Specify a blacklist of disallowed property and unit pairs within declarations"
        },
        "declaration-property-unit-whitelist": {
          "$ref": "#/definitions/objectRule",
          "description": "Specify a whitelist of allowed property and unit pairs within declarations"
        },
        "declaration-property-value-blacklist": {
          "$ref": "#/definitions/objectRule",
          "description": "Specify a blacklist of disallowed property and value pairs within declarations"
        },
        "declaration-property-value-no-unknown": {
          "oneOf": [
            {
              "oneOf": [{ "const": true }, { "type": "null" }]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [{ "const": true }, { "type": "null" }]
                },
                {
                  "type": "object",
                  "allOf": [{ "$ref": "#/definitions/coreRule" }],
                  "properties": {
                    "ignoreProperties": {
                      "type": "object",
                      "additionalProperties": {
                        "anyOf": [
                          {
                            "oneOf": [
                              { "type": "string" },
                              {
                                "type": "array",
                                "items": { "type": "string" }
                              }
                            ]
                          },
                          {
                            "oneOf": [
                              {
                                "oneOf": [
                                  {
                                    "type": "object"
                                  },
                                  {
                                    "type": "string",
                                    "pattern": "^\\/.+\\/i?$"
                                  }
                                ]
                              },
                              {
                                "type": "array",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object"
                                    },
                                    {
                                      "type": "string",
                                      "pattern": "^\\/.+\\/i?$"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      }
                    },
                    "propertiesSyntax": {
                      "type": "object",
                      "additionalProperties": {
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      }
                    },
                    "typesSyntax": {
                      "type": "object",
                      "additionalProperties": {
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              ]
            }
          ],
          "description": "Disallow unknown values for properties within declarations"
        },
        "declaration-property-value-whitelist": {
          "$ref": "#/definitions/objectRule",
          "description": "Specify a whitelist of allowed property and value pairs within declarations"
        }
      }
    },
    "declarationBlock": {
      "properties": {
        "declaration-block-no-duplicate-properties": {
          "description": "Disallow duplicate properties within declaration blocks",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": "array",
                        "minItems": 1,
                        "uniqueItems": true,
                        "items": {
                          "type": "string",
                          "enum": [
                            "consecutive-duplicates",
                            "consecutive-duplicates-with-different-values",
                            "consecutive-duplicates-with-different-syntaxes",
                            "consecutive-duplicates-with-same-prefixless-values"
                          ]
                        }
                      },
                      "ignoreProperties": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "declaration-block-no-ignored-properties": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow property values that are ignored due to another property value in the same rule"
        },
        "declaration-block-no-redundant-longhand-properties": {
          "description": "Disallow longhand properties that can be combined into one shorthand property",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreShorthands": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "declaration-block-no-shorthand-property-overrides": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow shorthand properties that override related longhand properties"
        },
        "declaration-block-properties-order": {
          "description": "Specify the order of properties within declaration blocks",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["alphabetical", []]
            },
            {
              "type": "array",
              "minItems": 1,
              "uniqueItems": true,
              "items": {
                "type": ["string", "array", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["alphabetical", [], {}]
                  },
                  {
                    "type": "string"
                  },
                  {
                    "$ref": "#/definitions/simpleArrayStringRule"
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "dependencies": {
                      "order": ["properties"],
                      "properties": ["order"]
                    },
                    "properties": {
                      "unspecified": {
                        "description": "These options only apply if you've defined your own array of properties",
                        "type": "string",
                        "enum": [
                          "top",
                          "bottom",
                          "bottomAlphabetical",
                          "ignore"
                        ]
                      },
                      "order": {
                        "type": "string",
                        "enum": ["strict", "flexible"]
                      },
                      "properties": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "declaration-block-semicolon-newline-after": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace after the semicolons of declaration blocks",
          "deprecated": true
        },
        "declaration-block-semicolon-newline-before": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace before the semicolons of declaration blocks",
          "deprecated": true
        },
        "declaration-block-semicolon-space-after": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace after the semicolons of declaration blocks",
          "deprecated": true
        },
        "declaration-block-semicolon-space-before": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace before the semicolons of declaration blocks",
          "deprecated": true
        },
        "declaration-block-single-line-max-declarations": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of declaration within a single line declaration block"
        },
        "declaration-block-trailing-semicolon": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow a trailing semicolon within declaration blocks",
          "deprecated": true
        }
      }
    },
    "font": {
      "properties": {
        "font-family-name-quotes": {
          "description": "Specify whether or not quotation marks should be used around font family names",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": [
                "always-where-required",
                "always-where-recommended",
                "always-unless-keyword",
                []
              ]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "always-where-required",
                      "always-where-recommended",
                      "always-unless-keyword",
                      {}
                    ]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ]
        },
        "font-weight-notation": {
          "description": "Require numeric or named (where possible) `font-weight` values. Also, when named values are expected, require only valid names",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["numeric", "named-where-possible", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["numeric", "named-where-possible", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["relative"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "function": {
      "properties": {
        "function-blacklist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a blacklist of disallowed functions"
        },
        "function-calc-no-unspaced-operator": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow an unspaced operator within `calc` functions"
        },
        "function-comma-newline-after": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace after the commas of functions",
          "deprecated": true
        },
        "function-comma-newline-before": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace before the commas of functions",
          "deprecated": true
        },
        "function-comma-space-after": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace after the commas of functions",
          "deprecated": true
        },
        "function-comma-space-before": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace before the commas of functions",
          "deprecated": true
        },
        "function-linear-gradient-no-nonstandard-direction": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow direction values in `linear-gradient()` calls that are not valid according to the standard syntax"
        },
        "function-max-empty-lines": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of adjacent empty lines within functions",
          "deprecated": true
        },
        "function-name-case": {
          "description": "Specify lowercase or uppercase for function names",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["lower", "upper", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["lower", "upper", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "description": "Ignore case of function names",
                    "properties": {
                      "ignoreFunctions": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "function-parentheses-newline-inside": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace on the inside of the parentheses of functions",
          "deprecated": true
        },
        "function-parentheses-space-inside": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace on the inside of the parentheses of functions",
          "deprecated": true
        },
        "function-url-data-uris": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow data URIs for urls"
        },
        "function-url-no-scheme-relative": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow scheme-relative urls"
        },
        "function-url-quotes": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow quotes for urls"
        },
        "function-url-scheme-whitelist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a whitelist of allowed url schemes"
        },
        "function-whitelist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a whitelist of allowed functions"
        },
        "function-whitespace-after": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow whitespace after functions",
          "deprecated": true
        }
      }
    },
    "generalSheet": {
      "properties": {
        "indentation": {
          "description": "Specify indentation",
          "type": ["null", "integer", "string", "array"],
          "oneOf": [
            {
              "type": ["null", "integer"]
            },
            {
              "type": "string",
              "enum": ["tab", []]
            },
            {
              "type": "array",
              "minItems": 1,
              "uniqueItems": true,
              "items": {
                "type": "integer"
              }
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["integer", "string", "object"],
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string",
                    "enum": ["tab", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "indentInsideParens": {
                        "description": "If `true`, the closing brace of a block (rule or at-rule) will be expected at the same indentation level as the block's inner nodes",
                        "type": "string",
                        "enum": ["twice", "once-at-root-twice-in-block"]
                      },
                      "except": {
                        "description": "Do not indent for these things",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["block", "param", "value"]
                        }
                      },
                      "ignore": {
                        "description": "Ignore the indentation inside parentheses",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["inside-parens", "param", "value"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "linebreaks": {
          "description": "Specify unix or windows linebreaks",
          "deprecated": true
        },
        "max-empty-lines": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of adjacent empty lines",
          "deprecated": true
        },
        "max-line-length": {
          "description": "Limit the length of a line",
          "type": ["null", "integer", "array"],
          "oneOf": [
            {
              "type": ["null", "integer"]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["integer", "object"],
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": ["string", "array"],
                        "anyOf": [
                          {
                            "type": "string",
                            "enum": ["non-comments", "comments"]
                          },
                          {
                            "type": "array",
                            "uniqueItems": true,
                            "minItems": 1,
                            "items": {
                              "type": "string",
                              "enum": ["non-comments", "comments"]
                            }
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "max-nesting-depth": {
          "description": "Limit the allowed nesting depth",
          "type": ["null", "integer", "array"],
          "oneOf": [
            {
              "type": ["null", "integer"]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["integer", "object"],
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": [
                            "at-rules-without-declaration-blocks",
                            "blockless-at-rules",
                            "pseudo-classes"
                          ]
                        }
                      },
                      "ignoreAtRules": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "no-browser-hacks": {
          "description": "Disallow browser hacks that are irrelevant to the browsers you are targeting",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "browsers": {
                        "$ref": "#/definitions/simpleStringOrArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "no-descending-specificity": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow selectors of lower specificity from coming after overriding selectors of higher specificity"
        },
        "no-duplicate-selectors": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow duplicate selectors within a stylesheet"
        },
        "no-empty-first-line": {
          "description": "Disallow empty first lines",
          "deprecated": true
        },
        "no-empty-source": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow empty sources"
        },
        "no-eol-whitespace": {
          "description": "Disallow end-of-line whitespace",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["empty-lines"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ],
          "deprecated": true
        },
        "no-extra-semicolons": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow extra semicolons",
          "deprecated": true
        },
        "no-indistinguishable-colors": {
          "description": "Disallow colors that are suspiciously close to being identical",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "threshold": {
                        "type": "integer",
                        "default": 3,
                        "minimum": 0,
                        "maximum": 100
                      },
                      "ignore": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      },
                      "whitelist": {
                        "description": "An array of color pairs to ignore. Each pair is an array with two items",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "$ref": "#/definitions/simpleArrayStringRule"
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "no-invalid-double-slash-comments": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow double-slash comments `(//...)` which are not supported by CSS and could lead to unexpected results"
        },
        "no-missing-end-of-source-newline": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow missing end-of-source newlines",
          "deprecated": true
        },
        "no-unknown-animations": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow animation names that do not correspond to a `@keyframes` declaration"
        },
        "unicode-bom": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow Unicode BOM",
          "deprecated": true
        },
        "no-unsupported-browser-features": {
          "description": "Disallow features that are unsupported by the browsers that you are targeting",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "browsers": {
                        "type": "string"
                      },
                      "ignore": {
                        "$ref": "#/definitions/simpleStringOrArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "keyframeDeclaration": {
      "properties": {
        "keyframe-declaration-no-important": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow !important within keyframe declarations"
        }
      }
    },
    "length": {
      "properties": {
        "length-zero-no-unit": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow units for zero lengths"
        }
      }
    },
    "lightness": {
      "properties": {
        "lightness-notation": {
          "oneOf": [
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": ["percentage", "number"]
                },
                { "type": "null" }
              ]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": ["percentage", "number"]
                    },
                    { "type": "null" }
                  ]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Specify number or percentage notation for lightness"
        }
      }
    },
    "mediaFeature": {
      "properties": {
        "media-feature-colon-space-after": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace after the colon in media features",
          "deprecated": true
        },
        "media-feature-colon-space-before": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace before the colon in media features",
          "deprecated": true
        },
        "media-feature-name-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for media feature names",
          "deprecated": true
        },
        "media-feature-name-no-unknown": {
          "description": "Disallow unknown media feature names",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreMediaFeatureNames": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "media-feature-name-value-no-unknown": {
          "oneOf": [
            {
              "oneOf": [{ "const": true }, { "type": "null" }]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [{ "const": true }, { "type": "null" }]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Disallow unknown values for media features"
        },
        "media-feature-name-no-vendor-prefix": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow vendor prefixes for media feature names"
        },
        "media-feature-name-unit-allowed-list": {
          "oneOf": [
            {
              "oneOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "oneOf": [
                      { "type": "string" },
                      {
                        "type": "array",
                        "items": { "type": "string" }
                      }
                    ]
                  }
                },
                { "type": "null" }
              ]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [
                    {
                      "type": "object",
                      "additionalProperties": {
                        "oneOf": [
                          { "type": "string" },
                          {
                            "type": "array",
                            "items": { "type": "string" }
                          }
                        ]
                      }
                    },
                    { "type": "null" }
                  ]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Specify a list of allowed name and unit pairs within media features"
        },
        "media-feature-no-missing-punctuation": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow missing punctuation for non-boolean media features"
        },
        "media-feature-parentheses-space-inside": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace on the inside of the parentheses within media features",
          "deprecated": true
        },
        "media-feature-range-notation": {
          "oneOf": [
            {
              "oneOf": [
                {
                  "type": "string",
                  "enum": ["prefix", "context"]
                },
                { "type": "null" }
              ]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [
                    {
                      "type": "string",
                      "enum": ["prefix", "context"]
                    },
                    { "type": "null" }
                  ]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Specify context or prefix notation for media feature ranges"
        },
        "media-feature-range-operator-space-after": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace after the range operator in media features",
          "deprecated": true
        },
        "media-feature-range-operator-space-before": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace before the range operator in media features",
          "deprecated": true
        }
      }
    },
    "mediaQuery": {
      "properties": {
        "media-query-no-invalid": {
          "oneOf": [
            {
              "oneOf": [{ "const": true }, { "type": "null" }]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [{ "const": true }, { "type": "null" }]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Disallow invalid media queries"
        }
      }
    },
    "mediaQueryList": {
      "properties": {
        "media-query-list-comma-newline-after": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace after the commas of media query lists",
          "deprecated": true
        },
        "media-query-list-comma-newline-before": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace before the commas of media query lists",
          "deprecated": true
        },
        "media-query-list-comma-space-after": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace after the commas of media query lists",
          "deprecated": true
        },
        "media-query-list-comma-space-before": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace before the commas of media query lists",
          "deprecated": true
        }
      }
    },
    "number": {
      "properties": {
        "number-leading-zero": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow a leading zero for fractional numbers less than 1",
          "deprecated": true
        },
        "number-max-precision": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of decimal places allowed in numbers"
        },
        "number-no-trailing-zeros": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow trailing zeros in numbers",
          "deprecated": true
        }
      }
    },
    "property": {
      "properties": {
        "property-blacklist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a blacklist of disallowed properties"
        },
        "property-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for properties",
          "deprecated": true
        },
        "property-no-unknown": {
          "description": "Disallow unknown properties",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreProperties": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      },
                      "checkPrefixed": {
                        "description": "If `true`, this rule will check vendor-prefixed properties",
                        "type": "boolean"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "property-no-vendor-prefix": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow vendor prefixes for properties"
        },
        "property-whitelist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a whitelist of allowed properties"
        }
      }
    },
    "rootRule": {
      "properties": {
        "root-no-standard-properties": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow standard properties inside `:root` rules"
        }
      }
    },
    "rule": {
      "properties": {
        "rule-nested-empty-line-before": {
          "description": "Require or disallow an empty line before nested rules",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": [
                "always",
                "never",
                "always-multi-line",
                "never-multi-line",
                []
              ]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "always",
                      "never",
                      "always-multi-line",
                      "never-multi-line",
                      {}
                    ]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "except": {
                        "description": "Reverse the primary option if the rule is the first in a block",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["first-nested"]
                        }
                      },
                      "ignore": {
                        "description": "Ignore rules that come after a comment",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["after-comment"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "rule-non-nested-empty-line-before": {
          "description": "Require or disallow an empty line before non-nested rules",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": [
                "always",
                "never",
                "always-multi-line",
                "never-multi-line",
                []
              ]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": [
                      "always",
                      "never",
                      "always-multi-line",
                      "never-multi-line",
                      {}
                    ]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "except": {
                        "description": "Reverse the primary option if the rule is the first in a block",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["after-single-line-comment"]
                        }
                      },
                      "ignore": {
                        "description": "Ignore rules that come after a comment",
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["after-comment"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "selector": {
      "properties": {
        "selector-anb-no-unmatchable": {
          "oneOf": [
            {
              "oneOf": [{ "const": true }, { "type": "null" }]
            },
            {
              "type": "array",
              "minItems": 1,
              "maxItems": 2,
              "items": [
                {
                  "oneOf": [{ "const": true }, { "type": "null" }]
                },
                {
                  "$ref": "#/definitions/coreRule",
                  "type": "object",
                  "additionalProperties": false
                }
              ]
            }
          ],
          "description": "Disallow unmatchable An+B selectors"
        },
        "selector-attribute-brackets-space-inside": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace on the inside of the brackets within attribute selector",
          "deprecated": true
        },
        "selector-attribute-operator-blacklist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a blacklist of disallowed attribute operators"
        },
        "selector-attribute-operator-space-after": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace after operators within attribute selectors",
          "deprecated": true
        },
        "selector-attribute-operator-space-before": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace before operators within attribute selectors",
          "deprecated": true
        },
        "selector-attribute-operator-whitelist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a whitelist of allowed attribute operators"
        },
        "selector-attribute-quotes": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require or disallow quotes for attribute values"
        },
        "selector-class-pattern": {
          "description": "Specify a pattern for class selectors",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": ["null", "string"]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "resolveNestedSelectors": {
                        "description": "This option will resolve nested selectors with `&` interpolation",
                        "type": "boolean",
                        "default": false
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "selector-combinator-space-after": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace after the combinators of selectors",
          "deprecated": true
        },
        "selector-combinator-space-before": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace before the combinators of selectors",
          "deprecated": true
        },
        "selector-descendant-combinator-no-non-space": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow non-space characters for descendant combinators of selectors",
          "deprecated": true
        },
        "selector-id-pattern": {
          "$ref": "#/definitions/stringRule",
          "description": "Specify a pattern for id selectors"
        },
        "selector-max-compound-selectors": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of compound selectors in a selector"
        },
        "selector-max-specificity": {
          "$ref": "#/definitions/stringRule",
          "description": "Limit the specificity of selectors"
        },
        "selector-nested-pattern": {
          "$ref": "#/definitions/stringRule",
          "description": "Specify a pattern for the selectors of rules nested within rules"
        },
        "selector-no-attribute": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow attribute selectors"
        },
        "selector-no-combinator": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow combinators in selectors"
        },
        "selector-no-id": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow id selectors"
        },
        "selector-no-qualifying-type": {
          "description": "Disallow qualifying a selector by type",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["attribute", "class", "id"]
                        }
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "selector-no-type": {
          "description": "Disallow type selectors",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignore": {
                        "type": "array",
                        "uniqueItems": true,
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "enum": ["compounded", "descendant"]
                        }
                      },
                      "ignoreTypes": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "selector-no-universal": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow the universal selector"
        },
        "selector-no-vendor-prefix": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow vendor prefixes for selectors"
        },
        "selector-pseudo-class-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for pseudo-class selectors",
          "deprecated": true
        },
        "selector-pseudo-class-no-unknown": {
          "description": "Disallow unknown pseudo-class selectors",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignorePseudoClasses": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "selector-pseudo-class-parentheses-space-inside": {
          "$ref": "#/definitions/alwaysNeverRule",
          "description": "Require a single space or disallow whitespace on the inside of the parentheses within pseudo-class selectors",
          "deprecated": true
        },
        "selector-pseudo-class-whitelist": {
          "$ref": "#/definitions/arrayStringRule",
          "description": "Specify a whitelist of allowed pseudo-class selectors"
        },
        "selector-pseudo-element-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for pseudo-element selectors",
          "deprecated": true
        },
        "selector-pseudo-element-colon-notation": {
          "$ref": "#/definitions/singleDoubleRule",
          "description": "Specify single or double colon notation for applicable pseudo-elements"
        },
        "selector-pseudo-element-no-unknown": {
          "description": "Disallow unknown pseudo-element selectors",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignorePseudoElements": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "selector-root-no-composition": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow the composition of :root in selectors"
        },
        "selector-type-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for type selectors"
        },
        "selector-type-no-unknown": {
          "description": "Disallow unknown type selectors",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreTypes": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "selector-max-empty-lines": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of adjacent empty lines within selectors",
          "deprecated": true
        }
      }
    },
    "selectorList": {
      "properties": {
        "selector-list-comma-newline-after": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace after the commas of selector lists",
          "deprecated": true
        },
        "selector-list-comma-newline-before": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace before the commas of selector lists",
          "deprecated": true
        },
        "selector-list-comma-space-after": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace after the commas of selector lists",
          "deprecated": true
        },
        "selector-list-comma-space-before": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace before the commas of selector lists",
          "deprecated": true
        }
      }
    },
    "shorthandProperty": {
      "properties": {
        "shorthand-property-no-redundant-values": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow redundant values in shorthand properties"
        }
      }
    },
    "string": {
      "properties": {
        "string-no-newline": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow (unescaped) newlines in strings"
        },
        "string-quotes": {
          "$ref": "#/definitions/singleDoubleRule",
          "description": "Specify single or double quotes around strings",
          "deprecated": true
        }
      }
    },
    "stylelintDisableComment": {
      "properties": {
        "stylelint-disable-reason": {
          "description": "Require a reason comment before or after `stylelint-disable` comments",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["always-before", "always-after", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["always-before", "always-after", {}]
                  },
                  {
                    "$ref": "#/definitions/coreRule"
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "time": {
      "properties": {
        "time-no-imperceptible": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow `animation` and `transition` less than or equal to 100ms"
        }
      }
    },
    "unit": {
      "properties": {
        "unit-blacklist": {
          "$ref": "#/definitions/unitRule",
          "description": "Specify a blacklist of disallowed units"
        },
        "unit-case": {
          "$ref": "#/definitions/lowerUpperRule",
          "description": "Specify lowercase or uppercase for units",
          "deprecated": true
        },
        "unit-no-unknown": {
          "description": "Disallow unknown units",
          "type": ["null", "boolean", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "boolean",
              "enum": [true, []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["boolean", "object"],
                "anyOf": [
                  {
                    "type": "boolean",
                    "enum": [true, {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreUnits": {
                        "$ref": "#/definitions/simpleArrayStringRule"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "unit-whitelist": {
          "$ref": "#/definitions/unitRule",
          "description": "Specify a whitelist of allowed units"
        }
      }
    },
    "value": {
      "properties": {
        "value-keyword-case": {
          "description": "Specify lowercase or uppercase for keywords values",
          "type": ["null", "string", "array"],
          "oneOf": [
            {
              "type": "null"
            },
            {
              "type": "string",
              "enum": ["lower", "upper", []]
            },
            {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "uniqueItems": true,
              "items": {
                "type": ["string", "object"],
                "anyOf": [
                  {
                    "type": "string",
                    "enum": ["lower", "upper", {}]
                  },
                  {
                    "type": "object",
                    "allOf": [
                      {
                        "$ref": "#/definitions/coreRule"
                      }
                    ],
                    "properties": {
                      "ignoreKeywords": {
                        "$ref": "#/definitions/simpleArrayStringRule",
                        "description": "Ignore case of keywords values"
                      }
                    }
                  }
                ]
              }
            }
          ]
        },
        "value-no-vendor-prefix": {
          "$ref": "#/definitions/booleanRule",
          "description": "Disallow vendor prefixes for values"
        }
      }
    },
    "valueList": {
      "properties": {
        "value-list-comma-newline-after": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace after the commas of value lists",
          "deprecated": true
        },
        "value-list-comma-newline-before": {
          "$ref": "#/definitions/newlineRule",
          "description": "Require a newline or disallow whitespace before the commas of value lists",
          "deprecated": true
        },
        "value-list-comma-space-after": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace after the commas of value lists",
          "deprecated": true
        },
        "value-list-comma-space-before": {
          "$ref": "#/definitions/spaceRule",
          "description": "Require a single space or disallow whitespace before the commas of value lists",
          "deprecated": true
        },
        "value-list-max-empty-lines": {
          "$ref": "#/definitions/integerRule",
          "description": "Limit the number of adjacent empty lines within value lists",
          "deprecated": true
        }
      }
    }
  },
  "properties": {
    "extends": {
      "$ref": "#/definitions/simpleStringOrArrayStringRule",
      "description": "Your configuration can extend an existing configuration(s) (whether your own or a third-party config)"
    },
    "plugins": {
      "$ref": "#/definitions/simpleArrayStringRule",
      "description": "Plugins are rules or sets of rules built by the community that support methodologies, toolsets, non-standard CSS features, or very specific use cases"
    },
    "customSyntax": {
      "description": "Specify a custom syntax to use on your code.",
      "type": "string"
    },
    "overrides": {
      "description": "Provide rule and behavior overrides for files that match particular glob patterns.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "customSyntax": {
            "type": "string"
          },
          "rules": {
            "$ref": "#/definitions/allRules"
          }
        }
      }
    },
    "processors": {
      "description": "Processors are functions that hook into stylelint's pipeline, modifying code on its way into stylelint and modifying results on their way out",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": [
              {
                "type": "string"
              }
            ],
            "additionalItems": {
              "type": "object"
            }
          }
        ]
      }
    },
    "ignoreDisables": {
      "description": "Ignore stylelint-disable (e.g. /* stylelint-disable block-no-empty */) comments.",
      "type": "boolean"
    },
    "ignoreFiles": {
      "$ref": "#/definitions/simpleStringOrArrayStringRule",
      "description": "Provide a glob or array of globs to ignore specific files"
    },
    "defaultSeverity": {
      "description": "The default severity level for all rules that do not have a severity specified in their secondary options",
      "type": "string",
      "enum": ["warning", "error"]
    },
    "reportDescriptionlessDisables": {
      "$ref": "#/definitions/booleanRule",
      "description": "Report stylelint-disable comments without a description."
    },
    "reportInvalidScopeDisables": {
      "$ref": "#/definitions/booleanRule",
      "description": "Report stylelint-disable comments that don't match rules that are specified in the configuration object."
    },
    "reportNeedlessDisables": {
      "$ref": "#/definitions/booleanRule",
      "description": "Report stylelint-disable comments that don't actually match any lints that need to be disabled"
    },
    "rules": {
      "$ref": "#/definitions/allRules"
    }
  },
  "title": "JSON schema for the Stylelint configuration files",
  "type": "object"
}
