forked from browserslist/browserslist-useragent-regexp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuseragentRegex.ts
More file actions
59 lines (54 loc) · 1.72 KB
/
useragentRegex.ts
File metadata and controls
59 lines (54 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import type { SemverCompareOptions } from '../semver/index.js'
import { getRegexesForBrowsers } from '../useragent/index.js'
import {
getBrowsersList,
mergeBrowserVersions
} from '../browsers/index.js'
import { applyVersionsToRegexes } from '../versions/index.js'
import type { UserAgentRegexOptions } from './types.js'
import {
compileRegexes,
compileRegex
} from './utils.js'
export const defaultOptions = {
ignoreMinor: false,
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 finalOptions = {
...defaultOptions,
...options
}
const browsersList = getBrowsersList(finalOptions)
const mergedBrowsers = mergeBrowserVersions(browsersList)
const sourceRegexes = getRegexesForBrowsers(mergedBrowsers, finalOptions)
const versionedRegexes = applyVersionsToRegexes(sourceRegexes, finalOptions)
return versionedRegexes
}
/**
* Compile browserslist query to regexes.
* @param options - Browserslist and semver compare options.
* @returns Objects with info about compiled regexes.
*/
export function getUserAgentRegexes(options: UserAgentRegexOptions = {}) {
return compileRegexes(
getPreUserAgentRegexes(options)
)
}
/**
* Compile browserslist query to regex.
* @param options - Browserslist and semver compare options.
* @returns Compiled regex.
*/
export function getUserAgentRegex(options: UserAgentRegexOptions = {}) {
return compileRegex(
getPreUserAgentRegexes(options)
)
}