{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"title": "Typescript Value Type",
	"type": ["object", "string", "integer", "boolean", "null", "array"],
	"description": "This file describes a typescript type. This is used to define the type of arguments in a json file, and have it converted to typescript. If this is an array, this is a tuple type (or literal array type).",
	
	"anyOf": [
		{
			"type": "string",
			"enum": ["string", "number", "boolean", "null", "any", "void", "never", "unknown", "undefined", "object", "bigint" ]
		},
		{
			"type": "string",
			"pattern": "^(?:[a-zA-Z_][a-zA-Z0-9_]*|\".*\"|'.*'|\\[\\]|<.*>)(?:\\|[a-zA-Z_][a-zA-Z0-9_]*|\".*\"|'.*'|\\[\\]|<.*>)*(?:\\&[a-zA-Z_][a-zA-Z0-9_]*|\".*\"|'.*'|\\[\\]|<.*>)*$"
		},
		{
			"type": "object",
			"patternProperties": {
				"^[a-zA-Z_][a-zA-Z0-9_]*$": {
					"$ref": "#"
				}
			},
			"additionalProperties": false
		},
		{
			"type": "array",
			"items": {
				"$ref": "#"
			}
		},
		{
			"type": "boolean"
		},
		{
			"type": "integer"
		},
		{
			"type": "null"
		}
	]
}