{
  "title": "Factorio Data info.json",
  "$schema": "https://json-schema.org/draft-07/schema",
  "type": "object",
  "properties": {
    "name":{
      "type":"string",
      "title": "Internal name of the mod",
      "pattern": "^[a-zA-Z0-9_\\-]+$",
      "maxLength": 49,
      "minLength": 4
    },
    "version": {
      "type":"string",
      "title": "Version String",
      "pattern": "^(\\d+\\.){2}\\d+$"
    },
    "title": {
      "type": "string",
      "title": "Display name of the mod",
      "description": "Can be overwritten by locale entry in the `mod-name` category",
      "maxLength": 100
    },
    "author": {
      "type": "string",
      "title": "Author of the mod"
    },
    "contact": {
      "type":"string",
      "title": "Contact for this mod"
    },
    "homepage": {
      "type": "string",
      "title": "Homepage for the mod",
      "description": "Please don't put \"None\" here, just leave it empty if none",
      "pattern": "^($|http(s?):)"
    },
    "description": {
      "type": "string",
      "title": "A short description of the mod to show in-game",
      "description": "Can be overwritten by locale entry in the `mod-description` category",
      "maxLength": 500
    },
    "factorio_version": {
      "type":"string",
      "title": "The Factorio major version this mod supports",
      "pattern": "^\\d+\\.\\d+$"
    },
    "dependencies": {
      "type":"array",
      "title": "Mods this mod depends on or are incompatible with",
      "items": {
        "type":"string",
        "pattern": "^(([!?~+]|\\(\\?\\)) *)?([a-zA-Z0-9_ -]+)( *([<>]=?|=) *((\\d+\\.){1,2}\\d+))?$",
        "errorMessage": "Dependency does not match pattern \"[?|(?)|!|~|+] ModName [EqualityOperator ModVersion]\"",
        "defaultSnippets": [
          {
            "label": "simple",
            "body": "${1:modname}"
          },
          {
            "label": "version",
            "body": "${1:modname} ${2|<,<=,>,>=,=|} ${3:0.0.0}"
          },
          {
            "label": "incompatible",
            "body": "! ${1:modname}"
          },
          {
            "label": "optional",
            "body": "? ${1:modname}"
          },
          {
            "label": "recommended",
            "body": "+ ${1:modname}"
          },
          {
            "label": "hidden",
            "body": "(?) ${1:modname}"
          },
          {
            "label": "unordered",
            "body": "~ ${1:modname}"
          },
          {
            "label": "version",
            "body": "${1:modname} ${2|<,<=,>,>=,=|} ${3:0.0.0}"
          },
          {
            "label": "full",
            "body": "${1| ,~,?,(?),+|} ${2:modname} ${3|<,<=,>,>=,=|} ${4:0.0.0}"
          }
        ]
      }
    },
    "auto-enable": {
      "type": "boolean",
      "default": true
    },
    "quality_required": {
      "type": "boolean",
      "default": false
    },
    "rail_bridges_required": {
      "type": "boolean",
      "default": false
    },
    "spoiling_required": {
      "type": "boolean",
      "default": false
    },
    "freezing_required": {
      "type": "boolean",
      "default": false
    },
    "segmented_units_required": {
      "type": "boolean",
      "default": false
    },
    "expansion_shaders_required": {
      "type": "boolean",
      "default": false
    },
    "expansion_required": {
      "type": "boolean",
      "default": false
    },
    "space_travel_required": {
      "type": "boolean",
      "default": false
    }

  }
}
