From b97e1d611e2729b890f2d5e77346fe7c005c575d Mon Sep 17 00:00:00 2001 From: Ryan Lindskog Date: Sun, 25 Nov 2018 20:09:26 -0800 Subject: [PATCH 1/3] move from browserslist-useragent to ua-parser-js / semver --- packages/common/data/modern-browsers.json | 16 +++++++++------- packages/server/package.json | 5 +++-- packages/server/src/middleware/modern.js | 18 ++++++++++++------ 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/common/data/modern-browsers.json b/packages/common/data/modern-browsers.json index e1d2997e514e..70797e2b9d11 100644 --- a/packages/common/data/modern-browsers.json +++ b/packages/common/data/modern-browsers.json @@ -1,9 +1,11 @@ { - "edge": "16", - "firefox": "60", - "chrome": "61", - "safari": "10.1", - "opera": "48", - "ios_saf": "10.3", - "and_ff": "60" + "Edge": "16", + "Firefox": "60", + "Firefox Mobile": "60", + "Chrome": "61", + "Chrome Headless": "61", + "Chromium": "61", + "Safari": "10.1", + "Opera": "48", + "Mobile Safari": "10.3" } diff --git a/packages/server/package.json b/packages/server/package.json index 40ae13fc9ff0..813771466a11 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -11,7 +11,6 @@ "@nuxt/common": "2.3.2", "@nuxt/config": "2.3.2", "@nuxtjs/youch": "^4.2.3", - "browserslist-useragent": "^2.0.1", "chalk": "^2.4.1", "compression": "^1.7.3", "connect": "^3.6.6", @@ -22,9 +21,11 @@ "ip": "^1.1.5", "launch-editor-middleware": "^2.2.1", "pify": "^4.0.1", + "semver": "^5.6.0", "serve-placeholder": "^1.1.0", "serve-static": "^1.13.2", - "server-destroy": "^1.0.1" + "server-destroy": "^1.0.1", + "ua-parser-js": "^0.7.19" }, "publishConfig": { "access": "public" diff --git a/packages/server/src/middleware/modern.js b/packages/server/src/middleware/modern.js index 46d17fdfa96c..9599cc7ad693 100644 --- a/packages/server/src/middleware/modern.js +++ b/packages/server/src/middleware/modern.js @@ -1,14 +1,20 @@ import { ModernBrowsers } from '@nuxt/common' -import { matchesUA } from 'browserslist-useragent' +import UAParser from 'ua-parser-js' +import semver from 'semver' const modernBrowsers = Object.keys(ModernBrowsers) - .map(browser => `${browser} >= ${ModernBrowsers[browser]}`) + .reduce((allBrowsers, browser) => { + allBrowsers[browser] = semver.coerce(ModernBrowsers[browser]) + return allBrowsers + }, {}) const isModernBrowser = (ua) => { - return Boolean(ua) && matchesUA(ua, { - allowHigherVersions: true, - browsers: modernBrowsers - }) + if (!Boolean(ua)) { + return false; + } + const { browser } = UAParser(ua) + const browserVersion = semver.coerce(browser.version) + return semver.gte(browserVersion, modernBrowsers[browser.name]) } export default function (req, res, next) { From 9263279520644d7e4e00e59734c208b5db1f2220 Mon Sep 17 00:00:00 2001 From: Ryan Lindskog Date: Sun, 25 Nov 2018 20:37:44 -0800 Subject: [PATCH 2/3] lint and check that we support the browser --- packages/server/src/middleware/modern.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/server/src/middleware/modern.js b/packages/server/src/middleware/modern.js index 9599cc7ad693..15375ab6f537 100644 --- a/packages/server/src/middleware/modern.js +++ b/packages/server/src/middleware/modern.js @@ -9,12 +9,12 @@ const modernBrowsers = Object.keys(ModernBrowsers) }, {}) const isModernBrowser = (ua) => { - if (!Boolean(ua)) { - return false; + if (!ua) { + return false } const { browser } = UAParser(ua) const browserVersion = semver.coerce(browser.version) - return semver.gte(browserVersion, modernBrowsers[browser.name]) + return modernBrowsers[browser.name] && semver.gte(browserVersion, modernBrowsers[browser.name]) } export default function (req, res, next) { From e4e39dedeb16eb7257e5f1455b3b8375f8e085eb Mon Sep 17 00:00:00 2001 From: Ryan Lindskog Date: Mon, 26 Nov 2018 17:19:45 -0800 Subject: [PATCH 3/3] removed firefox mobile --- packages/common/data/modern-browsers.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/common/data/modern-browsers.json b/packages/common/data/modern-browsers.json index 70797e2b9d11..d8964e1b3b00 100644 --- a/packages/common/data/modern-browsers.json +++ b/packages/common/data/modern-browsers.json @@ -1,7 +1,6 @@ { "Edge": "16", "Firefox": "60", - "Firefox Mobile": "60", "Chrome": "61", "Chrome Headless": "61", "Chromium": "61",