@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
154 lines • 15.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export class Browser {
constructor() {
this.browserName = 'unknown';
this.browserVersion = 'unknown';
this.engineName = 'unknown';
this.engineVersion = 'unknown';
this.agent = (typeof (navigator) === 'object' ? navigator.userAgent.toLowerCase() : '');
this.detectBrowser();
this.detectVersion();
}
/**
* @return {?}
*/
toString() {
return `Browser: ${this.browserName} (${this.browserVersion}), Engine: ${this.engineName} (${this.engineVersion})`;
}
/**
* @private
* @return {?}
*/
detectVersion() {
if (this.browserVersion === 'unknown') {
/** @type {?} */
const browserVersion = this.agent.match(this.pattern.browser);
this.browserVersion = (browserVersion ? (browserVersion[2] ? browserVersion[2] : browserVersion[1]) : 'unknown');
}
if (this.engineVersion === 'unknown') {
/** @type {?} */
const engineVersion = this.agent.match(this.pattern.engine);
this.engineVersion = (engineVersion ? engineVersion[1] : 'unknown');
}
}
/**
* @private
* @return {?}
*/
detectBrowser() {
if (this.agent.match(/webkit/)) {
this.detectWebkitBrowser();
}
else if (this.agent.match(/trident|msie/)) {
this.detectTridentBrowser();
}
else if (this.agent.match(/gecko/)) {
this.detectGeckoBrowser();
}
else if (this.agent.match(/presto/)) {
this.pattern = {
browser: /version\/([0-9\.]+)/,
engine: /presto\/([0-9\.]+)/,
};
this.engineName = 'presto';
this.browserName = 'opera';
}
}
/**
* @private
* @return {?}
*/
detectGeckoBrowser() {
this.pattern = {
browser: /gecko\/([0-9\.]+)/,
engine: /rv:([0-9\.]+)/,
};
this.engineName = 'gecko';
if (this.agent.match(/firefox/)) {
this.pattern.browser = /firefox\/([0-9\.]+)/;
this.browserName = 'firefox';
}
}
/**
* @private
* @return {?}
*/
detectTridentBrowser() {
this.pattern = {
browser: /msie ([0-9\.]+)/,
engine: /trident\/([0-9\.]+)/,
};
this.engineName = 'trident';
this.browserName = 'msie';
if (this.agent.match(/rv:/)) { // Internet Explorer 11 et +
this.pattern.browser = /rv:([0-9\.]+)/;
}
else if (!this.agent.match(/msie/)) { // No "rv:" and no "msie", we assume that it's IE 11
this.browserVersion = '11.0';
}
}
/**
* @private
* @return {?}
*/
detectWebkitBrowser() {
this.pattern = {
browser: /webkit\/([0-9\.]+)/,
engine: /applewebkit\/([0-9\.]+)/,
};
this.engineName = 'webkit';
if (this.agent.match(/edge/)) { // Microsoft Edge
this.pattern.browser = /edge\/([0-9\.]+)/;
this.engineName = 'edgeHTML';
this.browserName = 'edge';
}
else if (this.agent.match(/chrome/)) {
// The web engine "blink" is used on many browser (Chrome, Opera, Vivaldi)
this.engineName = 'blink';
if (this.agent.match(/vivaldi/)) { // Vivaldi
this.pattern.browser = /vivaldi\/([0-9\.]+)/;
this.browserName = 'vivaldi';
}
else if (this.agent.match(/opr/)) { // Opera
this.pattern.browser = /opr\/([0-9\.]+)/;
this.browserName = 'opera';
}
else if (this.agent.match(/crios/)) { // Chrome on iOS
this.pattern.browser = /crios\/([0-9\.]+)/;
this.browserName = 'chrome';
}
else { // Chrome
this.pattern.browser = /chrom(e|ium)\/([0-9\.]+)/;
this.browserName = 'chrome';
}
}
else if (this.agent.match(/safari/)) { // Safari
this.pattern.browser = /version\/([0-9\.]+)/;
this.browserName = 'safari';
}
}
}
if (false) {
/** @type {?} */
Browser.prototype.browserName;
/** @type {?} */
Browser.prototype.browserVersion;
/** @type {?} */
Browser.prototype.engineName;
/** @type {?} */
Browser.prototype.engineVersion;
/**
* @type {?}
* @private
*/
Browser.prototype.agent;
/**
* @type {?}
* @private
*/
Browser.prototype.pattern;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY2xhc3Nlcy9icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNLE9BQU8sT0FBTztJQVloQjtRQVhBLGdCQUFXLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsU0FBUyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFFbEIsVUFBSyxHQUFHLENBQUMsT0FBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUM7UUFPdkYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7O0lBRUQsUUFBUTtRQUNKLE9BQU8sWUFBWSxJQUFJLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxjQUFjLGNBQWMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUM7SUFDdkgsQ0FBQzs7Ozs7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7O2tCQUM3QixjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMs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NkJBQXVCOztJQUN2QixnQ0FBMEI7Ozs7O0lBRTFCLHdCQUEyRjs7Ozs7SUFDM0YsMEJBR0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQnJvd3NlciB7XG4gICAgYnJvd3Nlck5hbWUgPSAndW5rbm93bic7XG4gICAgYnJvd3NlclZlcnNpb24gPSAndW5rbm93bic7XG4gICAgZW5naW5lTmFtZSA9ICd1bmtub3duJztcbiAgICBlbmdpbmVWZXJzaW9uID0gJ3Vua25vd24nO1xuXG4gICAgcHJpdmF0ZSBhZ2VudCA9ICh0eXBlb2YobmF2aWdhdG9yKSA9PT0gJ29iamVjdCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkgOiAnJyApO1xuICAgIHByaXZhdGUgcGF0dGVybjoge1xuICAgICAgICBicm93c2VyOiBSZWdFeHAsXG4gICAgICAgIGVuZ2luZTogUmVnRXhwLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kZXRlY3RCcm93c2VyKCk7XG4gICAgICAgIHRoaXMuZGV0ZWN0VmVyc2lvbigpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgQnJvd3NlcjogJHt0aGlzLmJyb3dzZXJOYW1lfSAoJHt0aGlzLmJyb3dzZXJWZXJzaW9ufSksIEVuZ2luZTogJHt0aGlzLmVuZ2luZU5hbWV9ICgke3RoaXMuZW5naW5lVmVyc2lvbn0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdFZlcnNpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmJyb3dzZXJWZXJzaW9uID09PSAndW5rbm93bicpIHtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uID0gdGhpcy5hZ2VudC5tYXRjaCh0aGlzLnBhdHRlcm4uYnJvd3Nlcik7XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJWZXJzaW9uID0gKGJyb3dzZXJWZXJzaW9uID8gKGJyb3dzZXJWZXJzaW9uWzJdID8gYnJvd3NlclZlcnNpb25bMl0gOiBicm93c2VyVmVyc2lvblsxXSkgOiAndW5rbm93bicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZW5naW5lVmVyc2lvbiA9PT0gJ3Vua25vd24nKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gdGhpcy5hZ2VudC5tYXRjaCh0aGlzLnBhdHRlcm4uZW5naW5lKTtcbiAgICAgICAgICAgIHRoaXMuZW5naW5lVmVyc2lvbiA9IChlbmdpbmVWZXJzaW9uID8gZW5naW5lVmVyc2lvblsxXSA6ICd1bmtub3duJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdEJyb3dzZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKC93ZWJraXQvKSkge1xuICAgICAgICAgICAgdGhpcy5kZXRlY3RXZWJraXRCcm93c2VyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hZ2VudC5tYXRjaCgvdHJpZGVudHxtc2llLykpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0VHJpZGVudEJyb3dzZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9nZWNrby8pKSB7XG4gICAgICAgICAgICB0aGlzLmRldGVjdEdlY2tvQnJvd3NlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWdlbnQubWF0Y2goL3ByZXN0by8pKSB7XG4gICAgICAgICAgICB0aGlzLnBhdHRlcm4gPSB7XG4gICAgICAgICAgICAgICAgYnJvd3NlcjogL3ZlcnNpb25cXC8oWzAtOVxcLl0rKS8sXG4gICAgICAgICAgICAgICAgZW5naW5lOiAvcHJlc3RvXFwvKFswLTlcXC5dKykvLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZW5naW5lTmFtZSA9ICdwcmVzdG8nO1xuICAgICAgICAgICAgdGhpcy5icm93c2VyTmFtZSA9ICdvcGVyYSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdEdlY2tvQnJvd3NlcigpIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0ge1xuICAgICAgICAgICAgYnJvd3NlcjogL2dlY2tvXFwvKFswLTlcXC5dKykvLFxuICAgICAgICAgICAgZW5naW5lOiAvcnY6KFswLTlcXC5dKykvLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVuZ2luZU5hbWUgPSAnZ2Vja28nO1xuXG4gICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9maXJlZm94LykpIHtcbiAgICAgICAgICAgIHRoaXMucGF0dGVybi5icm93c2VyID0gL2ZpcmVmb3hcXC8oWzAtOVxcLl0rKS87XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ2ZpcmVmb3gnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRlY3RUcmlkZW50QnJvd3NlcigpIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0ge1xuICAgICAgICAgICAgYnJvd3NlcjogL21zaWUgKFswLTlcXC5dKykvLFxuICAgICAgICAgICAgZW5naW5lOiAvdHJpZGVudFxcLyhbMC05XFwuXSspLyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lbmdpbmVOYW1lID0gJ3RyaWRlbnQnO1xuICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ21zaWUnO1xuXG4gICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9ydjovKSkge1x0XHRcdFx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgMTEgZXQgK1xuICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvcnY6KFswLTlcXC5dKykvO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmFnZW50Lm1hdGNoKC9tc2llLykpIHsgICAgICAvLyBObyBcInJ2OlwiIGFuZCBubyBcIm1zaWVcIiwgd2UgYXNzdW1lIHRoYXQgaXQncyBJRSAxMVxuICAgICAgICAgICAgdGhpcy5icm93c2VyVmVyc2lvbiA9ICcxMS4wJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0V2Via2l0QnJvd3NlcigpIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0ge1xuICAgICAgICAgICAgYnJvd3NlcjogL3dlYmtpdFxcLyhbMC05XFwuXSspLyxcbiAgICAgICAgICAgIGVuZ2luZTogL2FwcGxld2Via2l0XFwvKFswLTlcXC5dKykvLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVuZ2luZU5hbWUgPSAnd2Via2l0JztcblxuICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaCgvZWRnZS8pKSB7ICAgICAgICAgICAgICAvLyBNaWNyb3NvZnQgRWRnZVxuICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvZWRnZVxcLyhbMC05XFwuXSspLztcbiAgICAgICAgICAgIHRoaXMuZW5naW5lTmFtZSA9ICdlZGdlSFRNTCc7XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ2VkZ2UnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWdlbnQubWF0Y2goL2Nocm9tZS8pKSB7XG4gICAgICAgICAgICAvLyBUaGUgd2ViIGVuZ2luZSBcImJsaW5rXCIgaXMgdXNlZCBvbiBtYW55IGJyb3dzZXIgKENocm9tZSwgT3BlcmEsIFZpdmFsZGkpXG4gICAgICAgICAgICB0aGlzLmVuZ2luZU5hbWUgPSAnYmxpbmsnO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaCgvdml2YWxkaS8pKSB7XHRcdC8vIFZpdmFsZGlcbiAgICAgICAgICAgICAgICB0aGlzLnBhdHRlcm4uYnJvd3NlciA9IC92aXZhbGRpXFwvKFswLTlcXC5dKykvO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlck5hbWUgPSAndml2YWxkaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWdlbnQubWF0Y2goL29wci8pKSB7XHRcdC8vIE9wZXJhXG4gICAgICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvb3ByXFwvKFswLTlcXC5dKykvO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlck5hbWUgPSAnb3BlcmEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9jcmlvcy8pKSB7ICAvLyBDaHJvbWUgb24gaU9TXG4gICAgICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvY3Jpb3NcXC8oWzAtOVxcLl0rKS87XG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyTmFtZSA9ICdjaHJvbWUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHQgICAgLy8gQ2hyb21lXG4gICAgICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvY2hyb20oZXxpdW0pXFwvKFswLTlcXC5dKykvO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlck5hbWUgPSAnY2hyb21lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9zYWZhcmkvKSkge1x0ICAgXHQvLyBTYWZhcmlcbiAgICAgICAgICAgIHRoaXMucGF0dGVybi5icm93c2VyID0gL3ZlcnNpb25cXC8oWzAtOVxcLl0rKS87XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ3NhZmFyaSc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=