{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "additionalProperties": false,
    "required": [
        "name",
        "description",
        "version",
        "author",
        "homepage",
        "repository",
        "bugs",
        "licenses",
        "main",
        "scripts",
        "engines",
        "keywords",
        "dependencies",
        "devDependencies",
        "readme",
        "_id",
        "_from"
    ],
    "properties": {
        "name": { "type": "string" },
        "description": {
            "type": "string",
            "contentMediaType": "text/plain"
        },
        "version": { "type": "string" },
        "author": {
            "type": "object",
            "additionalProperties": false,
            "required": ["name", "url"],
            "properties": {
                "name": { "type": "string" },
                "url": {
                    "type": "string",
                    "format": "uri"
                }
            }
        },
        "homepage": {
            "type": "string",
            "format": "uri"
        },
        "repository": {
            "type": "object",
            "additionalProperties": false,
            "required": ["type", "url"],
            "properties": {
                "type": { "type": "string" },
                "url": {
                    "type": "string",
                    "format": "uri"
                }
            }
        },
        "bugs": {
            "type": "object",
            "additionalProperties": false,
            "required": ["url"],
            "properties": {
                "url": {
                    "type": "string",
                    "format": "uri"
                }
            }
        },
        "licenses": {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": false,
                "required": ["type", "url"],
                "properties": {
                    "type": { "type": "string" },
                    "url": {
                        "type": "string",
                        "format": "uri"
                    }
                }
            }
        },
        "main": { "type": "string" },
        "scripts": {
            "type": "object",
            "additionalProperties": false,
            "required": ["test"],
            "properties": {
                "test": { "type": "string" }
            }
        },
        "engines": {
            "type": "object",
            "additionalProperties": false,
            "required": ["node"],
            "properties": {
                "node": { "type": "string" }
            }
        },
        "keywords": {
            "type": "array",
            "items": { "type": "string" }
        },
        "dependencies": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "async",
                "coffee-script",
                "colors",
                "dateformat",
                "eventemitter2",
                "findup-sync",
                "glob",
                "hooker",
                "iconv-lite",
                "minimatch",
                "nopt",
                "rimraf",
                "lodash",
                "underscore.string",
                "which",
                "js-yaml",
                "exit",
                "getobject",
                "grunt-legacy-util",
                "grunt-legacy-log"
            ],
            "properties": {
                "async": { "type": "string" },
                "coffee-script": { "type": "string" },
                "colors": { "type": "string" },
                "dateformat": { "type": "string" },
                "eventemitter2": { "type": "string" },
                "findup-sync": { "type": "string" },
                "glob": { "type": "string" },
                "hooker": { "type": "string" },
                "iconv-lite": { "type": "string" },
                "minimatch": { "type": "string" },
                "nopt": { "type": "string" },
                "rimraf": { "type": "string" },
                "lodash": { "type": "string" },
                "underscore.string": { "type": "string" },
                "which": { "type": "string" },
                "js-yaml": { "type": "string" },
                "exit": { "type": "string" },
                "getobject": { "type": "string" },
                "grunt-legacy-util": { "type": "string" },
                "grunt-legacy-log": { "type": "string" }
            }
        },
        "devDependencies": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "temporary",
                "grunt-contrib-jshint",
                "grunt-contrib-nodeunit",
                "grunt-contrib-watch",
                "difflet",
                "semver",
                "shelljs"
            ],
            "properties": {
                "temporary": { "type": "string" },
                "grunt-contrib-jshint": { "type": "string" },
                "grunt-contrib-nodeunit": { "type": "string" },
                "grunt-contrib-watch": { "type": "string" },
                "difflet": { "type": "string" },
                "semver": { "type": "string" },
                "shelljs": { "type": "string" }
            }
        },
        "readme": {
            "type": "string",
            "contentMediaType": "text/markdown"
        },
        "_id": { "type": "string" },
        "_from": { "type": "string" }
    }
}
