New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@realeyes/environment-detector

Package Overview
Dependencies
Maintainers
3
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@realeyes/environment-detector - npm Package Compare versions

Comparing version 2.0.8 to 2.0.10

dist/environment-detector.zip

8

dist/environment-detector.min.js
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){"use strict";exports.__esModule=true;var _index=require("./lib/index");var _index2=_interopRequireDefault(_index);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}window.Realeyesit=window.Realeyesit||{};/*!
* @realeyes/environment-detector version: 2.0.7
* Built on: 2018-06-01T08:52:56.457Z
* <%= name %> version: <%= version %>
* Built on: <%= (new Date).toISOString() %>
* Released under the Apache License, Version 2.0
* @copyright Realeyes OU. All rights reserved.
*/
window.Realeyesit.EnvironmentDetector={detect:_index2["default"]};exports["default"]=window.Realeyesit.EnvironmentDetector},{"./lib/index":4}],2:[function(require,module,exports){"use strict";exports.__esModule=true;var _getFirstMatch=require("./utils/getFirstMatch");var _getFirstMatch2=_interopRequireDefault(_getFirstMatch);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var names={OPERA:"Opera",SAMSUNG_BROWSER:"Samsung Internet for Android",YANDEX_BROWSER:"Yandex Browser",PUFFIN:"Puffin",K_MELEON:"K-Meleon",WINDOWS_PHONE:"Windows Phone",INTERNET_EXPLORER:"Internet Explorer",MICROSOFT_EDGE:"Microsoft Edge",FIREFOX:"Firefox",AMAZON_SILK:"Amazon Silk",PHANTOM_JS:"PhantomJS",CHROMIUM:"Chromium",CHROME:"Chrome",ANDROID:"Android",SAFARI:"Safari",VIVALDI:"Vivaldi",UC_BROWSER:"UC Browser",SEAMONKEY:"SeaMonkey",IOS_WEBVIEW:"iOS WebView",UNKNOWN:"Unknown"};var tests=[{browserName:names.VIVALDI,testRegex:/vivaldi/i,versionRegex:/(?:vivaldi)[\s\/](\d+(\.\d+)?)/i},{browserName:names.UC_BROWSER,testRegex:/ucbrowser/i,versionRegex:/(?:ucbrowser)[\s\/](\d+(\.\d+)?)/i},{browserName:names.SEAMONKEY,testRegex:/seamonkey/i,versionRegex:/(?:seamonkey)[\s\/](\d+(\.\d+)?)/i},{browserName:names.OPERA,testRegex:/opera|opios|opr\//i,versionRegex:/(?:opera |opios\/|opr\/)(\d+(\.\d+)?)/i},{browserName:names.SAMSUNG_BROWSER,testRegex:/SamsungBrowser/i,versionRegex:/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i},{browserName:names.YANDEX_BROWSER,testRegex:/yabrowser/i,versionRegex:/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i},{browserName:names.PUFFIN,testRegex:/puffin/i,versionRegex:/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i},{browserName:names.K_MELEON,testRegex:/k-meleon/i,versionRegex:/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i},{browserName:names.WINDOWS_PHONE,testRegex:/windows phone/i,versionRegex:/(?:iemobile|edge)\/(\d+(\.\d+)?)/i},{browserName:names.INTERNET_EXPLORER,testRegex:/msie|trident/i,versionRegex:/(?:msie |rv:)(\d+(\.\d+)?)/i},{browserName:names.MICROSOFT_EDGE,testRegex:/chrome.+? edge/i,versionRegex:/edge\/(\d+(\.\d+)?)/i},{browserName:names.FIREFOX,testRegex:/firefox|iceweasel|fxios/i,versionRegex:/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i},{browserName:names.AMAZON_SILK,testRegex:/silk/i,versionRegex:/silk\/(\d+(\.\d+)?)/i},{browserName:names.PHANTOM_JS,testRegex:/phantom/i,versionRegex:/phantomjs\/(\d+(\.\d+)?)/i},{browserName:names.CHROMIUM,testRegex:/chromium/i,versionRegex:/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i},{browserName:names.CHROME,testRegex:/chrome|crios|crmo/i,versionRegex:/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i},{browserName:names.ANDROID,testRegex:/android/i,versionRegex:null},{browserName:names.SAFARI,testRegex:/safari/i,versionRegex:/version\/(\d+(\.\d+)?)/i},{browserName:names.IOS_WEBVIEW,testRegex:/(iPhone|iPad).*AppleWebKit(?!.*Safari)/i,versionRegex:null}];exports["default"]={names:names,detect:function detect(ua){for(var i=0;i<tests.length;i++){if(tests[i].testRegex.test(ua)){return{name:tests[i].browserName,version:(0,_getFirstMatch2["default"])(ua,tests[i].versionRegex)||(0,_getFirstMatch2["default"])(ua,/version\/(\d+(\.\d+)?)/i)||null}}}return{name:names.UNKNOWN,version:null}}}},{"./utils/getFirstMatch":9}],3:[function(require,module,exports){"use strict";exports.__esModule=true;var names={GET_USER_MEDIA:"navigator.getUserMedia",MEDIA_RECORDER:"MediaRecorder",WEBCAM:"webcam",DOCUMENT_ALL:"document.all",DOCUMENT_QUERY_SELECTOR:"document.querySelector",HTTP:"http",HTTPS:"https",LOCALHOST:"localhost"};var tests=[{capabilityName:names.GET_USER_MEDIA,test:function test(){return!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia)}},{capabilityName:names.MEDIA_RECORDER,test:function test(){return typeof window.MediaRecorder==="function"}},{capabilityName:names.DOCUMENT_ALL,test:function test(){return document.querySelector!==undefined}},{capabilityName:names.DOCUMENT_QUERY_SELECTOR,test:function test(){return typeof document.querySelector==="function"}},{capabilityName:names.HTTP,test:function test(){return document.location.protocol==="http:"}},{capabilityName:names.HTTPS,test:function test(){return document.location.protocol==="https:"}},{capabilityName:names.LOCALHOST,test:function test(){return document.location.hostname==="localhost"||document.location.hostname==="127.0.0.1"}}];exports["default"]={names:names,detect:function detect(){var results=[];for(var i=0;i<tests.length;i++){if(tests[i].test()){results.push(tests[i].capabilityName)}}return results}}},{}],4:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=detect;var _browsers=require("./browsers");var _browsers2=_interopRequireDefault(_browsers);var _platform=require("./platform");var _platform2=_interopRequireDefault(_platform);var _os=require("./os");var _os2=_interopRequireDefault(_os);var _capabilities=require("./capabilities");var _capabilities2=_interopRequireDefault(_capabilities);var _webcam=require("./webcam");var _webcam2=_interopRequireDefault(_webcam);var _Logger=require("./utils/Logger");var _Logger2=_interopRequireDefault(_Logger);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function detect(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var ua=navigator.userAgent;var logger=new _Logger2["default"](options.logger);logger.log("environment-detector started",options);return _webcam2["default"].detect().then(function(webcamsResult){var result={browser:_browsers2["default"].detect(ua),platform:_platform2["default"].detect(ua),os:_os2["default"].detect(ua),webcams:webcamsResult,capabilities:_capabilities2["default"].detect()};if(result.browser.name===_browsers2["default"].names.SAFARI&&result.browser.version>"11"&&!result.capabilities.find(function(c){return c===_capabilities2["default"].names.GET_USER_MEDIA})){result.browser.name=_browsers2["default"].names.IOS_WEBVIEW}logger.log("environment-detector result",result);return result})["catch"](function(e){logger.log("environment-detector failed",e);throw e})}},{"./browsers":2,"./capabilities":3,"./os":5,"./platform":6,"./utils/Logger":7,"./webcam":10}],5:[function(require,module,exports){"use strict";exports.__esModule=true;var _getFirstMatch=require("./utils/getFirstMatch");var _getFirstMatch2=_interopRequireDefault(_getFirstMatch);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var names={WINDOWS_PHONE:"windowsphone",IOS:"ios",ANDROID:"android",MAC_OS:"macos",WINDOWS:"windows",LINUX:"linux",UNKNOWN:"unknown"};var tests=[{osName:names.WINDOWS_PHONE,testRegex:/windows phone/i,getVersion:function getVersion(ua){return(0,_getFirstMatch2["default"])(ua,/windows phone (?:os)?\s?(\d+(\.\d+)*)/i)}},{osName:names.IOS,testRegex:/(ipod|iphone|ipad)/i,getVersion:function getVersion(ua){return(0,_getFirstMatch2["default"])(ua,/os (\d+([_\s]\d+)*) like mac os x/i).split("_").join(".")}},{osName:names.ANDROID,testRegex:/^((?!.*like android).*android)|silk/i,getVersion:function getVersion(ua){return(0,_getFirstMatch2["default"])(ua,/android[ \/-](\d+(\.\d+)*)/i)}},{osName:names.MAC_OS,testRegex:/macintosh/i,getVersion:function getVersion(ua){return ua.replace(/.*?OS X (.*?)(\)|;).*/,"$1").split("_").join(".")}},{osName:names.WINDOWS,testRegex:/windows/i,getVersion:function getVersion(ua){return ua.replace(/.*?Windows (.*?)(\)|;).*/,"$1")}},{osName:names.LINUX,testRegex:/linux/i,getVersion:function getVersion(){return null}}];exports["default"]={names:names,detect:function detect(ua){for(var i=0;i<tests.length;i++){if(tests[i].testRegex.test(ua)){return{name:tests[i].osName,version:tests[i].getVersion(ua)||(0,_getFirstMatch2["default"])(ua,/version\/(\d+\.\d+)/i)||null}}}return{name:names.UNKNOWN,version:null}}}},{"./utils/getFirstMatch":9}],6:[function(require,module,exports){"use strict";exports.__esModule=true;var _getFirstMatch=require("./utils/getFirstMatch");var _getFirstMatch2=_interopRequireDefault(_getFirstMatch);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var types={MOBILE:"mobile",TABLET:"tablet",DESKTOP:"desktop"};exports["default"]={types:types,detect:function detect(ua){var tablet=/tablet/i.test(ua);var mobile=!tablet&&/[^-]mobi/i.test(ua);var ios=(0,_getFirstMatch2["default"])(ua,/(ipod|iphone|ipad)/i).toLowerCase();var likeAndroid=/like android/i.test(ua);var android=!likeAndroid&&/android/i.test(ua);var nexusMobile=/nexus\s*[0-6]\s*/i.test(ua);var nexusTablet=!nexusMobile&&/nexus\s*[0-9]+/i.test(ua);var androidVersion=(0,_getFirstMatch2["default"])(ua,/android[ \/-](\d+(\.\d+)*)/i).split(".")[0];var silk=/silk/i.test(ua);if(tablet||nexusTablet||ios==="ipad"||android&&(+androidVersion===3||+androidVersion>=4&&!mobile)||silk){return{type:types.TABLET}}else if(mobile||nexusMobile){return{type:types.MOBILE}}return{type:types.DESKTOP}}}},{"./utils/getFirstMatch":9}],7:[function(require,module,exports){"use strict";exports.__esModule=true;var _nativePromiseOnly=require("native-promise-only");var _nativePromiseOnly2=_interopRequireDefault(_nativePromiseOnly);var _json=require("json3");var _json2=_interopRequireDefault(_json);var _v=require("uuid/v4");var _v2=_interopRequireDefault(_v);var _currentScriptPath=require("./currentScriptPath");var _currentScriptPath2=_interopRequireDefault(_currentScriptPath);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var DEFAULT_LOGGER_PATH=_currentScriptPath2["default"]+"log.gif";var Logger=function(){function Logger(){var _ref=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},_ref$path=_ref.path,path=_ref$path===undefined?DEFAULT_LOGGER_PATH:_ref$path,_ref$disable=_ref.disable,disable=_ref$disable===undefined?false:_ref$disable,_ref$sid=_ref.sid,sid=_ref$sid===undefined?(0,_v2["default"])():_ref$sid;_classCallCheck(this,Logger);this.sid=sid;this.pending=_nativePromiseOnly2["default"].resolve();this.path=path;this.disabled=disable}Logger.prototype.log=function log(name){var _this=this;var data=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.disabled){return}var msg={ts:+new Date,sid:this.sid,name:name,data:data};this.pending=this.pending.then(new _nativePromiseOnly2["default"](function(resolve){var img=document.createElement("img");var done=function done(){img.parentNode.removeChild(img);resolve()};img.style.position="absolute";img.style.top="-10px";img.onload=done;img.onerror=done;img.src=_this.path+"?msg="+encodeURIComponent(_json2["default"].stringify(msg));document.body.appendChild(img)}))};return Logger}();exports["default"]=Logger},{"./currentScriptPath":8,json3:11,"native-promise-only":12,"uuid/v4":17}],8:[function(require,module,exports){"use strict";exports.__esModule=true;function getPath(){if(document.currentScript!==undefined){return document.currentScript.src.split("/").slice(0,-1).join("/")+"/"}var scripts=document.getElementsByTagName("script");var src=scripts[scripts.length-1].src.split("?")[0];return src.split("/").slice(0,-1).join("/")+"/"}exports["default"]=getPath()},{}],9:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=function(str,regex){var match=str.match(regex);if(match&&match.length>1){return match[1]}return""}},{}],10:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]={detect:function detect(){if(navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices){return navigator.mediaDevices.enumerateDevices().then(function(devices){var result=[];for(var i=0;i<devices.length;i++){if(devices[i].kind==="videoinput"){var name=devices[i].label?devices[i].label:"unknown";result.push(name)}}return result})}return Promise.resolve([])}}},{}],11:[function(require,module,exports){(function(global){(function(){var isLoader=typeof define==="function"&&define.amd;var objectTypes={function:true,object:true};var freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports;var root=objectTypes[typeof window]&&window||this,freeGlobal=freeExports&&objectTypes[typeof module]&&module&&!module.nodeType&&typeof global=="object"&&global;if(freeGlobal&&(freeGlobal["global"]===freeGlobal||freeGlobal["window"]===freeGlobal||freeGlobal["self"]===freeGlobal)){root=freeGlobal}function runInContext(context,exports){context||(context=root["Object"]());exports||(exports=root["Object"]());var Number=context["Number"]||root["Number"],String=context["String"]||root["String"],Object=context["Object"]||root["Object"],Date=context["Date"]||root["Date"],SyntaxError=context["SyntaxError"]||root["SyntaxError"],TypeError=context["TypeError"]||root["TypeError"],Math=context["Math"]||root["Math"],nativeJSON=context["JSON"]||root["JSON"];if(typeof nativeJSON=="object"&&nativeJSON){exports.stringify=nativeJSON.stringify;exports.parse=nativeJSON.parse}var objectProto=Object.prototype,getClass=objectProto.toString,isProperty,forEach,undef;var isExtended=new Date(-0xc782b5b800cec);try{isExtended=isExtended.getUTCFullYear()==-109252&&isExtended.getUTCMonth()===0&&isExtended.getUTCDate()===1&&isExtended.getUTCHours()==10&&isExtended.getUTCMinutes()==37&&isExtended.getUTCSeconds()==6&&isExtended.getUTCMilliseconds()==708}catch(exception){}function has(name){if(has[name]!==undef){return has[name]}var isSupported;if(name=="bug-string-char-index"){isSupported="a"[0]!="a"}else if(name=="json"){isSupported=has("json-stringify")&&has("json-parse")}else{var value,serialized='{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';if(name=="json-stringify"){var stringify=exports.stringify,stringifySupported=typeof stringify=="function"&&isExtended;if(stringifySupported){(value=function(){return 1}).toJSON=value;try{stringifySupported=stringify(0)==="0"&&stringify(new Number)==="0"&&stringify(new String)=='""'&&stringify(getClass)===undef&&stringify(undef)===undef&&stringify()===undef&&stringify(value)==="1"&&stringify([value])=="[1]"&&stringify([undef])=="[null]"&&stringify(null)=="null"&&stringify([undef,getClass,null])=="[null,null,null]"&&stringify({a:[value,true,false,null,"\0\b\n\f\r\t"]})==serialized&&stringify(null,value)==="1"&&stringify([1,2],null,1)=="[\n 1,\n 2\n]"&&stringify(new Date(-864e13))=='"-271821-04-20T00:00:00.000Z"'&&stringify(new Date(864e13))=='"+275760-09-13T00:00:00.000Z"'&&stringify(new Date(-621987552e5))=='"-000001-01-01T00:00:00.000Z"'&&stringify(new Date(-1))=='"1969-12-31T23:59:59.999Z"'}catch(exception){stringifySupported=false}}isSupported=stringifySupported}if(name=="json-parse"){var parse=exports.parse;if(typeof parse=="function"){try{if(parse("0")===0&&!parse(false)){value=parse(serialized);var parseSupported=value["a"].length==5&&value["a"][0]===1;if(parseSupported){try{parseSupported=!parse('"\t"')}catch(exception){}if(parseSupported){try{parseSupported=parse("01")!==1}catch(exception){}}if(parseSupported){try{parseSupported=parse("1.")!==1}catch(exception){}}}}}catch(exception){parseSupported=false}}isSupported=parseSupported}}return has[name]=!!isSupported}if(!has("json")){var functionClass="[object Function]",dateClass="[object Date]",numberClass="[object Number]",stringClass="[object String]",arrayClass="[object Array]",booleanClass="[object Boolean]";var charIndexBuggy=has("bug-string-char-index");if(!isExtended){var floor=Math.floor;var Months=[0,31,59,90,120,151,181,212,243,273,304,334];var getDay=function(year,month){return Months[month]+365*(year-1970)+floor((year-1969+(month=+(month>1)))/4)-floor((year-1901+month)/100)+floor((year-1601+month)/400)}}if(!(isProperty=objectProto.hasOwnProperty)){isProperty=function(property){var members={},constructor;if((members.__proto__=null,members.__proto__={toString:1},members).toString!=getClass){isProperty=function(property){var original=this.__proto__,result=property in(this.__proto__=null,this);this.__proto__=original;return result}}else{constructor=members.constructor;isProperty=function(property){var parent=(this.constructor||constructor).prototype;return property in this&&!(property in parent&&this[property]===parent[property])}}members=null;return isProperty.call(this,property)}}forEach=function(object,callback){var size=0,Properties,members,property;(Properties=function(){this.valueOf=0}).prototype.valueOf=0;members=new Properties;for(property in members){if(isProperty.call(members,property)){size++}}Properties=members=null;if(!size){members=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"];forEach=function(object,callback){var isFunction=getClass.call(object)==functionClass,property,length;var hasProperty=!isFunction&&typeof object.constructor!="function"&&objectTypes[typeof object.hasOwnProperty]&&object.hasOwnProperty||isProperty;for(property in object){if(!(isFunction&&property=="prototype")&&hasProperty.call(object,property)){callback(property)}}for(length=members.length;property=members[--length];hasProperty.call(object,property)&&callback(property));}}else if(size==2){forEach=function(object,callback){var members={},isFunction=getClass.call(object)==functionClass,property;for(property in object){if(!(isFunction&&property=="prototype")&&!isProperty.call(members,property)&&(members[property]=1)&&isProperty.call(object,property)){callback(property)}}}}else{forEach=function(object,callback){var isFunction=getClass.call(object)==functionClass,property,isConstructor;for(property in object){if(!(isFunction&&property=="prototype")&&isProperty.call(object,property)&&!(isConstructor=property==="constructor")){callback(property)}}if(isConstructor||isProperty.call(object,property="constructor")){callback(property)}}}return forEach(object,callback)};if(!has("json-stringify")){var Escapes={92:"\\\\",34:'\\"',8:"\\b",12:"\\f",10:"\\n",13:"\\r",9:"\\t"};var leadingZeroes="000000";var toPaddedString=function(width,value){
window.Realeyesit.EnvironmentDetector={detect:_index2["default"]};exports["default"]=window.Realeyesit.EnvironmentDetector},{"./lib/index":4}],2:[function(require,module,exports){"use strict";exports.__esModule=true;var _getFirstMatch=require("./utils/getFirstMatch");var _getFirstMatch2=_interopRequireDefault(_getFirstMatch);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var names={OPERA:"Opera",SAMSUNG_BROWSER:"Samsung Internet for Android",YANDEX_BROWSER:"Yandex Browser",PUFFIN:"Puffin",K_MELEON:"K-Meleon",WINDOWS_PHONE:"Windows Phone",INTERNET_EXPLORER:"Internet Explorer",MICROSOFT_EDGE:"Microsoft Edge",FIREFOX:"Firefox",AMAZON_SILK:"Amazon Silk",PHANTOM_JS:"PhantomJS",CHROMIUM:"Chromium",CHROME:"Chrome",ANDROID:"Android",SAFARI:"Safari",VIVALDI:"Vivaldi",UC_BROWSER:"UC Browser",SEAMONKEY:"SeaMonkey",IOS_WEBVIEW:"iOS WebView",UNKNOWN:"Unknown"};var tests=[{browserName:names.VIVALDI,testRegex:/vivaldi/i,versionRegex:/(?:vivaldi)[\s\/](\d+(\.\d+)?)/i},{browserName:names.UC_BROWSER,testRegex:/ucbrowser/i,versionRegex:/(?:ucbrowser)[\s\/](\d+(\.\d+)?)/i},{browserName:names.SEAMONKEY,testRegex:/seamonkey/i,versionRegex:/(?:seamonkey)[\s\/](\d+(\.\d+)?)/i},{browserName:names.OPERA,testRegex:/opera|opios|opr\//i,versionRegex:/(?:opera |opios\/|opr\/)(\d+(\.\d+)?)/i},{browserName:names.SAMSUNG_BROWSER,testRegex:/SamsungBrowser/i,versionRegex:/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i},{browserName:names.YANDEX_BROWSER,testRegex:/yabrowser/i,versionRegex:/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i},{browserName:names.PUFFIN,testRegex:/puffin/i,versionRegex:/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i},{browserName:names.K_MELEON,testRegex:/k-meleon/i,versionRegex:/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i},{browserName:names.WINDOWS_PHONE,testRegex:/windows phone/i,versionRegex:/(?:iemobile|edge)\/(\d+(\.\d+)?)/i},{browserName:names.INTERNET_EXPLORER,testRegex:/msie|trident/i,versionRegex:/(?:msie |rv:)(\d+(\.\d+)?)/i},{browserName:names.MICROSOFT_EDGE,testRegex:/chrome.+? edge/i,versionRegex:/edge\/(\d+(\.\d+)?)/i},{browserName:names.FIREFOX,testRegex:/firefox|iceweasel|fxios/i,versionRegex:/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i},{browserName:names.AMAZON_SILK,testRegex:/silk/i,versionRegex:/silk\/(\d+(\.\d+)?)/i},{browserName:names.PHANTOM_JS,testRegex:/phantom/i,versionRegex:/phantomjs\/(\d+(\.\d+)?)/i},{browserName:names.CHROMIUM,testRegex:/chromium/i,versionRegex:/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i},{browserName:names.CHROME,testRegex:/chrome|crios|crmo/i,versionRegex:/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i},{browserName:names.ANDROID,testRegex:/android/i,versionRegex:null},{browserName:names.SAFARI,testRegex:/safari/i,versionRegex:/version\/(\d+(\.\d+)?)/i},{browserName:names.IOS_WEBVIEW,testRegex:/(iPhone|iPad).*AppleWebKit(?!.*Safari)/i,versionRegex:null}];exports["default"]={names:names,detect:function detect(ua){for(var i=0;i<tests.length;i++){if(tests[i].testRegex.test(ua)){return{name:tests[i].browserName,version:(0,_getFirstMatch2["default"])(ua,tests[i].versionRegex)||(0,_getFirstMatch2["default"])(ua,/version\/(\d+(\.\d+)?)/i)||null}}}return{name:names.UNKNOWN,version:null}}}},{"./utils/getFirstMatch":9}],3:[function(require,module,exports){"use strict";exports.__esModule=true;var names={GET_USER_MEDIA:"navigator.getUserMedia",MEDIA_RECORDER:"MediaRecorder",WEBCAM:"webcam",DOCUMENT_ALL:"document.all",DOCUMENT_QUERY_SELECTOR:"document.querySelector",HTTP:"http",HTTPS:"https",LOCALHOST:"localhost"};var tests=[{capabilityName:names.GET_USER_MEDIA,test:function test(){return!!(navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia)}},{capabilityName:names.MEDIA_RECORDER,test:function test(){return typeof window.MediaRecorder==="function"}},{capabilityName:names.DOCUMENT_ALL,test:function test(){return document.querySelector!==undefined}},{capabilityName:names.DOCUMENT_QUERY_SELECTOR,test:function test(){return typeof document.querySelector==="function"}},{capabilityName:names.HTTP,test:function test(){return document.location.protocol==="http:"}},{capabilityName:names.HTTPS,test:function test(){return document.location.protocol==="https:"}},{capabilityName:names.LOCALHOST,test:function test(){return document.location.hostname==="localhost"||document.location.hostname==="127.0.0.1"}}];exports["default"]={names:names,detect:function detect(){var results=[];for(var i=0;i<tests.length;i++){if(tests[i].test()){results.push(tests[i].capabilityName)}}return results}}},{}],4:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=detect;var _browsers=require("./browsers");var _browsers2=_interopRequireDefault(_browsers);var _platform=require("./platform");var _platform2=_interopRequireDefault(_platform);var _os=require("./os");var _os2=_interopRequireDefault(_os);var _capabilities=require("./capabilities");var _capabilities2=_interopRequireDefault(_capabilities);var _webcam=require("./webcam");var _webcam2=_interopRequireDefault(_webcam);var _Logger=require("./utils/Logger");var _Logger2=_interopRequireDefault(_Logger);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function detect(){var options=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var ua=navigator.userAgent;var logger=new _Logger2["default"](options.logger);logger.log("environment-detector started",options);return _webcam2["default"].detect().then(function(webcamsResult){var result={browser:_browsers2["default"].detect(ua),platform:_platform2["default"].detect(ua),os:_os2["default"].detect(ua),webcams:webcamsResult,capabilities:_capabilities2["default"].detect()};if(result.browser.name===_browsers2["default"].names.SAFARI&&result.browser.version>"11"&&!result.capabilities.find(function(c){return c===_capabilities2["default"].names.GET_USER_MEDIA})){result.browser.name=_browsers2["default"].names.IOS_WEBVIEW}logger.log("environment-detector result",result);return result})["catch"](function(e){logger.log("environment-detector failed",e);throw e})}},{"./browsers":2,"./capabilities":3,"./os":5,"./platform":6,"./utils/Logger":7,"./webcam":10}],5:[function(require,module,exports){"use strict";exports.__esModule=true;var _getFirstMatch=require("./utils/getFirstMatch");var _getFirstMatch2=_interopRequireDefault(_getFirstMatch);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var names={WINDOWS_PHONE:"windowsphone",IOS:"ios",ANDROID:"android",MAC_OS:"macos",WINDOWS:"windows",LINUX:"linux",OPENBSD:"openbsd",UNKNOWN:"unknown"};var tests=[{osName:names.WINDOWS_PHONE,testRegex:/windows phone/i,getVersion:function getVersion(ua){return(0,_getFirstMatch2["default"])(ua,/windows phone (?:os)?\s?(\d+(\.\d+)*)/i)}},{osName:names.IOS,testRegex:/(ipod|iphone|ipad)/i,getVersion:function getVersion(ua){return(0,_getFirstMatch2["default"])(ua,/os (\d+([_\s]\d+)*) like mac os x/i).split("_").join(".")}},{osName:names.ANDROID,testRegex:/^((?!.*like android).*android)|silk/i,getVersion:function getVersion(ua){return(0,_getFirstMatch2["default"])(ua,/android[ \/-](\d+(\.\d+)*)/i)}},{osName:names.MAC_OS,testRegex:/macintosh/i,getVersion:function getVersion(ua){return ua.replace(/.*?OS X (.*?)(\)|;).*/,"$1").split("_").join(".")}},{osName:names.WINDOWS,testRegex:/windows/i,getVersion:function getVersion(ua){return ua.replace(/.*?Windows (.*?)(\)|;).*/,"$1")}},{osName:names.LINUX,testRegex:/linux/i,getVersion:function getVersion(){return null}},{osName:names.OPENBSD,testRegex:/OpenBSD/i,getVersion:function getVersion(){return null}}];exports["default"]={names:names,detect:function detect(ua){for(var i=0;i<tests.length;i++){if(tests[i].testRegex.test(ua)){return{name:tests[i].osName,version:tests[i].getVersion(ua)||(0,_getFirstMatch2["default"])(ua,/version\/(\d+\.\d+)/i)||null}}}return{name:names.UNKNOWN,version:null}}}},{"./utils/getFirstMatch":9}],6:[function(require,module,exports){"use strict";exports.__esModule=true;var _getFirstMatch=require("./utils/getFirstMatch");var _getFirstMatch2=_interopRequireDefault(_getFirstMatch);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var types={MOBILE:"mobile",TABLET:"tablet",DESKTOP:"desktop"};exports["default"]={types:types,detect:function detect(ua){var tablet=/tablet/i.test(ua);var mobile=!tablet&&/[^-]mobi/i.test(ua);var ios=(0,_getFirstMatch2["default"])(ua,/(ipod|iphone|ipad)/i).toLowerCase();var likeAndroid=/like android/i.test(ua);var android=!likeAndroid&&/android/i.test(ua);var nexusMobile=/nexus\s*[0-6]\s*/i.test(ua);var nexusTablet=!nexusMobile&&/nexus\s*[0-9]+/i.test(ua);var androidVersion=(0,_getFirstMatch2["default"])(ua,/android[ \/-](\d+(\.\d+)*)/i).split(".")[0];var silk=/silk/i.test(ua);if(tablet||nexusTablet||ios==="ipad"||android&&(+androidVersion===3||+androidVersion>=4&&!mobile)||silk){return{type:types.TABLET}}else if(mobile||nexusMobile){return{type:types.MOBILE}}return{type:types.DESKTOP}}}},{"./utils/getFirstMatch":9}],7:[function(require,module,exports){"use strict";exports.__esModule=true;var _nativePromiseOnly=require("native-promise-only");var _nativePromiseOnly2=_interopRequireDefault(_nativePromiseOnly);var _json=require("json3");var _json2=_interopRequireDefault(_json);var _v=require("uuid/v4");var _v2=_interopRequireDefault(_v);var _currentScriptPath=require("./currentScriptPath");var _currentScriptPath2=_interopRequireDefault(_currentScriptPath);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}var DEFAULT_LOGGER_PATH=_currentScriptPath2["default"]+"log.gif";var Logger=function(){function Logger(){var _ref=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},_ref$path=_ref.path,path=_ref$path===undefined?DEFAULT_LOGGER_PATH:_ref$path,_ref$disable=_ref.disable,disable=_ref$disable===undefined?false:_ref$disable,_ref$sid=_ref.sid,sid=_ref$sid===undefined?(0,_v2["default"])():_ref$sid;_classCallCheck(this,Logger);this.sid=sid;this.pending=_nativePromiseOnly2["default"].resolve();this.path=path;this.disabled=disable}Logger.prototype.log=function log(name){var _this=this;var data=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};if(this.disabled){return}var msg={ts:+new Date,sid:this.sid,name:name,data:data};this.pending=this.pending.then(new _nativePromiseOnly2["default"](function(resolve){var img=document.createElement("img");var done=function done(){img.parentNode.removeChild(img);resolve()};img.style.position="absolute";img.style.top="-10px";img.onload=done;img.onerror=done;img.src=_this.path+"?msg="+encodeURIComponent(_json2["default"].stringify(msg));document.body.appendChild(img)}))};return Logger}();exports["default"]=Logger},{"./currentScriptPath":8,json3:11,"native-promise-only":12,"uuid/v4":17}],8:[function(require,module,exports){"use strict";exports.__esModule=true;function getPath(){if(document.currentScript!==undefined){return document.currentScript.src.split("/").slice(0,-1).join("/")+"/"}var scripts=document.getElementsByTagName("script");var src=scripts[scripts.length-1].src.split("?")[0];return src.split("/").slice(0,-1).join("/")+"/"}exports["default"]=getPath()},{}],9:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]=function(str,regex){var match=str.match(regex);if(match&&match.length>1){return match[1]}return""}},{}],10:[function(require,module,exports){"use strict";exports.__esModule=true;exports["default"]={detect:function detect(){if(navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices){return navigator.mediaDevices.enumerateDevices().then(function(devices){var result=[];for(var i=0;i<devices.length;i++){if(devices[i].kind==="videoinput"){var name=devices[i].label?devices[i].label:"unknown";result.push(name)}}return result})}return Promise.resolve([])}}},{}],11:[function(require,module,exports){(function(global){(function(){var isLoader=typeof define==="function"&&define.amd;var objectTypes={function:true,object:true};var freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports;var root=objectTypes[typeof window]&&window||this,freeGlobal=freeExports&&objectTypes[typeof module]&&module&&!module.nodeType&&typeof global=="object"&&global;if(freeGlobal&&(freeGlobal["global"]===freeGlobal||freeGlobal["window"]===freeGlobal||freeGlobal["self"]===freeGlobal)){root=freeGlobal}function runInContext(context,exports){context||(context=root["Object"]());exports||(exports=root["Object"]());var Number=context["Number"]||root["Number"],String=context["String"]||root["String"],Object=context["Object"]||root["Object"],Date=context["Date"]||root["Date"],SyntaxError=context["SyntaxError"]||root["SyntaxError"],TypeError=context["TypeError"]||root["TypeError"],Math=context["Math"]||root["Math"],nativeJSON=context["JSON"]||root["JSON"];if(typeof nativeJSON=="object"&&nativeJSON){exports.stringify=nativeJSON.stringify;exports.parse=nativeJSON.parse}var objectProto=Object.prototype,getClass=objectProto.toString,isProperty,forEach,undef;var isExtended=new Date(-0xc782b5b800cec);try{isExtended=isExtended.getUTCFullYear()==-109252&&isExtended.getUTCMonth()===0&&isExtended.getUTCDate()===1&&isExtended.getUTCHours()==10&&isExtended.getUTCMinutes()==37&&isExtended.getUTCSeconds()==6&&isExtended.getUTCMilliseconds()==708}catch(exception){}function has(name){if(has[name]!==undef){return has[name]}var isSupported;if(name=="bug-string-char-index"){isSupported="a"[0]!="a"}else if(name=="json"){isSupported=has("json-stringify")&&has("json-parse")}else{var value,serialized='{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';if(name=="json-stringify"){var stringify=exports.stringify,stringifySupported=typeof stringify=="function"&&isExtended;if(stringifySupported){(value=function(){return 1}).toJSON=value;try{stringifySupported=stringify(0)==="0"&&stringify(new Number)==="0"&&stringify(new String)=='""'&&stringify(getClass)===undef&&stringify(undef)===undef&&stringify()===undef&&stringify(value)==="1"&&stringify([value])=="[1]"&&stringify([undef])=="[null]"&&stringify(null)=="null"&&stringify([undef,getClass,null])=="[null,null,null]"&&stringify({a:[value,true,false,null,"\0\b\n\f\r\t"]})==serialized&&stringify(null,value)==="1"&&stringify([1,2],null,1)=="[\n 1,\n 2\n]"&&stringify(new Date(-864e13))=='"-271821-04-20T00:00:00.000Z"'&&stringify(new Date(864e13))=='"+275760-09-13T00:00:00.000Z"'&&stringify(new Date(-621987552e5))=='"-000001-01-01T00:00:00.000Z"'&&stringify(new Date(-1))=='"1969-12-31T23:59:59.999Z"'}catch(exception){stringifySupported=false}}isSupported=stringifySupported}if(name=="json-parse"){var parse=exports.parse;if(typeof parse=="function"){try{if(parse("0")===0&&!parse(false)){value=parse(serialized);var parseSupported=value["a"].length==5&&value["a"][0]===1;if(parseSupported){try{parseSupported=!parse('"\t"')}catch(exception){}if(parseSupported){try{parseSupported=parse("01")!==1}catch(exception){}}if(parseSupported){try{parseSupported=parse("1.")!==1}catch(exception){}}}}}catch(exception){parseSupported=false}}isSupported=parseSupported}}return has[name]=!!isSupported}if(!has("json")){var functionClass="[object Function]",dateClass="[object Date]",numberClass="[object Number]",stringClass="[object String]",arrayClass="[object Array]",booleanClass="[object Boolean]";var charIndexBuggy=has("bug-string-char-index");if(!isExtended){var floor=Math.floor;var Months=[0,31,59,90,120,151,181,212,243,273,304,334];var getDay=function(year,month){return Months[month]+365*(year-1970)+floor((year-1969+(month=+(month>1)))/4)-floor((year-1901+month)/100)+floor((year-1601+month)/400)}}if(!(isProperty=objectProto.hasOwnProperty)){isProperty=function(property){var members={},constructor;if((members.__proto__=null,members.__proto__={toString:1},members).toString!=getClass){isProperty=function(property){var original=this.__proto__,result=property in(this.__proto__=null,this);this.__proto__=original;return result}}else{constructor=members.constructor;isProperty=function(property){var parent=(this.constructor||constructor).prototype;return property in this&&!(property in parent&&this[property]===parent[property])}}members=null;return isProperty.call(this,property)}}forEach=function(object,callback){var size=0,Properties,members,property;(Properties=function(){this.valueOf=0}).prototype.valueOf=0;members=new Properties;for(property in members){if(isProperty.call(members,property)){size++}}Properties=members=null;if(!size){members=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"];forEach=function(object,callback){var isFunction=getClass.call(object)==functionClass,property,length;var hasProperty=!isFunction&&typeof object.constructor!="function"&&objectTypes[typeof object.hasOwnProperty]&&object.hasOwnProperty||isProperty;for(property in object){if(!(isFunction&&property=="prototype")&&hasProperty.call(object,property)){callback(property)}}for(length=members.length;property=members[--length];hasProperty.call(object,property)&&callback(property));}}else if(size==2){forEach=function(object,callback){var members={},isFunction=getClass.call(object)==functionClass,property;for(property in object){if(!(isFunction&&property=="prototype")&&!isProperty.call(members,property)&&(members[property]=1)&&isProperty.call(object,property)){callback(property)}}}}else{forEach=function(object,callback){var isFunction=getClass.call(object)==functionClass,property,isConstructor;for(property in object){if(!(isFunction&&property=="prototype")&&isProperty.call(object,property)&&!(isConstructor=property==="constructor")){callback(property)}}if(isConstructor||isProperty.call(object,property="constructor")){callback(property)}}}return forEach(object,callback)};if(!has("json-stringify")){var Escapes={92:"\\\\",34:'\\"',8:"\\b",12:"\\f",10:"\\n",13:"\\r",9:"\\t"};var leadingZeroes="000000";var toPaddedString=function(width,value){
// Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.

@@ -17,3 +17,3 @@ return(leadingZeroes+(value||0)).slice(-width)};var unicodePrefix="\\u00";var quote=function(value){var result='"',index=0,length=value.length,useCharIndex=!charIndexBuggy||length>10;var symbols=useCharIndex&&(charIndexBuggy?value.split(""):value);for(;index<length;index++){var charCode=value.charCodeAt(index);switch(charCode){case 8:case 9:case 10:case 12:case 13:case 34:case 92:result+=Escapes[charCode];break;default:if(charCode<32){result+=unicodePrefix+toPaddedString(2,charCode.toString(16));break}result+=useCharIndex?symbols[index]:value.charAt(index)}}return result+'"'};var serialize=function(property,object,callback,properties,whitespace,indentation,stack){var value,className,year,month,date,time,hours,minutes,seconds,milliseconds,results,element,index,length,prefix,result;try{value=object[property]}catch(exception){}if(typeof value=="object"&&value){className=getClass.call(value);if(className==dateClass&&!isProperty.call(value,"toJSON")){if(value>-1/0&&value<1/0){if(getDay){date=floor(value/864e5);for(year=floor(date/365.2425)+1970-1;getDay(year+1,0)<=date;year++);for(month=floor((date-getDay(year,0))/30.42);getDay(year,month+1)<=date;month++);date=1+date-getDay(year,month);time=(value%864e5+864e5)%864e5;hours=floor(time/36e5)%24;minutes=floor(time/6e4)%60;seconds=floor(time/1e3)%60;milliseconds=time%1e3}else{year=value.getUTCFullYear();month=value.getUTCMonth();date=value.getUTCDate();hours=value.getUTCHours();minutes=value.getUTCMinutes();seconds=value.getUTCSeconds();milliseconds=value.getUTCMilliseconds()}value=(year<=0||year>=1e4?(year<0?"-":"+")+toPaddedString(6,year<0?-year:year):toPaddedString(4,year))+"-"+toPaddedString(2,month+1)+"-"+toPaddedString(2,date)+"T"+toPaddedString(2,hours)+":"+toPaddedString(2,minutes)+":"+toPaddedString(2,seconds)+"."+toPaddedString(3,milliseconds)+"Z"}else{value=null}}else if(typeof value.toJSON=="function"&&(className!=numberClass&&className!=stringClass&&className!=arrayClass||isProperty.call(value,"toJSON"))){value=value.toJSON(property)}}if(callback){value=callback.call(object,property,value)}if(value===null){return"null"}className=getClass.call(value);if(className==booleanClass){return""+value}else if(className==numberClass){return value>-1/0&&value<1/0?""+value:"null"}else if(className==stringClass){return quote(""+value)}if(typeof value=="object"){for(length=stack.length;length--;){if(stack[length]===value){throw TypeError()}}stack.push(value);results=[];prefix=indentation;indentation+=whitespace;if(className==arrayClass){for(index=0,length=value.length;index<length;index++){element=serialize(index,value,callback,properties,whitespace,indentation,stack);results.push(element===undef?"null":element)}result=results.length?whitespace?"[\n"+indentation+results.join(",\n"+indentation)+"\n"+prefix+"]":"["+results.join(",")+"]":"[]"}else{forEach(properties||value,function(property){var element=serialize(property,value,callback,properties,whitespace,indentation,stack);if(element!==undef){results.push(quote(property)+":"+(whitespace?" ":"")+element)}});result=results.length?whitespace?"{\n"+indentation+results.join(",\n"+indentation)+"\n"+prefix+"}":"{"+results.join(",")+"}":"{}"}stack.pop();return result}};exports.stringify=function(source,filter,width){var whitespace,callback,properties,className;if(objectTypes[typeof filter]&&filter){if((className=getClass.call(filter))==functionClass){callback=filter}else if(className==arrayClass){properties={};for(var index=0,length=filter.length,value;index<length;value=filter[index++],(className=getClass.call(value),className==stringClass||className==numberClass)&&(properties[value]=1));}}if(width){if((className=getClass.call(width))==numberClass){if((width-=width%1)>0){for(whitespace="",width>10&&(width=10);whitespace.length<width;whitespace+=" ");}}else if(className==stringClass){whitespace=width.length<=10?width:width.slice(0,10)}}

*/
(function UMD(name,context,definition){context[name]=context[name]||definition();if(typeof module!="undefined"&&module.exports){module.exports=context[name]}else if(typeof define=="function"&&define.amd){define(function $AMD$(){return context[name]})}})("Promise",typeof global!="undefined"?global:this,function DEF(){"use strict";var builtInProp,cycle,scheduling_queue,ToString=Object.prototype.toString,timer=typeof setImmediate!="undefined"?function timer(fn){return setImmediate(fn)}:setTimeout;try{Object.defineProperty({},"x",{});builtInProp=function builtInProp(obj,name,val,config){return Object.defineProperty(obj,name,{value:val,writable:true,configurable:config!==false})}}catch(err){builtInProp=function builtInProp(obj,name,val){obj[name]=val;return obj}}scheduling_queue=function Queue(){var first,last,item;function Item(fn,self){this.fn=fn;this.self=self;this.next=void 0}return{add:function add(fn,self){item=new Item(fn,self);if(last){last.next=item}else{first=item}last=item;item=void 0},drain:function drain(){var f=first;first=last=cycle=void 0;while(f){f.fn.call(f.self);f=f.next}}}}();function schedule(fn,self){scheduling_queue.add(fn,self);if(!cycle){cycle=timer(scheduling_queue.drain)}}function isThenable(o){var _then,o_type=typeof o;if(o!=null&&(o_type=="object"||o_type=="function")){_then=o.then}return typeof _then=="function"?_then:false}function notify(){for(var i=0;i<this.chain.length;i++){notifyIsolated(this,this.state===1?this.chain[i].success:this.chain[i].failure,this.chain[i])}this.chain.length=0}function notifyIsolated(self,cb,chain){var ret,_then;try{if(cb===false){chain.reject(self.msg)}else{if(cb===true){ret=self.msg}else{ret=cb.call(void 0,self.msg)}if(ret===chain.promise){chain.reject(TypeError("Promise-chain cycle"))}else if(_then=isThenable(ret)){_then.call(ret,chain.resolve,chain.reject)}else{chain.resolve(ret)}}}catch(err){chain.reject(err)}}function resolve(msg){var _then,self=this;if(self.triggered){return}self.triggered=true;if(self.def){self=self.def}try{if(_then=isThenable(msg)){schedule(function(){var def_wrapper=new MakeDefWrapper(self);try{_then.call(msg,function $resolve$(){resolve.apply(def_wrapper,arguments)},function $reject$(){reject.apply(def_wrapper,arguments)})}catch(err){reject.call(def_wrapper,err)}})}else{self.msg=msg;self.state=1;if(self.chain.length>0){schedule(notify,self)}}}catch(err){reject.call(new MakeDefWrapper(self),err)}}function reject(msg){var self=this;if(self.triggered){return}self.triggered=true;if(self.def){self=self.def}self.msg=msg;self.state=2;if(self.chain.length>0){schedule(notify,self)}}function iteratePromises(Constructor,arr,resolver,rejecter){for(var idx=0;idx<arr.length;idx++){(function IIFE(idx){Constructor.resolve(arr[idx]).then(function $resolver$(msg){resolver(idx,msg)},rejecter)})(idx)}}function MakeDefWrapper(self){this.def=self;this.triggered=false}function MakeDef(self){this.promise=self;this.state=0;this.triggered=false;this.chain=[];this.msg=void 0}function Promise(executor){if(typeof executor!="function"){throw TypeError("Not a function")}if(this.__NPO__!==0){throw TypeError("Not a promise")}this.__NPO__=1;var def=new MakeDef(this);this["then"]=function then(success,failure){var o={success:typeof success=="function"?success:true,failure:typeof failure=="function"?failure:false};o.promise=new this.constructor(function extractChain(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}o.resolve=resolve;o.reject=reject});def.chain.push(o);if(def.state!==0){schedule(notify,def)}return o.promise};this["catch"]=function $catch$(failure){return this.then(void 0,failure)};try{executor.call(void 0,function publicResolve(msg){resolve.call(def,msg)},function publicReject(msg){reject.call(def,msg)})}catch(err){reject.call(def,err)}}var PromisePrototype=builtInProp({},"constructor",Promise,false);Promise.prototype=PromisePrototype;builtInProp(PromisePrototype,"__NPO__",0,false);builtInProp(Promise,"resolve",function Promise$resolve(msg){var Constructor=this;if(msg&&typeof msg=="object"&&msg.__NPO__===1){return msg}return new Constructor(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}resolve(msg)})});builtInProp(Promise,"reject",function Promise$reject(msg){return new this(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}reject(msg)})});builtInProp(Promise,"all",function Promise$all(arr){var Constructor=this;if(ToString.call(arr)!="[object Array]"){return Constructor.reject(TypeError("Not an array"))}if(arr.length===0){return Constructor.resolve([])}return new Constructor(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}var len=arr.length,msgs=Array(len),count=0;iteratePromises(Constructor,arr,function resolver(idx,msg){msgs[idx]=msg;if(++count===len){resolve(msgs)}},reject)})});builtInProp(Promise,"race",function Promise$race(arr){var Constructor=this;if(ToString.call(arr)!="[object Array]"){return Constructor.reject(TypeError("Not an array"))}return new Constructor(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}iteratePromises(Constructor,arr,function resolver(idx,msg){resolve(msg)},reject)})});return Promise})}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("timers").setImmediate)},{timers:14}],13:[function(require,module,exports){var process=module.exports={};var cachedSetTimeout;var cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function"){cachedSetTimeout=setTimeout}else{cachedSetTimeout=defaultSetTimout}}catch(e){cachedSetTimeout=defaultSetTimout}try{if(typeof clearTimeout==="function"){cachedClearTimeout=clearTimeout}else{cachedClearTimeout=defaultClearTimeout}}catch(e){cachedClearTimeout=defaultClearTimeout}})();function runTimeout(fun){if(cachedSetTimeout===setTimeout){return setTimeout(fun,0)}if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout){cachedSetTimeout=setTimeout;return setTimeout(fun,0)}try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){return clearTimeout(marker)}if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout){cachedClearTimeout=clearTimeout;return clearTimeout(marker)}try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run()}}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;runClearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[]};process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],14:[function(require,module,exports){(function(setImmediate,clearImmediate){var nextTick=require("process/browser.js").nextTick;var apply=Function.prototype.apply;var slice=Array.prototype.slice;var immediateIds={};var nextImmediateId=0;exports.setTimeout=function(){return new Timeout(apply.call(setTimeout,window,arguments),clearTimeout)};exports.setInterval=function(){return new Timeout(apply.call(setInterval,window,arguments),clearInterval)};exports.clearTimeout=exports.clearInterval=function(timeout){timeout.close()};function Timeout(id,clearFn){this._id=id;this._clearFn=clearFn}Timeout.prototype.unref=Timeout.prototype.ref=function(){};Timeout.prototype.close=function(){this._clearFn.call(window,this._id)};exports.enroll=function(item,msecs){clearTimeout(item._idleTimeoutId);item._idleTimeout=msecs};exports.unenroll=function(item){clearTimeout(item._idleTimeoutId);item._idleTimeout=-1};exports._unrefActive=exports.active=function(item){clearTimeout(item._idleTimeoutId);var msecs=item._idleTimeout;if(msecs>=0){item._idleTimeoutId=setTimeout(function onTimeout(){if(item._onTimeout)item._onTimeout()},msecs)}};exports.setImmediate=typeof setImmediate==="function"?setImmediate:function(fn){var id=nextImmediateId++;var args=arguments.length<2?false:slice.call(arguments,1);immediateIds[id]=true;nextTick(function onNextTick(){if(immediateIds[id]){if(args){fn.apply(null,args)}else{fn.call(null)}exports.clearImmediate(id)}});return id};exports.clearImmediate=typeof clearImmediate==="function"?clearImmediate:function(id){delete immediateIds[id]}}).call(this,require("timers").setImmediate,require("timers").clearImmediate)},{"process/browser.js":13,timers:14}],15:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+"-"+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]+bth[buf[i++]]}module.exports=bytesToUuid},{}],16:[function(require,module,exports){var getRandomValues=typeof crypto!="undefined"&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&msCrypto.getRandomValues.bind(msCrypto);if(getRandomValues){var rnds8=new Uint8Array(16);module.exports=function whatwgRNG(){getRandomValues(rnds8);return rnds8}}else{var rnds=new Array(16);module.exports=function mathRNG(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}},{}],17:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options==="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":15,"./lib/rng":16}]},{},[1]);
(function UMD(name,context,definition){context[name]=context[name]||definition();if(typeof module!="undefined"&&module.exports){module.exports=context[name]}else if(typeof define=="function"&&define.amd){define(function $AMD$(){return context[name]})}})("Promise",typeof global!="undefined"?global:this,function DEF(){"use strict";var builtInProp,cycle,scheduling_queue,ToString=Object.prototype.toString,timer=typeof setImmediate!="undefined"?function timer(fn){return setImmediate(fn)}:setTimeout;try{Object.defineProperty({},"x",{});builtInProp=function builtInProp(obj,name,val,config){return Object.defineProperty(obj,name,{value:val,writable:true,configurable:config!==false})}}catch(err){builtInProp=function builtInProp(obj,name,val){obj[name]=val;return obj}}scheduling_queue=function Queue(){var first,last,item;function Item(fn,self){this.fn=fn;this.self=self;this.next=void 0}return{add:function add(fn,self){item=new Item(fn,self);if(last){last.next=item}else{first=item}last=item;item=void 0},drain:function drain(){var f=first;first=last=cycle=void 0;while(f){f.fn.call(f.self);f=f.next}}}}();function schedule(fn,self){scheduling_queue.add(fn,self);if(!cycle){cycle=timer(scheduling_queue.drain)}}function isThenable(o){var _then,o_type=typeof o;if(o!=null&&(o_type=="object"||o_type=="function")){_then=o.then}return typeof _then=="function"?_then:false}function notify(){for(var i=0;i<this.chain.length;i++){notifyIsolated(this,this.state===1?this.chain[i].success:this.chain[i].failure,this.chain[i])}this.chain.length=0}function notifyIsolated(self,cb,chain){var ret,_then;try{if(cb===false){chain.reject(self.msg)}else{if(cb===true){ret=self.msg}else{ret=cb.call(void 0,self.msg)}if(ret===chain.promise){chain.reject(TypeError("Promise-chain cycle"))}else if(_then=isThenable(ret)){_then.call(ret,chain.resolve,chain.reject)}else{chain.resolve(ret)}}}catch(err){chain.reject(err)}}function resolve(msg){var _then,self=this;if(self.triggered){return}self.triggered=true;if(self.def){self=self.def}try{if(_then=isThenable(msg)){schedule(function(){var def_wrapper=new MakeDefWrapper(self);try{_then.call(msg,function $resolve$(){resolve.apply(def_wrapper,arguments)},function $reject$(){reject.apply(def_wrapper,arguments)})}catch(err){reject.call(def_wrapper,err)}})}else{self.msg=msg;self.state=1;if(self.chain.length>0){schedule(notify,self)}}}catch(err){reject.call(new MakeDefWrapper(self),err)}}function reject(msg){var self=this;if(self.triggered){return}self.triggered=true;if(self.def){self=self.def}self.msg=msg;self.state=2;if(self.chain.length>0){schedule(notify,self)}}function iteratePromises(Constructor,arr,resolver,rejecter){for(var idx=0;idx<arr.length;idx++){(function IIFE(idx){Constructor.resolve(arr[idx]).then(function $resolver$(msg){resolver(idx,msg)},rejecter)})(idx)}}function MakeDefWrapper(self){this.def=self;this.triggered=false}function MakeDef(self){this.promise=self;this.state=0;this.triggered=false;this.chain=[];this.msg=void 0}function Promise(executor){if(typeof executor!="function"){throw TypeError("Not a function")}if(this.__NPO__!==0){throw TypeError("Not a promise")}this.__NPO__=1;var def=new MakeDef(this);this["then"]=function then(success,failure){var o={success:typeof success=="function"?success:true,failure:typeof failure=="function"?failure:false};o.promise=new this.constructor(function extractChain(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}o.resolve=resolve;o.reject=reject});def.chain.push(o);if(def.state!==0){schedule(notify,def)}return o.promise};this["catch"]=function $catch$(failure){return this.then(void 0,failure)};try{executor.call(void 0,function publicResolve(msg){resolve.call(def,msg)},function publicReject(msg){reject.call(def,msg)})}catch(err){reject.call(def,err)}}var PromisePrototype=builtInProp({},"constructor",Promise,false);Promise.prototype=PromisePrototype;builtInProp(PromisePrototype,"__NPO__",0,false);builtInProp(Promise,"resolve",function Promise$resolve(msg){var Constructor=this;if(msg&&typeof msg=="object"&&msg.__NPO__===1){return msg}return new Constructor(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}resolve(msg)})});builtInProp(Promise,"reject",function Promise$reject(msg){return new this(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}reject(msg)})});builtInProp(Promise,"all",function Promise$all(arr){var Constructor=this;if(ToString.call(arr)!="[object Array]"){return Constructor.reject(TypeError("Not an array"))}if(arr.length===0){return Constructor.resolve([])}return new Constructor(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}var len=arr.length,msgs=Array(len),count=0;iteratePromises(Constructor,arr,function resolver(idx,msg){msgs[idx]=msg;if(++count===len){resolve(msgs)}},reject)})});builtInProp(Promise,"race",function Promise$race(arr){var Constructor=this;if(ToString.call(arr)!="[object Array]"){return Constructor.reject(TypeError("Not an array"))}return new Constructor(function executor(resolve,reject){if(typeof resolve!="function"||typeof reject!="function"){throw TypeError("Not a function")}iteratePromises(Constructor,arr,function resolver(idx,msg){resolve(msg)},reject)})});return Promise})}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{},require("timers").setImmediate)},{timers:14}],13:[function(require,module,exports){var process=module.exports={};var cachedSetTimeout;var cachedClearTimeout;function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}(function(){try{if(typeof setTimeout==="function"){cachedSetTimeout=setTimeout}else{cachedSetTimeout=defaultSetTimout}}catch(e){cachedSetTimeout=defaultSetTimout}try{if(typeof clearTimeout==="function"){cachedClearTimeout=clearTimeout}else{cachedClearTimeout=defaultClearTimeout}}catch(e){cachedClearTimeout=defaultClearTimeout}})();function runTimeout(fun){if(cachedSetTimeout===setTimeout){return setTimeout(fun,0)}if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout){cachedSetTimeout=setTimeout;return setTimeout(fun,0)}try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}function runClearTimeout(marker){if(cachedClearTimeout===clearTimeout){return clearTimeout(marker)}if((cachedClearTimeout===defaultClearTimeout||!cachedClearTimeout)&&clearTimeout){cachedClearTimeout=clearTimeout;return clearTimeout(marker)}try{return cachedClearTimeout(marker)}catch(e){try{return cachedClearTimeout.call(null,marker)}catch(e){return cachedClearTimeout.call(this,marker)}}}var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){if(!draining||!currentQueue){return}draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=runTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run()}}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;runClearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){runTimeout(drainQueue)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.prependListener=noop;process.prependOnceListener=noop;process.listeners=function(name){return[]};process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],14:[function(require,module,exports){(function(setImmediate,clearImmediate){var nextTick=require("process/browser.js").nextTick;var apply=Function.prototype.apply;var slice=Array.prototype.slice;var immediateIds={};var nextImmediateId=0;exports.setTimeout=function(){return new Timeout(apply.call(setTimeout,window,arguments),clearTimeout)};exports.setInterval=function(){return new Timeout(apply.call(setInterval,window,arguments),clearInterval)};exports.clearTimeout=exports.clearInterval=function(timeout){timeout.close()};function Timeout(id,clearFn){this._id=id;this._clearFn=clearFn}Timeout.prototype.unref=Timeout.prototype.ref=function(){};Timeout.prototype.close=function(){this._clearFn.call(window,this._id)};exports.enroll=function(item,msecs){clearTimeout(item._idleTimeoutId);item._idleTimeout=msecs};exports.unenroll=function(item){clearTimeout(item._idleTimeoutId);item._idleTimeout=-1};exports._unrefActive=exports.active=function(item){clearTimeout(item._idleTimeoutId);var msecs=item._idleTimeout;if(msecs>=0){item._idleTimeoutId=setTimeout(function onTimeout(){if(item._onTimeout)item._onTimeout()},msecs)}};exports.setImmediate=typeof setImmediate==="function"?setImmediate:function(fn){var id=nextImmediateId++;var args=arguments.length<2?false:slice.call(arguments,1);immediateIds[id]=true;nextTick(function onNextTick(){if(immediateIds[id]){if(args){fn.apply(null,args)}else{fn.call(null)}exports.clearImmediate(id)}});return id};exports.clearImmediate=typeof clearImmediate==="function"?clearImmediate:function(id){delete immediateIds[id]}}).call(this,require("timers").setImmediate,require("timers").clearImmediate)},{"process/browser.js":13,timers:14}],15:[function(require,module,exports){var byteToHex=[];for(var i=0;i<256;++i){byteToHex[i]=(i+256).toString(16).substr(1)}function bytesToUuid(buf,offset){var i=offset||0;var bth=byteToHex;return[bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],"-",bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]],bth[buf[i++]]].join("")}module.exports=bytesToUuid},{}],16:[function(require,module,exports){var getRandomValues=typeof crypto!="undefined"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto!="undefined"&&typeof window.msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto);if(getRandomValues){var rnds8=new Uint8Array(16);module.exports=function whatwgRNG(){getRandomValues(rnds8);return rnds8}}else{var rnds=new Array(16);module.exports=function mathRNG(){for(var i=0,r;i<16;i++){if((i&3)===0)r=Math.random()*4294967296;rnds[i]=r>>>((i&3)<<3)&255}return rnds}}},{}],17:[function(require,module,exports){var rng=require("./lib/rng");var bytesToUuid=require("./lib/bytesToUuid");function v4(options,buf,offset){var i=buf&&offset||0;if(typeof options=="string"){buf=options==="binary"?new Array(16):null;options=null}options=options||{};var rnds=options.random||(options.rng||rng)();rnds[6]=rnds[6]&15|64;rnds[8]=rnds[8]&63|128;if(buf){for(var ii=0;ii<16;++ii){buf[i+ii]=rnds[ii]}}return buf||bytesToUuid(rnds)}module.exports=v4},{"./lib/bytesToUuid":15,"./lib/rng":16}]},{},[1]);
//# sourceMappingURL=environment-detector.min.js.map

