225 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | ||
|  * 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
 |