| { |
| "$schema": "http://json-schema.org/draft-07/schema#", |
| |
| "definitions": { |
| "browser_type": { |
| "type": "string", |
| "enum": ["desktop", "mobile", "xr", "server"] |
| }, |
| |
| "browser_engine": { |
| "type": "string", |
| "enum": [ |
| "Blink", |
| "EdgeHTML", |
| "Gecko", |
| "Presto", |
| "Trident", |
| "WebKit", |
| "V8" |
| ] |
| }, |
| |
| "browser_name": { |
| "type": "string", |
| "description": "Browser ID.", |
| "enum": [ |
| "bun", |
| "chrome", |
| "chrome_android", |
| "deno", |
| "edge", |
| "firefox", |
| "firefox_android", |
| "ie", |
| "nodejs", |
| "oculus", |
| "opera", |
| "opera_android", |
| "safari", |
| "safari_ios", |
| "samsunginternet_android", |
| "webview_android", |
| "webview_ios" |
| ] |
| }, |
| |
| "upstream_browser_name": { |
| "type": "string", |
| "description": "Upstream browser ID.", |
| "enum": ["chrome", "chrome_android", "firefox", "safari", "safari_ios"] |
| }, |
| |
| "browser_status": { |
| "type": "string", |
| "enum": ["retired", "current", "beta", "nightly", "esr", "planned"] |
| }, |
| |
| "browsers": { |
| "type": "object", |
| "propertyNames": { |
| "$ref": "#/definitions/browser_name" |
| }, |
| "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": "Browser brand name.", |
| "examples": ["Firefox", "Firefox Android", "Chrome"] |
| }, |
| "type": { |
| "$ref": "#/definitions/browser_type", |
| "description": "Platform the browser runs on.", |
| "tsType": "BrowserType" |
| }, |
| "upstream": { |
| "type": "string", |
| "description": "Upstream browser this browser derives from.", |
| "tsType": "BrowserName" |
| }, |
| "preview_name": { |
| "type": "string", |
| "description": "Name of the browser's preview channel.", |
| "examples": ["Nightly", "TP"] |
| }, |
| "pref_url": { |
| "type": "string", |
| "description": "URL of the page where feature flags can be changed.", |
| "examples": ["about:config", "chrome://flags"] |
| }, |
| "accepts_flags": { |
| "type": "boolean", |
| "description": "Whether the browser supports feature 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": "Releases 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": "When this version was released or will be released (`YYYY-MM-DD`)." |
| }, |
| "release_notes": { |
| "type": "string", |
| "format": "uri", |
| "pattern": "^https://", |
| "description": "Link to the release notes or changelog." |
| }, |
| "status": { |
| "$ref": "#/definitions/browser_status", |
| "description": "Where in the lifetime cycle this release is.", |
| "tsType": "BrowserStatus" |
| }, |
| "engine": { |
| "$ref": "#/definitions/browser_engine", |
| "description": "Browser engine name.", |
| "tsType": "BrowserEngine" |
| }, |
| "engine_version": { |
| "type": "string", |
| "description": "Engine version used in this release." |
| } |
| }, |
| "required": ["status"], |
| "dependencies": { |
| "engine": ["engine_version"] |
| }, |
| "additionalProperties": false |
| } |
| }, |
| |
| "title": "BrowserDataFile", |
| "type": "object", |
| "properties": { |
| "browsers": { "$ref": "#/definitions/browsers" } |
| }, |
| "additionalProperties": false |
| } |