Wrong support for new Ms Edge based on Chromium
In a new Edge the userAgent name is "Edg", not "Edge". So your scripts is ignoring the Edge query but use Chrome query fo both.
@DOrlov77 Hi! All Chrome-based browsers are detected as Chrome.
Hi. But that is exactly a defect! Opera is also based on Chromium.
Say I have .browserslistrc like:
Chrome > 70
Edge > 82
Opera > 67
So running npx browserslist I will receive:
chrome 85
chrome 84
// ... cutted the list
chrome 52
chrome 51
edge 85
edge 84
edge 83
opera 71
opera 70
opera 69
opera 68
As you may see the browserslist knows about versions of Edge and Opera, but I have no chance to filter out unwanted versions of these browsers...
@DOrlov77 currently browserslist-useragent-regexp is more like "engine-list", to work with/detect engine web-platform features.
@dangreen probably, you want to say: "without engine web-platform features detection"? Right now you parse browserslist result into regex in the straightforward way. Detection means: or move all detected browsers to one by engine, say Chrome, Edge >= 79, Opera > ? ==> Chrome, Edge < 79 ==> Edge; or make it granually, like Chrome => Chrome Edge < 79 ==> Edge Edge >=79 ==> Edg Opera ==> Opr ... Anyway - I like your tool and will, probably, use it in my project. Thank you!
@DOrlov77 "to detect engine web-platform features", example: bdsl-webpack-plugin
I see more and more issues with vendor detection (not engine), so I think to add new flag to toggle vendor/engine mode soon.
I'm seeing Microsoft Edge on Android (Edge 46.05.4.5158) not match the generated regex having been updated 5 days ago. My assumption is, if all Chrome-based browsers are being detected as Chrome (as per comment above) then this should pass.
Here's my .browerslistrc file
defaults
unreleased versions
I'm running the following script to generate the regex script:
(echo export default && browserslist-useragent-regexp --allowHigherVersions --ignorePatch --ignoreMinor) > ./src/js/_SupportedBrowsers.js
This generates the following file:
export default
/((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(13|(1[4-9]|[2-9]\d|\d{3,})|14|(1[5-9]|[2-9]\d|\d{3,}))[_.]\d+(?:[_.]\d+)?)|(Opera Mini(?:\/att)?\/?(\d+)?(?:\.\d+)?(?:\.\d+)?)|(Opera\/.+Opera Mobi.+Version\/(62|(6[3-9]|[7-9]\d|\d{3,}))\.\d+)|(Opera\/(62|(6[3-9]|[7-9]\d|\d{3,}))\.\d+.+Opera Mobi)|(Opera Mobi.+Opera(?:\/|\s+)(62|(6[3-9]|[7-9]\d|\d{3,}))\.\d+)|(SamsungBrowser\/(13|(1[4-9]|[2-9]\d|\d{3,}))\.\d+)|(Edge\/(90|(9[1-9]|\d{3,}))(?:\.\d+)?)|((Chromium|Chrome)\/(89|(9\d|\d{3,}))\.\d+(?:\.\d+)?)|(Version\/(0|([1-9]|\d{2,})|14|(1[5-9]|[2-9]\d|\d{3,})|15|(1[6-9]|[2-9]\d|\d{3,}))\.\d+(?:\.\d+)? Safari\/)|(Trident\/7\.0)|(Firefox\/(78|(79|[8-9]\d|\d{3,})|88|(89|9\d|\d{3,}))\.\d+\.\d+)|(Firefox\/(78|(79|[8-9]\d|\d{3,})|88|(89|9\d|\d{3,}))\.\d+(pre|[ab]\d+[a-z]*)?)|(([MS]?IE) (11|(1[2-9]|[2-9]\d|\d{3,}))\.\d+)/
@ajbeaven Hi! Can you please provide user agent of Microsoft Edge on Android ?
Ahh, durr - sorry.
Mozilla/5.0 (Linux; Android 10; M2007J20CG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.116 Mobile Safari/537.36 EdgA/46.05.4.5158
@ajbeaven Hi. You can try v4.0.0-beta.0, but anyway, browserslist does provide info about Edge Desktop, not Android, so regex for Edge will match only desktop useragents.