123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- /**
- * 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 an 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]: {
- [version: string]: string
- }
- }
- }
- /**
- * 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[]
- /**
- * Return queries for specific file inside the project.
- *
- * ```js
- * browserslist.loadConfig({
- * file: process.cwd()
- * }) ?? browserslist.defaults
- * ```
- */
- function loadConfig(options: LoadConfigOptions): string[] | undefined
- function clearCaches(): void
- function parseConfig(string: string): Config
- function readConfig(file: string): Config
- function findConfig(...pathSegments: string[]): Config | undefined
- function findConfigFile(...pathSegments: string[]): string | undefined
- interface LoadConfigOptions {
- /**
- * Path to config file
- * */
- config?: string
- /**
- * Path to file inside the project to find Browserslist config
- * in closest folder
- */
- path?: string
- /**
- * Environment to choose part of config.
- */
- env?: string
- }
- }
- 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
- BROWSERSLIST_ROOT_PATH?: string
- }
- }
- }
- export = browserslist
|