diff --git a/README.md b/README.md index e07008b4..da9bd7d2 100644 --- a/README.md +++ b/README.md @@ -150,12 +150,13 @@ Compile browserslist query to one regex. | Option | Type | Default | Description | |--------|------|---------|-------------| | browsers | `string \| string[]` | — | Manually provide a browserslist query (or an array of queries). Specifying this overrides the browserslist configuration specified in your project. | -| env | `string` | — | When multiple browserslist [environments](https://github.com/ai/browserslist#environments) are specified, pick the config belonging to this environment. | | ignorePatch | `boolean` | `true` | Ignore differences in patch browser numbers. | | ignoreMinor | `boolean` | `false` | Ignore differences in minor browser versions. | | allowHigherVersions | `boolean` | `false` | For all the browsers in the browserslist query, return a match if the useragent version is equal to or higher than the one specified in browserslist. | | allowZeroSubversions | `boolean` | `false` | Ignore match of patch or patch and minor, if they are 0. | +Any of the [`browserslist` API options](https://github.com/browserslist/browserslist#js-api) may also be provided. + #### Regex info object | Property | Type | Description | diff --git a/src/browsers/browserslist.ts b/src/browsers/browserslist.ts index 4c3b5659..5963da79 100644 --- a/src/browsers/browserslist.ts +++ b/src/browsers/browserslist.ts @@ -44,13 +44,9 @@ export function parseBrowsersList(browsersList: string[]) { export function getBrowsersList(options: BrowserslistRequest = {}) { const { browsers, - env, - path + ...browserslistOptions } = options - const browsersList = browserslist(browsers, { - env, - path - }) + const browsersList = browserslist(browsers, browserslistOptions) const parsedBrowsers = parseBrowsersList(browsersList) return parsedBrowsers diff --git a/src/browsers/types.ts b/src/browsers/types.ts index 2a6b770a..81d3e99b 100644 --- a/src/browsers/types.ts +++ b/src/browsers/types.ts @@ -1,3 +1,5 @@ +import type browserslist from 'browserslist' +import type { Options } from 'browserslist' import type { Semver, RangedSemver @@ -8,10 +10,8 @@ export interface Browser { version: Semver } -export interface BrowserslistRequest { - browsers?: string | string[] - env?: string - path?: string +export interface BrowserslistRequest extends Options { + browsers?: Parameters[0] } export type BrowsersVersions = Map diff --git a/src/useragentRegex/useragentRegex.ts b/src/useragentRegex/useragentRegex.ts index 3109e70e..ad1fab47 100644 --- a/src/useragentRegex/useragentRegex.ts +++ b/src/useragentRegex/useragentRegex.ts @@ -1,3 +1,4 @@ +import type { SemverCompareOptions } from '../semver/index.js' import { getRegexesForBrowsers } from '../useragent/index.js' import { getBrowsersList, @@ -15,7 +16,7 @@ export const defaultOptions = { ignorePatch: true, allowZeroSubversions: false, allowHigherVersions: false -} +} as const satisfies Required /** * Get source regexes objects from browserslist query. @@ -23,21 +24,11 @@ export const defaultOptions = { * @returns Source regexes objects. */ export function getPreUserAgentRegexes(options: UserAgentRegexOptions = {}) { - const { - browsers, - env, - path, - ...otherOptions - } = options const finalOptions = { ...defaultOptions, - ...otherOptions + ...options } - const browsersList = getBrowsersList({ - browsers, - env, - path - }) + const browsersList = getBrowsersList(finalOptions) const mergedBrowsers = mergeBrowserVersions(browsersList) const sourceRegexes = getRegexesForBrowsers(mergedBrowsers, finalOptions) const versionedRegexes = applyVersionsToRegexes(sourceRegexes, finalOptions)