Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions src/browsers/browserslist.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions src/browsers/types.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import type browserslist from 'browserslist'
import type { Options } from 'browserslist'
import type {
Semver,
RangedSemver
Expand All @@ -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<typeof browserslist>[0]
}

export type BrowsersVersions = Map<string, Semver[]>
Expand Down
37 changes: 19 additions & 18 deletions src/useragentRegex/useragentRegex.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import type { SemverCompareOptions } from '../semver/index.js'
import { getRegexesForBrowsers } from '../useragent/index.js'
import {
getBrowsersList,
mergeBrowserVersions
mergeBrowserVersions,
type BrowserslistRequest
} from '../browsers/index.js'
import { applyVersionsToRegexes } from '../versions/index.js'
import type { UserAgentRegexOptions } from './types.js'
Expand All @@ -15,32 +17,31 @@ export const defaultOptions = {
ignorePatch: true,
allowZeroSubversions: false,
allowHigherVersions: false
}
} as const satisfies Required<SemverCompareOptions>

/**
* Get source regexes objects from browserslist query.
* @param options - Browserslist and semver compare options.
* @returns Source regexes objects.
*/
export function getPreUserAgentRegexes(options: UserAgentRegexOptions = {}) {
const {
browsers,
env,
path,
...otherOptions
} = options
const finalOptions = {
...defaultOptions,
...otherOptions
const regexpOptions: SemverCompareOptions = {
...defaultOptions
}
const browserslistOptions: BrowserslistRequest = {}

for (const optName of Object.keys(options) as (keyof UserAgentRegexOptions)[]) {
if (optName in defaultOptions) {
regexpOptions[optName] = options[optName]
} else {
browserslistOptions[optName] = options[optName]
}
}
const browsersList = getBrowsersList({
browsers,
env,
path
})

const browsersList = getBrowsersList(browserslistOptions)
const mergedBrowsers = mergeBrowserVersions(browsersList)
const sourceRegexes = getRegexesForBrowsers(mergedBrowsers, finalOptions)
const versionedRegexes = applyVersionsToRegexes(sourceRegexes, finalOptions)
const sourceRegexes = getRegexesForBrowsers(mergedBrowsers, regexpOptions)
const versionedRegexes = applyVersionsToRegexes(sourceRegexes, regexpOptions)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's make code more easer

export function getPreUserAgentRegexes(options: UserAgentRegexOptions = {}) {
  const finalOptions = {
    ...defaultOptions,
    ...options
  }
  const browsersList = getBrowsersList(finalOptions)
  const mergedBrowsers = mergeBrowserVersions(browsersList)
  const sourceRegexes = getRegexesForBrowsers(mergedBrowsers, finalOptions)
  const versionedRegexes = applyVersionsToRegexes(sourceRegexes, finalOptions)

  return versionedRegexes
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I considered that as well. I didn't want to make the assumption that browserslist wouldn't throw on unknown options. If you're okay with that, I'll make the change.


return versionedRegexes
}
Expand Down