@@ -23,2 +23,3 @@ /**

LINUX: 'linux',
OPENBSD: 'openbsd',
UNKNOWN: 'unknown',

@@ -72,2 +73,7 @@ };

},
{
osName: names.OPENBSD,
testRegex: /OpenBSD/i,
getVersion() { return null; },
},
];

@@ -74,0 +80,0 @@

{
"name": "@realeyes/environment-detector",
"version": "2.0.8",
"version": "2.0.10",
"scripts": {

@@ -39,3 +39,5 @@ "test": "babel-node tests/index.js",

"gzipme": "0.1.1",
"request": "^2.87.0",
"rimraf": "^2.6.2",
"system-sleep": "^1.3.6",
"uglify-js": "^2.7.3"

@@ -42,0 +44,0 @@ },

@@ -18,8 +18,7 @@ # Environment Detector

The general format for the script URL is `"https://codesdwncdn.realeyesit.com/environment-detector/release/{version}/environment-detector.js"`. You can specify which kinds of updates your app can accept using [semver](https://docs.npmjs.com/getting-started/semantic-versioning) string in a following format:
- `x.y.z` to load the exact version, for example: `https://codesdwncdn.realeyesit.com/environment-detector/release/1.7.2/environment-detector.js`
- `x.y` to receive patch updates: `https://codesdwncdn.realeyesit.com/environment-detector/release/1.7/environment-detector.js`
- `x` to receive minor updates: `https://codesdwncdn.realeyesit.com/environment-detector/release/2/environment-detector.js`
- `x.y` to receive bug fixes only: `https://codesdwncdn.realeyesit.com/environment-detector/release/2.0/environment-detector.min.js`
- `x` to receive bug fixes and new features (**recommended**): `https://codesdwncdn.realeyesit.com/environment-detector/release/2/environment-detector.min.js`
```html
<script src="https://codesdwncdn.realeyesit.com/environment-detector/release/2/environment-detector.js"></script>
<script src="https://codesdwncdn.realeyesit.com/environment-detector/release/2/environment-detector.min.js"></script>
```

@@ -26,0 +25,0 @@

@@ -11,5 +11,23 @@ import fixtures from './fixtures';

};
const incidences = {
total: 0,
ok: 0,
fail: 0
};
const failures = {
platform: { count: 0, samples: [], incidence: 0 },
osName: { count: 0, samples: [], incidence: 0 },
osVersion: { count: 0, samples: [], incidence: 0 },
browserName: { count: 0, samples: [], incidence: 0 },
browserVersion: { count: 0, samples: [], incidence: 0 }
}
const res = [];
// console.log(standardizeVersion('NT 5.1'));
// console.log(standardizeVersion('XP'));
// console.log(standardizeVersion('Server 2003'));
// process.exit();
for (const fx of fixtures) {

@@ -26,9 +44,10 @@ const res = {

if (res.browser.name == fx.browserName &&
res.browser.version == fx.browserVersion &&
if (compareBrowserNames(res.browser.name, fx.browserName) &&
compareVersions(res.browser.version, fx.browserVersion) &&
res.os.name == fx.osName &&
res.os.version == fx.osVersion &&
res.platform.type == fx.platformType
compareOsVersions(res.os.version, fx.osVersion) &&
comparePlatforms(res.platform.type, fx.platformType)
) {
counters.ok++;
incidences.ok += fx.count;
} else {

@@ -38,6 +57,106 @@ console.log(`FAIL ${fx.userAgent}`);

counters.fail++;
incidences.fail += fx.count;
if (!compareBrowserNames(res.browser.name, fx.browserName)) {
failures.browserName.count++;
failures.browserName.incidence += fx.count;
addToSamples('browserName', res.browser.name, fx.browserName);
}
if (!compareVersions(res.browser.version, fx.browserVersion)) {
failures.browserVersion.count++;
failures.browserVersion.incidence += fx.count;
addToSamples('browserVersion', res.browser.version, fx.browserVersion);
}
if (res.os.name =! fx.osName) {
failures.osName.count++;
failures.osName.incidence += fx.count;
addToSamples('osName', res.os.name, fx.osName);
}
if (!compareOsVersions(res.os.version, fx.osVersion)) {
failures.osVersion.count++;
failures.osVersion.incidence += fx.count;
addToSamples('osVersion', res.os.version, fx.osVersion);
}
if(!comparePlatforms(res.platform.type, fx.platformType)) {
failures.platform.count++;
failures.platform.incidence += fx.count;
addToSamples('platform', res.platform.type, fx.platformType);
}
}
counters.total++;
incidences.total += fx.count;
}
console.log(`TOTAL: ${counters.total}; OK: ${counters.ok}; FAILED: ${counters.fail}`);
console.log(`TOTAL: ${incidences.total}; OK: ${incidences.ok}; FAILED: ${incidences.fail}`);
const reportedFailures = Object.assign({}, failures);
for(let i in reportedFailures) { reportedFailures[i].samples = undefined };
console.log(reportedFailures);
function compareVersions(v1, v2) {
return standardizeVersion(v1) === standardizeVersion(v2);
}
function compareOsVersions(v1, v2) {
const version1 = standardizeVersion(v1);
const version2 = standardizeVersion(v2);
// mapping different coding conventions between our detector and the API providing the fixtures
const versionMap = {
'NT 5.1': 'XP',
'NT 6.1': '7.0',
'NT 6.2': '8.0',
'NT 10.0': '10.0',
'NT 6.3': '8.1',
'NT 6.0': 'Vista',
'NT 5.2': 'Server 2003'
};
if(version1 == version2) return true;
if(version1 == versionMap[version2]) return true;
if(versionMap[version1] == version2) return true;
return false;
}
function standardizeVersion(version) {
if(!version) return '';
if(version.match(/[^0-9.]/)) return version;
const versionArray = version.split('.');
return versionArray.concat([0,0,0]).slice(0,2).join('.');
}
function comparePlatforms(p1, p2) {
if(p1 === p2) return true;
// we use desktop as default so even for unknown, other use empty string
if(p1 === 'desktop' && p2 === '') return true;
if(p1 === '' && p2 === 'desktop') return true;
return false;
}
function compareBrowserNames(b1, b2) {
if(b1 === b2) return true;
// we use "Unknown for unknown, other use empty string
if(b1 === 'Unknown' && b2 === '') return true;
if(b1 === '' && b1 === 'Unknown') return true;
if(b1 === 'Chrome' && b2 === 'ChromeiOS') return true;
if(b1 === 'ChromeiOS' && b1 === 'Chrome') return true;
return false;
}
function addToSamples(sampleName, s1, s2) {
const sample = `${s1} <=> ${s2}`;
try {
if(failures[sampleName].samples.indexOf(sample) < 0) {
failures[sampleName].samples.push(sample);
}
}
catch (e) {
console.log(failures);
console.log(sampleName);
console.log(failures[sampleName]);
throw `${sampleName} ${e}`;
}
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc