{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "definitions": {
    "rule": {
      "oneOf": [
        {
          "description": "npm-package-json-lint rule\n\n\"off\" - turns the rule off\n\"warning\" - turns the rule on as a warning, which doesn't affect the exit code\n\"error\" - turns the rule on as an error, which when triggered generates an exit code of 2\n",
          "type": "string",
          "enum": ["off", "warning", "error"]
        },
        {
          "type": "array"
        }
      ]
    },
    "requiredNode": {
      "properties": {
        "require-author": {
          "$ref": "#/definitions/rule",
          "description": "Require author property."
        },
        "require-bin": {
          "$ref": "#/definitions/rule",
          "description": "Require bin property."
        },
        "require-bugs": {
          "$ref": "#/definitions/rule",
          "description": "Require bugs property."
        },
        "require-bundledDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require bundledDependencies property."
        },
        "require-config": {
          "$ref": "#/definitions/rule",
          "description": "Require config property."
        },
        "require-contributors": {
          "$ref": "#/definitions/rule",
          "description": "Require contributors property."
        },
        "require-cpu": {
          "$ref": "#/definitions/rule",
          "description": "Require cpu property."
        },
        "require-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require dependencies property."
        },
        "require-description": {
          "$ref": "#/definitions/rule",
          "description": "Require description property."
        },
        "require-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require devDependencies property."
        },
        "require-directories": {
          "$ref": "#/definitions/rule",
          "description": "Require directories property."
        },
        "require-engines": {
          "$ref": "#/definitions/rule",
          "description": "Require engines property."
        },
        "require-files": {
          "$ref": "#/definitions/rule",
          "description": "Require files property."
        },
        "require-homepage": {
          "$ref": "#/definitions/rule",
          "description": "Require homepage property."
        },
        "require-keywords": {
          "$ref": "#/definitions/rule",
          "description": "Require keywords property."
        },
        "require-license": {
          "$ref": "#/definitions/rule",
          "description": "Require license property."
        },
        "require-main": {
          "$ref": "#/definitions/rule",
          "description": "Require main property."
        },
        "require-man": {
          "$ref": "#/definitions/rule",
          "description": "Require man property."
        },
        "require-module": {
          "$ref": "#/definitions/rule",
          "description": "Require module property."
        },
        "require-name": {
          "$ref": "#/definitions/rule",
          "description": "Require name property."
        },
        "require-optionalDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require optionalDependencies property."
        },
        "require-os": {
          "$ref": "#/definitions/rule",
          "description": "Require os property."
        },
        "require-peerDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require peerDependencies property."
        },
        "require-preferGlobal": {
          "$ref": "#/definitions/rule",
          "description": "Require preferGlobal property."
        },
        "require-private": {
          "$ref": "#/definitions/rule",
          "description": "Require private property."
        },
        "require-publishConfig": {
          "$ref": "#/definitions/rule",
          "description": "Require publishConfig property."
        },
        "require-repository": {
          "$ref": "#/definitions/rule",
          "description": "Require repository property."
        },
        "require-scripts": {
          "$ref": "#/definitions/rule",
          "description": "Require scripts property."
        },
        "require-version": {
          "$ref": "#/definitions/rule",
          "description": "Require version property."
        }
      }
    },
    "dataType": {
      "properties": {
        "bin-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for bin."
        },
        "bundledDependencies-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for bundledDependencies."
        },
        "config-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for config."
        },
        "cpu-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for cpu."
        },
        "dependencies-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for dependencies."
        },
        "description-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for description."
        },
        "devDependencies-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for devDependencies."
        },
        "directories-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for directories."
        },
        "engines-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for engines."
        },
        "files-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for files."
        },
        "homepage-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for homepage."
        },
        "keywords-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for keywords."
        },
        "license-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for license."
        },
        "main-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for main."
        },
        "man-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for man."
        },
        "name-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for name."
        },
        "optionalDependencies-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for optionalDependencies."
        },
        "os-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for os."
        },
        "peerDependencies-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for peerDependencies."
        },
        "preferGlobal-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for preferGlobal."
        },
        "private-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for private."
        },
        "repository-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for repository."
        },
        "scripts-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for scripts."
        },
        "version-type": {
          "$ref": "#/definitions/rule",
          "description": "Ensure the proper data type is used for version."
        }
      }
    },
    "validValues": {
      "properties": {
        "valid-values-author": {
          "$ref": "#/definitions/rule",
          "description": "Requires author to equal one of the supplied values."
        },
        "valid-values-engines": {
          "$ref": "#/definitions/rule",
          "description": "Requires engines to equal one of the supplied values."
        },
        "valid-values-license": {
          "$ref": "#/definitions/rule",
          "description": "Requires license to equal one of the supplied values."
        },
        "valid-values-name-scope": {
          "$ref": "#/definitions/rule",
          "description": "Requires the scope used for the name to equal one of the supplied values."
        },
        "valid-values-private": {
          "$ref": "#/definitions/rule",
          "description": "Requires private to equal one of the supplied values."
        },
        "valid-values-publishConfig": {
          "$ref": "#/definitions/rule",
          "description": "Requires publishConfig to equal one of the supplied values."
        }
      }
    },
    "dependencies": {
      "properties": {
        "no-absolute-version-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict dependencies from specifying an absolute version."
        },
        "no-caret-version-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict dependencies from using caret version syntax."
        },
        "no-restricted-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict a list of dependencies."
        },
        "no-restricted-pre-release-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict listed dependencies from using pre-release versions."
        },
        "no-tilde-version-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict dependencies from using tilde version syntax."
        },
        "prefer-no-version-zero-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict dependencies from specifying version 0.x.x modules."
        },
        "prefer-absolute-version-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require all dependencies to use absolute versions."
        },
        "prefer-caret-version-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require all dependencies to use caret version syntax."
        },
        "prefer-tilde-version-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require all dependencies to use tilde version syntax."
        },
        "prefer-alphabetical-dependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require dependencies to be listed in alphabetical order."
        },
        "no-absolute-version-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict devDependencies from specifying an absolute version."
        },
        "no-caret-version-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict devDependencies from using caret version syntax."
        },
        "no-restricted-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict a list of devDependencies."
        },
        "no-restricted-pre-release-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict listed devDependencies from using pre-release versions."
        },
        "no-tilde-version-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict devDependencies from using tilde version syntax."
        },
        "prefer-no-version-zero-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Restrict devDependencies from specifying version 0.x.x modules."
        },
        "prefer-absolute-version-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require all devDependencies to use absolute versions."
        },
        "prefer-caret-version-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require all devDependencies to use caret version syntax."
        },
        "prefer-tilde-version-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require all devDependencies to use tilde version syntax."
        },
        "prefer-alphabetical-devDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require devDependencies to be listed in alphabetical order."
        },
        "prefer-alphabetical-bundledDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require bundledDependencies to be listed in alphabetical order."
        },
        "prefer-alphabetical-optionalDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require optionalDependencies to be listed in alphabetical order."
        },
        "prefer-alphabetical-peerDependencies": {
          "$ref": "#/definitions/rule",
          "description": "Require peerDependencies to be listed in alphabetical order."
        }
      }
    },
    "format": {
      "properties": {
        "description-format": {
          "$ref": "#/definitions/rule",
          "description": "Require description formatting rules, such as: requiring the first letter be capitalized and/or ending with a period."
        },
        "name-format": {
          "$ref": "#/definitions/rule",
          "description": "Require name to be lowercase."
        },
        "version-format": {
          "$ref": "#/definitions/rule",
          "description": "Require version to follow semver."
        }
      }
    },
    "packageJsonProperties": {
      "properties": {
        "prefer-property-order": {
          "$ref": "#/definitions/rule",
          "description": "Require all package.json properties to be in a specified order."
        }
      }
    },
    "deprecated": {
      "properties": {
        "prefer-no-engineStrict": {
          "$ref": "#/definitions/rule",
          "description": "Ensure engineStrict is not present in package.json file."
        }
      }
    }
  },
  "id": "https://json.schemastore.org/npmpackagejsonlintrc.json",
  "properties": {
    "extends": {
      "description": "Use the extends property to inherit rules from a shared configuration file/module.",
      "type": ["string", "array"],
      "items": {
        "type": "string"
      }
    },
    "rules": {
      "description": "npm-package-json-lint rules are configurable. Use the rules object to specify what rules should be used and what severity level they should follow.",
      "type": "object",
      "allOf": [
        {
          "$ref": "#/definitions/requiredNode"
        },
        {
          "$ref": "#/definitions/dataType"
        },
        {
          "$ref": "#/definitions/validValues"
        },
        {
          "$ref": "#/definitions/dependencies"
        },
        {
          "$ref": "#/definitions/format"
        },
        {
          "$ref": "#/definitions/packageJsonProperties"
        },
        {
          "$ref": "#/definitions/deprecated"
        }
      ]
    }
  },
  "title": "JSON schema for npm-package-json-lint configuration files",
  "type": "object"
}
