{
  "$schema": "http://json-schema.org/draft-07/schema",
  "title": "ESLint Target",
  "description": "ESLint target options for Build Facade.",
  "type": "object",
  "properties": {
    "eslintConfig": {
      "type": "string",
      "description": "The name of the ESLint configuration file."
    },
    "fix": {
      "type": "boolean",
      "description": "Fixes linting errors (may overwrite linted files).",
      "default": false
    },
    "cache": {
      "type": "boolean",
      "description": "Only check changed files.",
      "default": false
    },
    "cacheLocation": {
      "type": "string",
      "description": "Path to the cache file or directory."
    },
    "outputFile": {
      "type": "string",
      "description": "File to write report to instead of the console. Supports placeholders: {projectName} will be replaced with the project name, {projectRoot} will be replaced with the project root path."
    },
    "stats": {
      "type": "boolean",
      "description": "Output performance statistics for ESLint rules",
      "default": false
    },
    "cacheStrategy": {
      "type": "string",
      "description": "Strategy to use for detecting changed files in the cache.",
      "default": "metadata",
      "enum": ["metadata", "content"]
    },
    "force": {
      "type": "boolean",
      "description": "Succeeds even if there was linting errors.",
      "default": false
    },
    "quiet": {
      "type": "boolean",
      "description": "Report errors only.",
      "default": false
    },
    "maxWarnings": {
      "type": "number",
      "description": "Number of warnings to trigger nonzero exit code.",
      "default": -1
    },
    "silent": {
      "type": "boolean",
      "description": "Hide output text.",
      "default": false
    },
    "lintFilePatterns": {
      "type": "array",
      "description": "One or more files/dirs/globs to pass directly to ESLint's `lintFiles()` method.",
      "default": [],
      "items": {
        "type": "string"
      }
    },
    "format": {
      "type": "string",
      "description": "ESLint Output formatter (https://eslint.org/docs/user-guide/formatters).",
      "default": "stylish",
      "anyOf": [
        {
          "enum": [
            "stylish",
            "compact",
            "codeframe",
            "unix",
            "visualstudio",
            "table",
            "checkstyle",
            "html",
            "jslint-xml",
            "json",
            "json-with-metadata",
            "junit",
            "tap"
          ]
        },
        { "minLength": 1 }
      ]
    },
    "noConfigLookup": {
      "type": "boolean",
      "description": "The equivalent of the `--no-config-lookup` flag on the ESLint CLI, it is false by default",
      "default": false
    },
    "concurrency": {
      "oneOf": [
        { "type": "string", "enum": ["auto", "off"] },
        { "type": "number" }
      ],
      "description": "The equivalent of the `--concurrency` flag on the ESLint CLI."
    },
    "applySuppressions": {
      "type": "boolean",
      "description": "The equivalent of the `--apply-suppressions` flag on the ESLint CLI."
    },
    "suppressionsLocation": {
      "type": "string",
      "description": "The equivalent of the `--suppressions-location` flag on the ESLint CLI."
    }
  },
  "additionalProperties": false,
  "required": ["lintFilePatterns"]
}
