Skip to content

Commit 71e33f9

Browse files
committed
v2.1.0
1 parent c56ef2a commit 71e33f9

File tree

3 files changed

+36
-10
lines changed

3 files changed

+36
-10
lines changed

CHANGELOG.md

+7
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ DO NOT TOUCH. SAVE IT ON TOP.
2424
2525
-->
2626

27+
## [2.1.0] - 2020-06-11
28+
### Fixed
29+
- Extracting browser family from regexp fix.
30+
31+
### Changed
32+
- `HeadlessChrome` regexp was removed, works with regular Chrome regexp.
33+
2734
## [2.0.5] - 2020-05-12
2835
### Fixed
2936
- [#434](https://github.com/browserslist/browserslist-useragent-regexp/issues/434)

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "browserslist-useragent-regexp",
3-
"version": "2.0.5",
3+
"version": "2.1.0",
44
"description": "A utility to compile browserslist query to a RegExp to test browser useragent.",
55
"author": "dangreen",
66
"license": "MIT",

src/useragent/useragent.ts

+28-9
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,13 @@ export function fixBrowserFamily(family: string, regExp: RegExp): IFixedFamily[]
119119
case /bingbot|^\\b\(/.test(regExpString):
120120
return [];
121121

122+
/**
123+
* Chrome browsers
124+
* `'HeadlessChrome'` was removed, works with regular Chrome RegExp
125+
*/
122126
case familyMatched(false, familyOrRegExp, [
123127
'Chrome Mobile', // CrMo
124-
'Chromium',
125-
'HeadlessChrome'
128+
'Chromium'
126129
]):
127130
return [{ family: 'chrome' }];
128131

@@ -151,19 +154,35 @@ export function fixBrowserFamily(family: string, regExp: RegExp): IFixedFamily[]
151154

152155
const matches = regExpString.match(/\(([\s\w\d_\-/!|]+)\)/i);
153156

157+
/**
158+
* Extract family from RegExp
159+
*/
154160
if (Array.isArray(matches)) {
155161

156162
const match = matches[1];
157163
const familiesFromRegExp = match.split('|');
158-
const families = uniq([
159-
...familiesFromRegExp,
160-
...familiesFromRegExp.map(_ => _.replace(/ /g, '')),
161-
...familiesFromRegExp.map(_ => _.replace(/[_\-/\s]/g, ''))
162-
]);
164+
const familyToRegExpMap = new Map<string, string[]>();
165+
const families = uniq(
166+
familiesFromRegExp.map((familyFromRegExp) => {
167+
168+
const family = familyFromRegExp.replace(/[^\d\w]/g, '').toLowerCase();
169+
170+
if (familyToRegExpMap.has(family)) {
171+
familyToRegExpMap.get(family).push(familyFromRegExp);
172+
} else {
173+
familyToRegExpMap.set(family, [familyFromRegExp]);
174+
}
175+
176+
return family;
177+
})
178+
);
163179

164180
return families.map(family => ({
165-
family: family.toLowerCase(),
166-
regExp: new RegExp(regExpString.replace(match, family))
181+
family,
182+
regExp: new RegExp(regExpString.replace(
183+
match,
184+
familyToRegExpMap.get(family).join('|')
185+
))
167186
}));
168187
}
169188

0 commit comments

Comments
 (0)