94 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JSON
		
	
	
	
	
	
{
 | 
						|
	"$schema": "http://json-schema.org/draft-04/schema#",
 | 
						|
	"description": "A haxelib project",
 | 
						|
	"type": "object",
 | 
						|
	"properties": {
 | 
						|
		"name": { "$ref": "#/definitions/projectName" },
 | 
						|
		"url": {
 | 
						|
			"description": "Project's website",
 | 
						|
			"type": "string",
 | 
						|
			"format": "uri"
 | 
						|
		},
 | 
						|
		"description": {
 | 
						|
			"description": "Short description of the project",
 | 
						|
			"type": "string"
 | 
						|
		},
 | 
						|
		"license": {
 | 
						|
			"description": "Open source license under which the project is licensed",
 | 
						|
			"enum": ["GPL", "LGPL", "BSD", "Public", "MIT", "Apache"]
 | 
						|
		},
 | 
						|
		"version": { "$ref": "#/definitions/semver" },
 | 
						|
		"classPath": {
 | 
						|
			"description": "Folder in the package which contains the source files for this project",
 | 
						|
			"type": "string"
 | 
						|
		},
 | 
						|
		"contributors": {
 | 
						|
			"description": "List of project contributors that are allowed to upload to haxelib",
 | 
						|
			"type": "array",
 | 
						|
			"items": { "$ref": "#/definitions/userName" },
 | 
						|
			"minItems": 1,
 | 
						|
			"uniqueItems": true
 | 
						|
		},
 | 
						|
		"tags": {
 | 
						|
			"description": "List of tags for easier finding the project on haxelib",
 | 
						|
			"type": "array",
 | 
						|
			"items": { "$ref": "#/definitions/haxelibTag" },
 | 
						|
			"uniqueItems": true
 | 
						|
		},
 | 
						|
		"dependencies": {
 | 
						|
			"type": "object",
 | 
						|
			"description": "Project's dependencies",
 | 
						|
			"patternProperties": {
 | 
						|
				"^[A-Za-z0-9_.-]{3,}$": { "$ref": "#/definitions/dependencyVersion" }
 | 
						|
			},
 | 
						|
			"additionalProperties": false
 | 
						|
		},
 | 
						|
		"releasenote": {
 | 
						|
			"description": "Short description of changes made in this version",
 | 
						|
			"type": "string"
 | 
						|
		}
 | 
						|
	},
 | 
						|
	"additionalProperties": false,
 | 
						|
	"required": ["name", "license", "releasenote", "contributors", "version"],
 | 
						|
	"definitions": {
 | 
						|
		"userName": {
 | 
						|
			"description": "The name of a user",
 | 
						|
			"type": "string",
 | 
						|
			"minLength": 3,
 | 
						|
			"pattern": "^[A-Za-z0-9_.-]{3,}$"
 | 
						|
		},
 | 
						|
		"projectName": {
 | 
						|
			"description": "The name of a haxelib project",
 | 
						|
			"type": "string",
 | 
						|
			"minLength": 3,
 | 
						|
			"pattern": "^[A-Za-z0-9_.-]{3,}$",
 | 
						|
			"not": {
 | 
						|
				"anyOf": [
 | 
						|
					{"enum": ["haxe", "all"]},
 | 
						|
					{"pattern": "\\.(zip|hxml)$"}
 | 
						|
				]
 | 
						|
			}
 | 
						|
		},
 | 
						|
		"haxelibTag": {
 | 
						|
			"description": "A keyword or term associated with a haxelib project",
 | 
						|
			"type": "string",
 | 
						|
			"minLength": 2,
 | 
						|
			"pattern": "^[A-Za-z0-9_.-]{2,}$"
 | 
						|
		},
 | 
						|
		"semver": {
 | 
						|
			"type": "string",
 | 
						|
			"description": "Project's version",
 | 
						|
			"pattern": "^(\\d|[1-9]\\d*)\\.(\\d|[1-9]\\d*)\\.(\\d|[1-9]\\d*)(-(alpha|beta|rc)(\\.(\\d|[1-9]\\d*))?)?$"
 | 
						|
		},
 | 
						|
		"dependencyVersion": {
 | 
						|
			"oneOf": [
 | 
						|
				{ "$ref": "#/definitions/semver" },
 | 
						|
				{
 | 
						|
					"type": "string",
 | 
						|
					"maxLength": 0
 | 
						|
				}
 | 
						|
			]
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |