mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-27 08:02:01 +00:00
refactor: use scope variable memo for modern utils (#6954)
This commit is contained in:
parent
6ae7718a42
commit
13cc924f02
@ -1,3 +1,5 @@
|
|||||||
|
import UAParser from 'ua-parser-js'
|
||||||
|
|
||||||
export const ModernBrowsers = {
|
export const ModernBrowsers = {
|
||||||
Edge: '16',
|
Edge: '16',
|
||||||
Firefox: '60',
|
Firefox: '60',
|
||||||
@ -12,29 +14,36 @@ export const ModernBrowsers = {
|
|||||||
'Mobile Safari': '10.3'
|
'Mobile Safari': '10.3'
|
||||||
}
|
}
|
||||||
|
|
||||||
const modernBrowsers = new Proxy(ModernBrowsers, {
|
let semver
|
||||||
get (browsers, prop) {
|
let __modernBrowsers
|
||||||
if (browsers[prop] && !browsers[prop].version) {
|
|
||||||
const coerce = require('semver/functions/coerce')
|
const getModernBrowsers = () => {
|
||||||
browsers[prop] = coerce(browsers[prop])
|
if (__modernBrowsers) {
|
||||||
}
|
return __modernBrowsers
|
||||||
return browsers[prop]
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
__modernBrowsers = Object.keys(ModernBrowsers)
|
||||||
|
.reduce((allBrowsers, browser) => {
|
||||||
|
allBrowsers[browser] = semver.coerce(ModernBrowsers[browser])
|
||||||
|
return allBrowsers
|
||||||
|
}, {})
|
||||||
|
return __modernBrowsers
|
||||||
|
}
|
||||||
|
|
||||||
export const isModernBrowser = (ua) => {
|
export const isModernBrowser = (ua) => {
|
||||||
if (!ua) {
|
if (!ua) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
const coerce = require('semver/functions/coerce')
|
if (!semver) {
|
||||||
const gte = require('semver/functions/gte')
|
semver = require('semver')
|
||||||
const UAParser = require('ua-parser-js')
|
}
|
||||||
const { browser } = UAParser(ua)
|
const { browser } = UAParser(ua)
|
||||||
const browserVersion = coerce(browser.version)
|
const browserVersion = semver.coerce(browser.version)
|
||||||
if (!browserVersion) {
|
if (!browserVersion) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return Boolean(modernBrowsers[browser.name] && gte(browserVersion, modernBrowsers[browser.name]))
|
const modernBrowsers = getModernBrowsers()
|
||||||
|
return Boolean(modernBrowsers[browser.name] && semver.gte(browserVersion, modernBrowsers[browser.name]))
|
||||||
}
|
}
|
||||||
|
|
||||||
export const isModernRequest = (req, modernMode = false) => {
|
export const isModernRequest = (req, modernMode = false) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user