Skip to content

Commit

Permalink
fix(utils): eliminate side effect from modern utils (#6953)
Browse files Browse the repository at this point in the history
[release]
  • Loading branch information
clarkdo committed Feb 9, 2020
1 parent c865cef commit 6ae7718
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions packages/utils/src/modern.js
@@ -1,6 +1,3 @@
import UAParser from 'ua-parser-js'
import semver from 'semver'

export const ModernBrowsers = {
Edge: '16',
Firefox: '60',
Expand All @@ -15,22 +12,29 @@ export const ModernBrowsers = {
'Mobile Safari': '10.3'
}

const modernBrowsers = Object.keys(ModernBrowsers)
.reduce((allBrowsers, browser) => {
allBrowsers[browser] = semver.coerce(ModernBrowsers[browser])
return allBrowsers
}, {})
const modernBrowsers = new Proxy(ModernBrowsers, {
get (browsers, prop) {
if (browsers[prop] && !browsers[prop].version) {
const coerce = require('semver/functions/coerce')
browsers[prop] = coerce(browsers[prop])
}
return browsers[prop]
}
})

export const isModernBrowser = (ua) => {
if (!ua) {
return false
}
const coerce = require('semver/functions/coerce')
const gte = require('semver/functions/gte')
const UAParser = require('ua-parser-js')
const { browser } = UAParser(ua)
const browserVersion = semver.coerce(browser.version)
const browserVersion = coerce(browser.version)
if (!browserVersion) {
return false
}
return Boolean(modernBrowsers[browser.name] && semver.gte(browserVersion, modernBrowsers[browser.name]))
return Boolean(modernBrowsers[browser.name] && gte(browserVersion, modernBrowsers[browser.name]))
}

export const isModernRequest = (req, modernMode = false) => {
Expand Down

0 comments on commit 6ae7718

Please sign in to comment.