{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "https://json.schemastore.org/jshintrc",
  "properties": {
    "bitwise": {
      "description": "Prohibit the use of bitwise operators (&, |, ^, etc.)",
      "type": "boolean",
      "default": false
    },
    "curly": {
      "description": "Requires you to always put curly braces around blocks in loops and conditionals",
      "type": "boolean",
      "default": false
    },
    "eqeqeq": {
      "description": "Prohibits the use of `==` and `!=` in favor of `===` and `!==`",
      "type": "boolean",
      "default": false
    },
    "esversion": {
      "description": "The ECMAScript version to which the code must adhere",
      "type": "integer",
      "default": 5,
      "enum": [3, 5, 6, 7, 8, 9, 10, 11]
    },
    "forin": {
      "description": "Requires all `for in` loops to filter object's items with obj.hasOwnProperty()",
      "type": "boolean",
      "default": false
    },
    "freeze": {
      "description": "Prohibits overwriting prototypes of native objects such as Array, Date and so on",
      "type": "boolean",
      "default": false
    },
    "funcscope": {
      "description": "Suppresses warnings about declaring variables inside of control structures while accessing them later from the outside",
      "type": "boolean",
      "default": false
    },
    "futurehostile": {
      "description": "Enables warnings about the use of identifiers which are defined in future versions of JavaScript",
      "type": "boolean",
      "default": false
    },
    "iterator": {
      "description": "Suppresses warnings about the __iterator__ property.",
      "type": "boolean",
      "default": false
    },
    "latedef": {
      "description": "Prohibits the use of a variable before it was defined",
      "enum": [true, false, "nofunc"],
      "default": false
    },
    "leanswitch": {
      "description": "Prohibits unnecessary clauses within `switch` statements",
      "type": "boolean",
      "default": false
    },
    "maxcomplexity": {
      "description": "Max cyclomatic complexity per function",
      "type": ["boolean", "integer"],
      "default": false
    },
    "maxdepth": {
      "description": "Max depth of nested blocks",
      "type": ["boolean", "integer"],
      "default": false
    },
    "maxerr": {
      "description": "Maximum amount of warnings JSHint will produce before giving up",
      "type": "integer",
      "default": 50
    },
    "maxparams": {
      "description": "Max number of formal parameters allowed per function",
      "type": ["boolean", "integer"]
    },
    "maxstatements": {
      "description": "Max number statements per function",
      "type": ["boolean", "integer"],
      "default": false
    },
    "noarg": {
      "description": "Prohibits the use of `arguments.caller` and `arguments.callee`",
      "type": "boolean",
      "default": false
    },
    "nocomma": {
      "description": "Prohibits the use of the comma operator",
      "type": "boolean",
      "default": false
    },
    "nonbsp": {
      "description": "Warns about `non-breaking whitespace` characters",
      "type": "boolean",
      "default": false
    },
    "nonew": {
      "description": "Prohibits the use of constructors for side-effects (without assignment)",
      "type": "boolean",
      "default": false
    },
    "notypeof": {
      "description": "Suppresses warnings about invalid `typeof`operator values",
      "type": "boolean",
      "default": false
    },
    "noreturnawait": {
      "description": "Async functions resolve on their return value. In most cases, this makes returning the result of an AwaitExpression (which is itself a Promise instance) unnecessary",
      "type": "boolean",
      "default": false
    },
    "regexpu": {
      "description": "Enables warnings for regular expressions which do not include the 'u' flag",
      "type": "boolean",
      "default": false
    },
    "shadow": {
      "description": "Suppresses warnings about variable shadowing. i.e. declaring a variable that had been already declared somewhere in the outer scope",
      "type": ["boolean", "string"],
      "default": false,
      "enum": [true, false, "inner", "outer"]
    },
    "singleGroups": {
      "description": "Prohibits the use of the grouping operator when it is not strictly required.",
      "type": "boolean",
      "default": false
    },
    "strict": {
      "description": "Requires all code to run in ES5 strict mode",
      "type": ["boolean", "string"],
      "default": false,
      "enum": [true, false, "implied", "global", "func"]
    },
    "trailingcomma": {
      "description": "Warns when a comma is not placed after the last element in an array or object literal",
      "type": "boolean",
      "default": false
    },
    "undef": {
      "description": "Prohibits the use of explicitly undeclared variables",
      "type": "boolean",
      "default": false
    },
    "unused": {
      "description": "Warns when you define and never use your variables",
      "type": ["boolean", "string"],
      "default": false,
      "enum": [true, false, "vars", "strict"]
    },
    "varstmt": {
      "description": "Forbids the use of VariableStatements (`var`) in favor of `let` and `const`",
      "type": "boolean",
      "default": false
    },
    "asi": {
      "description": "Suppresses warnings about missing semicolons",
      "type": "boolean",
      "default": false
    },
    "boss": {
      "description": "Suppresses warnings about the use of assignments in cases where comparisons are expected",
      "type": "boolean",
      "default": false
    },
    "debug": {
      "description": "Suppresses warnings about the `debugger` statements in your code",
      "type": "boolean",
      "default": false
    },
    "elision": {
      "description": "Tells JSHint that your code uses ES3 array elision elements, or empty elements",
      "type": "boolean",
      "default": false
    },
    "eqnull": {
      "description": "Suppresses warnings about `== null` comparisons",
      "type": "boolean",
      "default": false
    },
    "evil": {
      "description": "Suppresses warnings about the use of `eval`",
      "type": "boolean",
      "default": false
    },
    "expr": {
      "description": "Suppresses warnings about the use of expressions where normally you would expect to see assignments or function calls",
      "type": "boolean",
      "default": false
    },
    "lastsemic": {
      "description": "Suppresses warnings about missing semicolons, but only when the semicolon is omitted for the last statement in a one-line block",
      "type": "boolean",
      "default": false
    },
    "loopfunc": {
      "description": "Suppresses warnings about functions inside of loops",
      "type": "boolean",
      "default": false
    },
    "moz": {
      "description": "Tells JSHint that your code uses Mozilla JavaScript extensions",
      "type": "boolean",
      "default": false
    },
    "noyield": {
      "description": "Suppresses warnings about generator functions with no `yield` statement in them",
      "type": "boolean",
      "default": false
    },
    "plusplus": {
      "description": "Prohibits the use of `++` and `--`",
      "type": "boolean",
      "default": false
    },
    "proto": {
      "description": "Suppresses warnings about the `__proto__` property",
      "type": "boolean",
      "default": false
    },
    "scripturl": {
      "description": "Suppresses warnings about the use of script-targeted URLs",
      "type": "boolean",
      "default": false
    },
    "supernew": {
      "description": "Suppresses warnings about constructions like `new function () { ... };` and `new Object;`",
      "type": "boolean",
      "default": false
    },
    "validthis": {
      "description": "Suppresses warnings about possible strict violations when the code is running in strict mode and you use `this` in a non-constructor function",
      "type": "boolean",
      "default": false
    },
    "withstmt": {
      "description": "Suppresses warnings about the use of the `with` statement",
      "type": "boolean",
      "default": false
    },
    "browser": {
      "description": "[Environment] Web Browser (window, document, etc)",
      "type": "boolean",
      "default": false
    },
    "browserify": {
      "description": "[Environment] Browserify",
      "type": "boolean",
      "default": false
    },
    "couch": {
      "description": "[Environment] CouchDB",
      "type": "boolean",
      "default": false
    },
    "devel": {
      "description": "[Environment] Development/debugging (alert, confirm, etc)",
      "type": "boolean",
      "default": false
    },
    "dojo": {
      "description": "[Environment] Dojo Toolkit",
      "type": "boolean",
      "default": false
    },
    "jasmine": {
      "description": "[Environment] Jasmine unit testing framework",
      "type": "boolean",
      "default": false
    },
    "jquery": {
      "description": "[Environment] jQuery",
      "type": "boolean",
      "default": false
    },
    "mocha": {
      "description": "[Environment] Mocha unit testing framework",
      "type": "boolean",
      "default": false
    },
    "module": {
      "description": "[Environment] ES6 module",
      "type": "boolean",
      "default": false
    },
    "mootools": {
      "description": "[Environment] MooTools",
      "type": "boolean",
      "default": false
    },
    "node": {
      "description": "[Environment] Node.js",
      "type": "boolean",
      "default": false
    },
    "nonstandard": {
      "description": "[Environment] Widely adopted globals (escape, unescape, etc)",
      "type": "boolean",
      "default": false
    },
    "phantom": {
      "description": "[Environment] PhantomJS runtime environment",
      "type": "boolean",
      "default": false
    },
    "prototypejs": {
      "description": "[Environment] Prototype JavaScript framework",
      "type": "boolean",
      "default": false
    },
    "rhino": {
      "description": "[Environment] Rhino",
      "type": "boolean",
      "default": false
    },
    "shelljs": {
      "description": "[Environment] Defines globals exposed by the ShellJS library",
      "type": "boolean",
      "default": false
    },
    "typed": {
      "description": "[Environment] Defines globals for typed array constructors",
      "type": "boolean",
      "default": false
    },
    "worker": {
      "description": "[Environment] Web Workers",
      "type": "boolean",
      "default": false
    },
    "wsh": {
      "description": "[Environment] Windows Scripting Host",
      "type": "boolean",
      "default": false
    },
    "yui": {
      "description": "[Environment] Yahoo User Interface",
      "type": "boolean",
      "default": false
    },
    "globals": {
      "description": "Specify a white list of global variables that are not formally defined in the source code",
      "type": "object",
      "additionalProperties": {
        "description": "Name of the global. Set to `true` for read/write, `false` for read-only.",
        "type": "boolean"
      }
    },
    "extends": {
      "description": "Specify the path to another configuration file to use as a base, relative to the current file",
      "type": "string"
    },
    "overrides": {
      "description": "Specify the options that should only be applied to files matching a given path pattern",
      "type": "object",
      "additionalProperties": {
        "description": "The path pattern to apply the given options to",
        "type": "object"
      }
    }
  },
  "title": "JSON schema for JSHint configuration files",
  "type": "object"
}