@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
179 lines • 15.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var Browser = /** @class */ (function () {
function Browser() {
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 {?}
*/
Browser.prototype.toString = /**
* @return {?}
*/
function () {
return "Browser: " + this.browserName + " (" + this.browserVersion + "), Engine: " + this.engineName + " (" + this.engineVersion + ")";
};
/**
* @private
* @return {?}
*/
Browser.prototype.detectVersion = /**
* @private
* @return {?}
*/
function () {
if (this.browserVersion === 'unknown') {
/** @type {?} */
var browserVersion = this.agent.match(this.pattern.browser);
this.browserVersion = (browserVersion ? (browserVersion[2] ? browserVersion[2] : browserVersion[1]) : 'unknown');
}
if (this.engineVersion === 'unknown') {
/** @type {?} */
var engineVersion = this.agent.match(this.pattern.engine);
this.engineVersion = (engineVersion ? engineVersion[1] : 'unknown');
}
};
/**
* @private
* @return {?}
*/
Browser.prototype.detectBrowser = /**
* @private
* @return {?}
*/
function () {
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 {?}
*/
Browser.prototype.detectGeckoBrowser = /**
* @private
* @return {?}
*/
function () {
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 {?}
*/
Browser.prototype.detectTridentBrowser = /**
* @private
* @return {?}
*/
function () {
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 {?}
*/
Browser.prototype.detectWebkitBrowser = /**
* @private
* @return {?}
*/
function () {
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';
}
};
return Browser;
}());
export { Browser };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY2xhc3Nlcy9icm93c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtJQVlJO1FBWEEsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsbUJBQWMsR0FBRyxTQUFTLENBQUM7UUFDM0IsZUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixrQkFBYSxHQUFHLFNBQVMsQ0FBQztRQUVsQixVQUFLLEdBQUcsQ0FBQyxPQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBQztRQU92RixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Ozs7SUFFRCwwQkFBUTs7O0lBQVI7UUFDSSxPQUFPLGNBQVksSUFBSSxDQUFDLFdBQVcsVUFBSyxJQUFJLENBQUMsY0FBYyxtQkFBYyxJQUFJLENBQUMsVUFBVSxVQUFLLElBQUksQ0FBQyxhQUFhLE1BQUcsQ0FBQztJQUN2SCxDQUFDOzs7OztJQUVPLCtCQUFhOzs7O0lBQXJCO1FBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTs7Z0JBQzdCLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUM3RCxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FB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QUFDO0FBQUQsQ0FBQyxBQS9HRCxJQStHQzs7OztJQTlHRyw4QkFBd0I7O0lBQ3hCLGlDQUEyQjs7SUFDM0IsNkJBQXVCOztJQUN2QixnQ0FBMEI7Ozs7O0lBRTFCLHdCQUEyRjs7Ozs7SUFDM0YsMEJBR0UiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgQnJvd3NlciB7XG4gICAgYnJvd3Nlck5hbWUgPSAndW5rbm93bic7XG4gICAgYnJvd3NlclZlcnNpb24gPSAndW5rbm93bic7XG4gICAgZW5naW5lTmFtZSA9ICd1bmtub3duJztcbiAgICBlbmdpbmVWZXJzaW9uID0gJ3Vua25vd24nO1xuXG4gICAgcHJpdmF0ZSBhZ2VudCA9ICh0eXBlb2YobmF2aWdhdG9yKSA9PT0gJ29iamVjdCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkgOiAnJyApO1xuICAgIHByaXZhdGUgcGF0dGVybjoge1xuICAgICAgICBicm93c2VyOiBSZWdFeHAsXG4gICAgICAgIGVuZ2luZTogUmVnRXhwLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5kZXRlY3RCcm93c2VyKCk7XG4gICAgICAgIHRoaXMuZGV0ZWN0VmVyc2lvbigpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgQnJvd3NlcjogJHt0aGlzLmJyb3dzZXJOYW1lfSAoJHt0aGlzLmJyb3dzZXJWZXJzaW9ufSksIEVuZ2luZTogJHt0aGlzLmVuZ2luZU5hbWV9ICgke3RoaXMuZW5naW5lVmVyc2lvbn0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdFZlcnNpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLmJyb3dzZXJWZXJzaW9uID09PSAndW5rbm93bicpIHtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZXJWZXJzaW9uID0gdGhpcy5hZ2VudC5tYXRjaCh0aGlzLnBhdHRlcm4uYnJvd3Nlcik7XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJWZXJzaW9uID0gKGJyb3dzZXJWZXJzaW9uID8gKGJyb3dzZXJWZXJzaW9uWzJdID8gYnJvd3NlclZlcnNpb25bMl0gOiBicm93c2VyVmVyc2lvblsxXSkgOiAndW5rbm93bicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZW5naW5lVmVyc2lvbiA9PT0gJ3Vua25vd24nKSB7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gdGhpcy5hZ2VudC5tYXRjaCh0aGlzLnBhdHRlcm4uZW5naW5lKTtcbiAgICAgICAgICAgIHRoaXMuZW5naW5lVmVyc2lvbiA9IChlbmdpbmVWZXJzaW9uID8gZW5naW5lVmVyc2lvblsxXSA6ICd1bmtub3duJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdEJyb3dzZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKC93ZWJraXQvKSkge1xuICAgICAgICAgICAgdGhpcy5kZXRlY3RXZWJraXRCcm93c2VyKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hZ2VudC5tYXRjaCgvdHJpZGVudHxtc2llLykpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0VHJpZGVudEJyb3dzZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9nZWNrby8pKSB7XG4gICAgICAgICAgICB0aGlzLmRldGVjdEdlY2tvQnJvd3NlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWdlbnQubWF0Y2goL3ByZXN0by8pKSB7XG4gICAgICAgICAgICB0aGlzLnBhdHRlcm4gPSB7XG4gICAgICAgICAgICAgICAgYnJvd3NlcjogL3ZlcnNpb25cXC8oWzAtOVxcLl0rKS8sXG4gICAgICAgICAgICAgICAgZW5naW5lOiAvcHJlc3RvXFwvKFswLTlcXC5dKykvLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZW5naW5lTmFtZSA9ICdwcmVzdG8nO1xuICAgICAgICAgICAgdGhpcy5icm93c2VyTmFtZSA9ICdvcGVyYSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdEdlY2tvQnJvd3NlcigpIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0ge1xuICAgICAgICAgICAgYnJvd3NlcjogL2dlY2tvXFwvKFswLTlcXC5dKykvLFxuICAgICAgICAgICAgZW5naW5lOiAvcnY6KFswLTlcXC5dKykvLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVuZ2luZU5hbWUgPSAnZ2Vja28nO1xuXG4gICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9maXJlZm94LykpIHtcbiAgICAgICAgICAgIHRoaXMucGF0dGVybi5icm93c2VyID0gL2ZpcmVmb3hcXC8oWzAtOVxcLl0rKS87XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ2ZpcmVmb3gnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRlY3RUcmlkZW50QnJvd3NlcigpIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0ge1xuICAgICAgICAgICAgYnJvd3NlcjogL21zaWUgKFswLTlcXC5dKykvLFxuICAgICAgICAgICAgZW5naW5lOiAvdHJpZGVudFxcLyhbMC05XFwuXSspLyxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lbmdpbmVOYW1lID0gJ3RyaWRlbnQnO1xuICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ21zaWUnO1xuXG4gICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9ydjovKSkge1x0XHRcdFx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgMTEgZXQgK1xuICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvcnY6KFswLTlcXC5dKykvO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmFnZW50Lm1hdGNoKC9tc2llLykpIHsgICAgICAvLyBObyBcInJ2OlwiIGFuZCBubyBcIm1zaWVcIiwgd2UgYXNzdW1lIHRoYXQgaXQncyBJRSAxMVxuICAgICAgICAgICAgdGhpcy5icm93c2VyVmVyc2lvbiA9ICcxMS4wJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0V2Via2l0QnJvd3NlcigpIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuID0ge1xuICAgICAgICAgICAgYnJvd3NlcjogL3dlYmtpdFxcLyhbMC05XFwuXSspLyxcbiAgICAgICAgICAgIGVuZ2luZTogL2FwcGxld2Via2l0XFwvKFswLTlcXC5dKykvLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVuZ2luZU5hbWUgPSAnd2Via2l0JztcblxuICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaCgvZWRnZS8pKSB7ICAgICAgICAgICAgICAvLyBNaWNyb3NvZnQgRWRnZVxuICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvZWRnZVxcLyhbMC05XFwuXSspLztcbiAgICAgICAgICAgIHRoaXMuZW5naW5lTmFtZSA9ICdlZGdlSFRNTCc7XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ2VkZ2UnO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWdlbnQubWF0Y2goL2Nocm9tZS8pKSB7XG4gICAgICAgICAgICAvLyBUaGUgd2ViIGVuZ2luZSBcImJsaW5rXCIgaXMgdXNlZCBvbiBtYW55IGJyb3dzZXIgKENocm9tZSwgT3BlcmEsIFZpdmFsZGkpXG4gICAgICAgICAgICB0aGlzLmVuZ2luZU5hbWUgPSAnYmxpbmsnO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaCgvdml2YWxkaS8pKSB7XHRcdC8vIFZpdmFsZGlcbiAgICAgICAgICAgICAgICB0aGlzLnBhdHRlcm4uYnJvd3NlciA9IC92aXZhbGRpXFwvKFswLTlcXC5dKykvO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlck5hbWUgPSAndml2YWxkaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWdlbnQubWF0Y2goL29wci8pKSB7XHRcdC8vIE9wZXJhXG4gICAgICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvb3ByXFwvKFswLTlcXC5dKykvO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlck5hbWUgPSAnb3BlcmEnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9jcmlvcy8pKSB7ICAvLyBDaHJvbWUgb24gaU9TXG4gICAgICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvY3Jpb3NcXC8oWzAtOVxcLl0rKS87XG4gICAgICAgICAgICAgICAgdGhpcy5icm93c2VyTmFtZSA9ICdjaHJvbWUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcdFx0XHRcdFx0XHRcdFx0XHQgICAgLy8gQ2hyb21lXG4gICAgICAgICAgICAgICAgdGhpcy5wYXR0ZXJuLmJyb3dzZXIgPSAvY2hyb20oZXxpdW0pXFwvKFswLTlcXC5dKykvO1xuICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlck5hbWUgPSAnY2hyb21lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFnZW50Lm1hdGNoKC9zYWZhcmkvKSkge1x0ICAgXHQvLyBTYWZhcmlcbiAgICAgICAgICAgIHRoaXMucGF0dGVybi5icm93c2VyID0gL3ZlcnNpb25cXC8oWzAtOVxcLl0rKS87XG4gICAgICAgICAgICB0aGlzLmJyb3dzZXJOYW1lID0gJ3NhZmFyaSc7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=