@mdn/browser-compat-data
Version:
Browser compatibility data provided by MDN Web Docs
317 lines (290 loc) • 11 kB
TypeScript
/* This file is a part of @mdn/browser-compat-data
* See LICENSE file for more information. */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source schema files in
* schemas/*, and run "npm run gentypes" to regenerate this file.
*/
/**
* The names of the known browsers.
*/
export type BrowserName = "bun" | "chrome" | "chrome_android" | "deno" | "edge" | "firefox" | "firefox_android" | "ie" | "nodejs" | "oculus" | "opera" | "opera_android" | "safari" | "safari_ios" | "samsunginternet_android" | "webview_android" | "webview_ios";
export type VersionValue = string | false;
/**
* This interface was referenced by `BrowserDataFile`'s JSON-Schema
* via the `definition` "browsers".
*/
export type Browsers = Record<BrowserName, BrowserStatement>;
/**
* This interface was referenced by `BrowserDataFile`'s JSON-Schema
* via the `definition` "browser_type".
*/
export type BrowserType = "desktop" | "mobile" | "xr" | "server";
/**
* This interface was referenced by `BrowserDataFile`'s JSON-Schema
* via the `definition` "browser_engine".
*/
export type BrowserEngine = "Blink" | "EdgeHTML" | "Gecko" | "Presto" | "Trident" | "WebKit" | "V8";
/**
* This interface was referenced by `BrowserDataFile`'s JSON-Schema
* via the `definition` "browser_status".
*/
export type BrowserStatus = "retired" | "current" | "beta" | "nightly" | "esr" | "planned";
/**
* This interface was referenced by `BrowserDataFile`'s JSON-Schema
* via the `definition` "browser_statement".
*/
export interface BrowserStatement {
/**
* The browser brand name (e.g. Firefox, Firefox Android, Chrome, etc.).
*/
name: string;
/**
* The platform the browser runs on (e.g. desktop, mobile, XR, or server engine).
*/
type: BrowserType;
/**
* The upstream browser this browser derives from (e.g. Firefox Android is derived from Firefox, Edge is derived from Chrome).
*/
upstream?: BrowserName;
/**
* The name of the browser's preview channel (e.g. 'Nightly' for Firefox or 'TP' for Safari).
*/
preview_name?: string;
/**
* URL of the page where feature flags can be changed (e.g. 'about:config' for Firefox or 'chrome://flags' for Chrome).
*/
pref_url?: string;
/**
* Whether the browser supports user-toggleable flags that enable or disable features.
*/
accepts_flags: boolean;
/**
* Whether the browser supports extensions.
*/
accepts_webextensions: boolean;
/**
* The known versions of this browser.
*/
releases: {[version: string]: ReleaseStatement};
}
/**
* This interface was referenced by `BrowserDataFile`'s JSON-Schema
* via the `definition` "release_statement".
*/
export interface ReleaseStatement {
/**
* The date on which this version was released, formatted as `YYYY-MM-DD`.
*/
release_date?: string;
/**
* A link to the release notes or changelog for a given release.
*/
release_notes?: string;
/**
* A property indicating where in the lifetime cycle this release is in (e.g. current, retired, beta, nightly).
*/
status: BrowserStatus;
/**
* Name of the browser's underlying engine.
*/
engine?: BrowserEngine;
/**
* Version of the engine corresponding to the browser version.
*/
engine_version?: string;
}
/**
* This interface was referenced by `CompatDataFile`'s JSON-Schema definition
* via the `patternProperty` "^(?!__compat)(?!webextensions)[a-zA-Z_0-9-$@]*$".
*
* This interface was referenced by `CompatDataFile`'s JSON-Schema
* via the `definition` "identifier".
*/
export type Identifier = {[key: string]: Identifier} & {__compat?: CompatStatement};
/**
* The data for the support of each browser, containing a `support_statement` object for each browser identifier with information about versions, prefixes, or alternate names, as well as notes.
*/
export type SupportBlock = Partial<Record<BrowserName, SupportStatement>>;
/**
* This interface was referenced by `CompatDataFile`'s JSON-Schema
* via the `definition` "support_statement".
*/
export type SupportStatement =
| SimpleSupportStatement
| [SimpleSupportStatement, SimpleSupportStatement, ...SimpleSupportStatement[]];
/**
* This interface was referenced by `CompatDataFile`'s JSON-Schema definition
* via the `patternProperty` "^__compat$".
*
* This interface was referenced by `CompatDataFile`'s JSON-Schema
* via the `definition` "compat_statement".
*/
export interface CompatStatement {
/**
* A string containing a human-readable description of the feature.
*/
description?: string;
/**
* A URL that points to an MDN reference page documenting the feature. The URL should be language-agnostic.
*/
mdn_url?: string;
/**
* An optional URL or array of URLs, each of which is for a specific part of a specification in which this feature is defined. Each URL must contain a fragment identifier.
*/
spec_url?: string | [string, string, ...string[]];
/**
* An optional array of strings allowing to assign tags to the feature.
*
* @minItems 1
*/
tags?: [string, ...string[]];
/**
* The path to the file that defines this feature in browser-compat-data, relative to the repository root. Useful for guiding potential contributors towards the correct file to edit. This is automatically generated at build time and should never manually be specified.
*/
source_file?: string;
support: SupportBlock;
status?: StatusBlock;
}
/**
* An object containing information about the stability of the feature.
*/
export interface StatusBlock {
/**
* @deprecated
* (This property is deprecated. Prefer using more well-defined stability calculations, such as Baseline, instead.) A boolean value. Usually, this value is true for single-implementer features and false for multiple-implementer features or single-implementer features that are not expected to change.
*/
experimental: boolean;
/**
* A boolean value indicating whether the feature is part of an active specification or specification process.
*/
standard_track: boolean;
/**
* A boolean value that indicates whether the feature is no longer recommended. It might be removed in the future or might only be kept for compatibility purposes. Avoid using this functionality.
*/
deprecated: boolean;
}
/**
* This interface was referenced by `CompatDataFile`'s JSON-Schema
* via the `definition` "simple_support_statement".
*/
export interface SimpleSupportStatement {
/**
* A string (indicating which browser version added this feature), or the value false (indicating the feature is not supported).
*/
version_added: VersionValue;
/**
* A string, indicating which browser version removed this feature.
*/
version_removed?: string;
/**
* A string, indicating the last browser version that supported this feature. This is automatically generated.
*/
version_last?: string;
/**
* A prefix to add to the sub-feature name (defaults to empty string). If applicable, leading and trailing '-' must be included.
*/
prefix?: string;
/**
* An alternative name for the feature, for cases where a feature is implemented under an entirely different name and not just prefixed.
*/
alternative_name?: string;
/**
* An optional array of objects describing flags that must be configured for this browser to support this feature.
*
* @minItems 1
*/
flags?: [FlagStatement, ...FlagStatement[]];
/**
* An optional changeset/commit URL for the revision which implemented the feature in the source code, or the URL to the bug tracking the implementation, for the associated browser.
*/
impl_url?: string | [string, string, ...string[]];
/**
* A boolean value indicating whether or not the implementation of the sub-feature deviates from the specification in a way that may cause compatibility problems. It defaults to false (no interoperability problems expected). If set to true, it is recommended that you add a note explaining how it diverges from the standard (such as that it implements an old version of the standard, for example).
*/
partial_implementation?: true;
/**
* A string or array of strings containing additional information.
*/
notes?: string | [string, string, ...string[]];
}
/**
* This interface was referenced by `CompatDataFile`'s JSON-Schema
* via the `definition` "flag_statement".
*/
export interface FlagStatement {
/**
* An enum that indicates the flag type.
*/
type: "preference" | "runtime_flag";
/**
* A string giving the name of the flag or preference that must be configured.
*/
name: string;
/**
* A string giving the value which the specified flag must be set to for this feature to work.
*/
value_to_set?: string;
}
export interface MetaBlock {
version: string;
timestamp: string;
}
export interface CompatData {
/**
* Contains metadata for the current BCD information, such as the BCD version.
*/
__meta: MetaBlock;
/**
* Contains data for each [Web API](https://developer.mozilla.org/docs/Web/API) interface.
*/
api: Identifier;
/**
* Contains data for each known and tracked browser/engine.
*/
browsers: Browsers;
/**
* Contains data for [CSS](https://developer.mozilla.org/docs/Web/CSS) properties, selectors, and at-rules.
*/
css: Identifier;
/**
* Contains data for [HTML](https://developer.mozilla.org/docs/Web/HTML) elements, attributes, and global attributes.
*/
html: Identifier;
/**
* Contains data for [HTTP](https://developer.mozilla.org/docs/Web/HTTP) headers, statuses, and methods.
*/
http: Identifier;
/**
* Contains data for [JavaScript](https://developer.mozilla.org/docs/Web/JavaScript) built-in Objects, statement, operators, and other ECMAScript language features.
*/
javascript: Identifier;
/**
* Contains data for various manifests, such as the [Web Application Manifest](https://developer.mozilla.org/docs/Web/Progressive_web_apps/manifest).
*/
manifests: Identifier;
/**
* Contains data for [MathML](https://developer.mozilla.org/docs/Web/MathML) elements, attributes, and global attributes.
*/
mathml: Identifier;
/**
* Contains data for [Media types](https://developer.mozilla.org/docs/Web/HTTP/Guides/MIME_types).
*/
mediatypes: Identifier;
/**
* Contains data for [SVG](https://developer.mozilla.org/docs/Web/SVG) elements, attributes, and global attributes.
*/
svg: Identifier;
/**
* Contains data for [WebAssembly](https://developer.mozilla.org/docs/WebAssembly) features.
*/
webassembly: Identifier;
/**
* Contains data for [WebDriver](https://developer.mozilla.org/docs/Web/WebDriver) commands.
*/
webdriver: Identifier;
/**
* Contains data for [WebExtensions](https://developer.mozilla.org/Add-ons/WebExtensions) JavaScript APIs and manifest keys.
*/
webextensions: Identifier;
}