{
  "$schema": "https://json-schema.org/draft-07/schema",
  "description": "JSON schema for sync-npm-packages config",
  "$id": "sync-npm-packages",
  "title": "JSON schema for sync-npm-packages config",
  "type": "object",
  "definitions": {
    "arrayable-string": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    }
  },
  "properties": {
    "target": {
      "type": "string",
      "description": "Target mirror site to sync",
      "enum": ["npmmirror"]
    },
    "cwd": {
      "type": "string",
      "description": "Current working directory for glob"
    },
    "ignore": {
      "description": "Ignore package.json glob pattern",
      "$ref": "#/definitions/arrayable-string",
      "default": []
    },
    "include": {
      "description": "Additional packages to sync",
      "$ref": "#/definitions/arrayable-string",
      "default": []
    },
    "exclude": {
      "description": "Exclude packages from being synced",
      "$ref": "#/definitions/arrayable-string",
      "default": []
    },
    "defaultIgnore": {
      "type": "boolean",
      "description": "Use built-in default ignore patterns",
      "default": true
    },
    "withOptional": {
      "description": "With optionalDependencies in package.json",
      "type": "boolean",
      "default": false
    },
    "debug": {
      "type": "boolean",
      "description": "Enable debug mode",
      "default": false
    },
    "dry": {
      "type": "boolean",
      "description": "Dry run",
      "default": false
    }
  },
  "required": ["target"],
  "additionalProperties": false
}
