1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-19 13:41:19 +02:00

refactor environment detection, remove unused deps

This commit is contained in:
Ian Storm Taylor
2016-12-03 23:49:50 -08:00
parent 35bb6942d9
commit 18ef4472cd
2 changed files with 69 additions and 27 deletions

View File

@@ -8,7 +8,6 @@
"dependencies": {
"cheerio": "^0.22.0",
"debug": "^2.3.2",
"detect-browser": "^1.3.3",
"direction": "^0.1.5",
"es6-map": "^0.1.4",
"esrever": "^0.2.0",
@@ -16,8 +15,7 @@
"immutable": "^3.8.1",
"is-empty": "^1.0.0",
"keycode": "^2.1.2",
"type-of": "^2.0.1",
"ua-parser-js": "^0.7.10"
"type-of": "^2.0.1"
},
"peerDependencies": {
"react": "^0.14.0 || ^15.0.0",

View File

@@ -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.
@@ -8,26 +69,9 @@ import browser from 'detect-browser'
* @type {Object}
*/
export const IS_ANDROID = process.browser && browser.name == 'android'
export const IS_CHROME = process.browser && browser.name == 'chrome'
export const IS_EDGE = process.browser && browser.name == 'edge'
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 const IS_CHROME = BROWSER === 'chrome'
export const IS_FIREFOX = BROWSER === 'firefox'
export const IS_SAFARI = BROWSER === 'safari'
export default {
IS_ANDROID,
IS_CHROME,
IS_EDGE,
IS_FIREFOX,
IS_IE,
IS_IOS,
IS_MAC,
IS_SAFARI,
IS_UBUNTU,
IS_WINDOWS
}
export const IS_MAC = OS === 'macos'
export const IS_WINDOWS = OS === 'windows'