{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"type": "array",
	"items": {
		"type": "object",
		"additionalProperties": false,
		"properties": {
			"name": {
				"type": "string",
				"markdownDescription": "OCaml name of the meta."
			},
			"metadata": {
				"type": "string",
				"markdownDescription": "Actual name of the meta as it's used in Haxe code."
			},
			"doc": {
				"type": "string",
				"markdownDescription": "Documentation for the meta that is shown in `--help-metas` and IDE hints."
			},
			"platforms": {
				"type": "array",
				"markdownDescription": "Platforms on which this meta has an effect.",
				"minItems": 1,
				"items": {
					"enum": [
						"js",
						"lua",
						"neko",
						"flash",
						"php",
						"cpp",
						"cs",
						"java",
						"python",
						"hl",
						"eval"
					]
				}
			},
			"params": {
				"type": "array",
				"markdownDescription": "Parameters this meta takes.",
				"minItems": 1,
				"items": {
					"type": "string"
				}
			},
			"devcomment": {
				"type": "string",
				"markdownDescription": "Internal comment that is not exposed."
			},
			"internal": {
				"type": "boolean",
				"markdownDescription": "Whether this define is for internal use only, in which case it is not exposed to the CLI and the `--display` protocol."
			},
			"targets": {
				"type": "array",
				"markdownDescription": "On what the meta can be used.",
				"minItems": 1,
				"items": {
					"enum": [
						"TClass",
						"TClassField",
						"TAbstract",
						"TAbstractField",
						"TEnum",
						"TTypedef",
						"TExpr",
						"TTypeParameter",
						"TAnyField"
					]
				}
			}
		},
		"required": [
			"name",
			"metadata",
			"doc"
		]
	}
}