/** * Return array of browsers by selection queries. * * ```js * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] * ``` * * @param queries Browser queries. * @param opts Options. * @returns Array with browser names in Can I Use. */ declare function browserslist( queries?: string | readonly string[] | null, opts?: browserslist.Options ): string[] declare namespace browserslist { interface Query { compose: 'or' | 'and' type: string query: string not?: true } interface Options { /** * Path to processed file. It will be used to find config files. */ path?: string | false /** * Processing environment. It will be used to take right queries * from config file. */ env?: string /** * Custom browser usage statistics for "> 1% in my stats" query. */ stats?: Stats | string /** * Path to config file with queries. */ config?: string /** * Do not throw on unknown version in direct query. */ ignoreUnknownVersions?: boolean /** * Throw a error if env is not found. */ throwOnMissing?: boolean /** * Disable security checks for extend query. */ dangerousExtend?: boolean /** * Alias mobile browsers to the desktop version when Can I Use * doesn’t have data about the specified version. */ mobileToDesktop?: boolean } type Config = { defaults: string[] [section: string]: string[] | undefined } interface Stats { [browser: string]: { [version: string]: number } } /** * Browser names aliases. */ let aliases: { [alias: string]: string | undefined } /** * Aliases to work with joined versions like `ios_saf 7.0-7.1`. */ let versionAliases: { [browser: string]: | { [version: string]: string | undefined } | undefined } /** * Can I Use only provides a few versions for some browsers (e.g. `and_chr`). * * Fallback to a similar browser for unknown versions. */ let desktopNames: { [browser: string]: string | undefined } let data: { [browser: string]: | { name: string versions: string[] released: string[] releaseDate: { [version: string]: number | undefined | null } } | undefined } let nodeVersions: string[] interface Usage { [version: string]: number } let usage: { global?: Usage custom?: Usage | null [country: string]: Usage | undefined | null } let cache: { [feature: string]: { [name: string]: 'y' | 'n' } } /** * Default browsers query */ let defaults: readonly string[] /** * Which statistics should be used. Country code or custom statistics. * Pass `"my stats"` to load statistics from `Browserslist` files. */ type StatsOptions = string | 'my stats' | Stats | { dataByBrowser: Stats } /** * Return browsers market coverage. * * ```js * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 * ``` * * @param browsers Browsers names in Can I Use. * @param stats Which statistics should be used. * @returns Total market coverage for all selected browsers. */ function coverage(browsers: readonly string[], stats?: StatsOptions): number /** * Get queries AST to analyze the config content. * * @param queries Browser queries. * @param opts Options. * @returns An array of the data of each query in the config. */ function parse( queries?: string | readonly string[] | null, opts?: browserslist.Options ): Query[] function clearCaches(): void function parseConfig(string: string): Config function readConfig(file: string): Config function findConfig(...pathSegments: string[]): Config | undefined interface LoadConfigOptions { config?: string path?: string env?: string } function loadConfig(options: LoadConfigOptions): string[] | undefined } declare global { namespace NodeJS { interface ProcessEnv { BROWSERSLIST?: string BROWSERSLIST_CONFIG?: string BROWSERSLIST_DANGEROUS_EXTEND?: string BROWSERSLIST_DISABLE_CACHE?: string BROWSERSLIST_ENV?: string BROWSERSLIST_IGNORE_OLD_DATA?: string BROWSERSLIST_STATS?: string } } } export = browserslist