-
Notifications
You must be signed in to change notification settings - Fork 2k
/
browsers.schema.json
140 lines (133 loc) · 4.1 KB
/
browsers.schema.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
{
"$schema": "http://json-schema.org/schema",
"definitions": {
"browser_type": {
"type": "string",
"enum": ["desktop", "mobile", "xr", "server"]
},
"browser_engine": {
"type": "string",
"enum": [
"Blink",
"EdgeHTML",
"Gecko",
"Presto",
"Trident",
"WebKit",
"V8"
]
},
"browser_status": {
"type": "string",
"enum": [
"retired",
"current",
"exclusive",
"beta",
"nightly",
"esr",
"planned"
]
},
"browsers": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/browser_statement"
},
"minProperties": 1,
"maxProperties": 1,
"errorMessage": {
"minProperties": "A browser must be described within the file.",
"maxProperties": "Each browser JSON file may only describe one browser."
},
"tsType": "Record<BrowserName, BrowserStatement>"
},
"browser_statement": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The browser brand name (e.g. Firefox, Firefox Android, Chrome, etc.)."
},
"type": {
"$ref": "#/definitions/browser_type",
"description": "The platform the browser runs on (e.g. desktop, mobile, XR, or server engine).",
"tsType": "BrowserType"
},
"upstream": {
"type": "string",
"description": "The upstream browser this browser derives from (e.g. Firefox Android is derived from Firefox, Edge is derived from Chrome).",
"tsType": "BrowserName"
},
"preview_name": {
"type": "string",
"description": "The name of the browser's preview channel (e.g. 'Nightly' for Firefox or 'TP' for Safari)."
},
"pref_url": {
"type": "string",
"description": "URL of the page where feature flags can be changed (e.g. 'about:config' for Firefox or 'chrome://flags' for Chrome)."
},
"accepts_flags": {
"type": "boolean",
"description": "Whether the browser supports user-toggleable flags that enable or disable features."
},
"accepts_webextensions": {
"type": "boolean",
"description": "Whether the browser supports extensions."
},
"releases": {
"type": "object",
"additionalProperties": { "$ref": "#/definitions/release_statement" },
"description": "The known versions of this browser.",
"tsType": "{ [version: string]: ReleaseStatement };"
}
},
"required": [
"name",
"type",
"releases",
"accepts_flags",
"accepts_webextensions"
],
"additionalProperties": false
},
"release_statement": {
"type": "object",
"properties": {
"release_date": {
"type": "string",
"format": "date",
"description": "The date on which this version was released, formatted as `YYYY-MM-DD`."
},
"release_notes": {
"type": "string",
"format": "uri",
"pattern": "^https://",
"description": "A link to the release notes or changelog for a given release."
},
"status": {
"$ref": "#/definitions/browser_status",
"description": "A property indicating where in the lifetime cycle this release is in (e.g. current, retired, beta, nightly).",
"tsType": "BrowserStatus"
},
"engine": {
"$ref": "#/definitions/browser_engine",
"description": "Name of the browser's underlying engine.",
"tsType": "BrowserEngine"
},
"engine_version": {
"type": "string",
"description": "Version of the engine corresponding to the browser version."
}
},
"required": ["status"],
"additionalProperties": false
}
},
"title": "BrowserDataFile",
"type": "object",
"properties": {
"browsers": { "$ref": "#/definitions/browsers" }
},
"additionalProperties": false
}