mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-20 14:11:35 +02:00
refactor environment detection, remove unused deps
This commit is contained in:
@@ -8,7 +8,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cheerio": "^0.22.0",
|
"cheerio": "^0.22.0",
|
||||||
"debug": "^2.3.2",
|
"debug": "^2.3.2",
|
||||||
"detect-browser": "^1.3.3",
|
|
||||||
"direction": "^0.1.5",
|
"direction": "^0.1.5",
|
||||||
"es6-map": "^0.1.4",
|
"es6-map": "^0.1.4",
|
||||||
"esrever": "^0.2.0",
|
"esrever": "^0.2.0",
|
||||||
@@ -16,8 +15,7 @@
|
|||||||
"immutable": "^3.8.1",
|
"immutable": "^3.8.1",
|
||||||
"is-empty": "^1.0.0",
|
"is-empty": "^1.0.0",
|
||||||
"keycode": "^2.1.2",
|
"keycode": "^2.1.2",
|
||||||
"type-of": "^2.0.1",
|
"type-of": "^2.0.1"
|
||||||
"ua-parser-js": "^0.7.10"
|
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"react": "^0.14.0 || ^15.0.0",
|
"react": "^0.14.0 || ^15.0.0",
|
||||||
|
@@ -1,6 +1,67 @@
|
|||||||
|
|
||||||
import Parser from 'ua-parser-js'
|
/**
|
||||||
import browser from 'detect-browser'
|
* Browser matching rules.
|
||||||
|
*
|
||||||
|
* @type {Array}
|
||||||
|
*/
|
||||||
|
|
||||||
|
const BROWSER_RULES = [
|
||||||
|
['edge', /Edge\/([0-9\._]+)/],
|
||||||
|
['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],
|
||||||
|
['firefox', /Firefox\/([0-9\.]+)(?:\s|$)/],
|
||||||
|
['opera', /Opera\/([0-9\.]+)(?:\s|$)/],
|
||||||
|
['opera', /OPR\/([0-9\.]+)(:?\s|$)$/],
|
||||||
|
['ie', /Trident\/7\.0.*rv\:([0-9\.]+)\).*Gecko$/],
|
||||||
|
['ie', /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],
|
||||||
|
['ie', /MSIE\s(7\.0)/],
|
||||||
|
['android', /Android\s([0-9\.]+)/],
|
||||||
|
['safari', /Version\/([0-9\._]+).*Safari/],
|
||||||
|
]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Operating system matching rules.
|
||||||
|
*
|
||||||
|
* @type {Array}
|
||||||
|
*/
|
||||||
|
|
||||||
|
const OS_RULES = [
|
||||||
|
['macos', /mac os x/i],
|
||||||
|
['ios', /os ([\.\_\d]+) like mac os/i],
|
||||||
|
['android', /android/i],
|
||||||
|
['firefoxos', /mozilla\/[a-z\.\_\d]+ \((?:mobile)|(?:tablet)/i],
|
||||||
|
['windows', /windows\s*(?:nt)?\s*([\.\_\d]+)/i],
|
||||||
|
]
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define variables to store the result.
|
||||||
|
*/
|
||||||
|
|
||||||
|
let BROWSER
|
||||||
|
let OS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the matchers when in browser.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (process.browser) {
|
||||||
|
const { userAgent } = window.navigator
|
||||||
|
|
||||||
|
for (const rule of BROWSER_RULES) {
|
||||||
|
const [ name, regexp ] = rule
|
||||||
|
if (regexp.test(userAgent)) {
|
||||||
|
BROWSER = name
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const rule of OS_RULES) {
|
||||||
|
const [ name, regexp ] = rule
|
||||||
|
if (regexp.test(userAgent)) {
|
||||||
|
OS = name
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Export.
|
* Export.
|
||||||
@@ -8,26 +69,9 @@ import browser from 'detect-browser'
|
|||||||
* @type {Object}
|
* @type {Object}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const IS_ANDROID = process.browser && browser.name == 'android'
|
export const IS_CHROME = BROWSER === 'chrome'
|
||||||
export const IS_CHROME = process.browser && browser.name == 'chrome'
|
export const IS_FIREFOX = BROWSER === 'firefox'
|
||||||
export const IS_EDGE = process.browser && browser.name == 'edge'
|
export const IS_SAFARI = BROWSER === 'safari'
|
||||||
export const IS_FIREFOX = process.browser && browser.name == 'firefox'
|
|
||||||
export const IS_IE = process.browser && browser.name == 'ie'
|
|
||||||
export const IS_IOS = process.browser && browser.name == 'ios'
|
|
||||||
export const IS_MAC = process.browser && new Parser().getOS().name == 'Mac OS'
|
|
||||||
export const IS_SAFARI = process.browser && browser.name == 'safari'
|
|
||||||
export const IS_UBUNTU = process.browser && new Parser().getOS().name == 'Ubuntu'
|
|
||||||
export const IS_WINDOWS = process.browser && /Windows/.test(new Parser().getOS().name)
|
|
||||||
|
|
||||||
export default {
|
export const IS_MAC = OS === 'macos'
|
||||||
IS_ANDROID,
|
export const IS_WINDOWS = OS === 'windows'
|
||||||
IS_CHROME,
|
|
||||||
IS_EDGE,
|
|
||||||
IS_FIREFOX,
|
|
||||||
IS_IE,
|
|
||||||
IS_IOS,
|
|
||||||
IS_MAC,
|
|
||||||
IS_SAFARI,
|
|
||||||
IS_UBUNTU,
|
|
||||||
IS_WINDOWS
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user