@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
178 lines • 17.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var OperatingSystem = /** @class */ (function () {
function OperatingSystem() {
this.name = 'unknown';
this.version = 'unknown';
this.agent = (typeof (navigator) === 'object' ? navigator.userAgent.toLowerCase() : '');
this.detect();
}
/**
* @return {?}
*/
OperatingSystem.prototype.toString = /**
* @return {?}
*/
function () {
return "OS: " + this.name + " (" + this.version + ")";
};
/**
* @private
* @return {?}
*/
OperatingSystem.prototype.detect = /**
* @private
* @return {?}
*/
function () {
/** @type {?} */
var os = [
{ name: 'iOS', pattern: /iphone|ipad|ipod/ },
{ name: 'Android', pattern: /android/ },
{ name: 'Blackberry', pattern: /blackberry/ },
{ name: 'Windows', pattern: /win/ },
{ name: 'Chrome OS', pattern: /cros/ },
{ name: 'Mac OS', pattern: /mac/ },
{ name: 'Linux', pattern: /linux|x11/ },
{ name: 'Open BSD', pattern: /openbsd/ },
{ name: 'Unix', pattern: /unix/ },
{ name: 'Sun OS', pattern: /sunos/ },
{ name: 'beOS', pattern: /beos/ },
{ name: 'QNX', pattern: /qnx/ },
{ name: 'os2', pattern: /os\/2/ }
];
for (var i = 0, j = os.length; i < j; i++) {
if (this.agent.match(os[i].pattern)) {
this.name = os[i].name;
break;
}
}
this.detectVersion();
};
/**
* @private
* @return {?}
*/
OperatingSystem.prototype.detectVersion = /**
* @private
* @return {?}
*/
function () {
if (this.name === 'Windows') {
if (this.agent.match(/phone/)) {
this.detectVersionWindowsPhone();
}
else {
this.detectVersionWindows();
}
}
else if (this.name === 'Mac OS') {
this.detectVersionMac();
}
else if (this.name === 'Android') {
/** @type {?} */
var androidVersion = this.agent.match(/android ([0-9\.]+)/);
this.version = (androidVersion ? ' ' + androidVersion[1] : '');
}
else if (this.name === 'iOS') {
/** @type {?} */
var iOSVersion = this.agent.match(/os ([0-9\_]+)/);
this.version = (iOSVersion ? ' ' + iOSVersion[1].replace('_', '.') : '');
}
};
/**
* @private
* @return {?}
*/
OperatingSystem.prototype.detectVersionWindows = /**
* @private
* @return {?}
*/
function () {
this.name = 'Windows';
/** @type {?} */
var windows = [
{ name: '10', pattern: /windows nt 10.0|windows 10.0/ },
{ name: '10 Technical Preview', pattern: /windows nt 6.4/ },
{ name: '8.1', pattern: /windows nt 6.3|windows 8.1/ },
{ name: '8', pattern: /windows nt 6.2|windows 8.0|wow64/ },
{ name: '7 / Server 2008 RC2', pattern: /windows nt 6.1|windows 7/ },
{ name: 'Vista', pattern: /windows nt 6.0/ },
{ name: 'Server 2003', pattern: /windows nt 5.2/ },
{ name: 'XP', pattern: /windows nt 5.1|windows xp/ },
{ name: '2000', pattern: /windows nt 5.0|windows 2000/ },
{ name: 'NT 4.0', pattern: /windows nt 4.0|winnt4.0|winnt|windows nt/ },
{ name: 'CE', pattern: /windows ce/ },
{ name: 'ME', pattern: /windows me/ },
{ name: '98', pattern: /windows 98|win98/ },
{ name: '95', pattern: /windows 95|win95|windows_95/ },
{ name: '3.11', pattern: /win16/ }
];
for (var i = 0, j = windows.length; i < j; i++) {
if (this.agent.match(windows[i].pattern)) {
this.version = windows[i].name;
break;
}
}
};
/**
* @private
* @return {?}
*/
OperatingSystem.prototype.detectVersionWindowsPhone = /**
* @private
* @return {?}
*/
function () {
this.name = 'Windows Phone';
/** @type {?} */
var windows = [
{ name: '10', pattern: /windows phone 10/ },
{ name: '8.1', pattern: /windows phone 8.1/ },
{ name: '8', pattern: /windows phone 8/ },
{ name: '7.5', pattern: /windows phone os 7.5/ },
{ name: '7', pattern: /windows phone os 7/ },
];
for (var i = 0, j = windows.length; i < j; i++) {
if (this.agent.match(windows[i].pattern)) {
this.version = windows[i].name;
break;
}
}
};
/**
* @private
* @return {?}
*/
OperatingSystem.prototype.detectVersionMac = /**
* @private
* @return {?}
*/
function () {
if (this.agent.match(/mac os x/)) {
/** @type {?} */
var macVersion = this.agent.match(/mac os x ([0-9\_]+)/);
this.name = 'Mac OS X';
this.version = (macVersion ? ' ' + macVersion[1].replace('_', '.') : '');
}
else if (this.agent.match(/macppc|macintel|mac_powerpc|macintosh/)) {
this.name = 'Mac OS';
}
};
return OperatingSystem;
}());
export { OperatingSystem };
if (false) {
/** @type {?} */
OperatingSystem.prototype.name;
/** @type {?} */
OperatingSystem.prototype.version;
/**
* @type {?}
* @private
*/
OperatingSystem.prototype.agent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW5nLXN5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY2xhc3Nlcy9vcGVyYXRpbmctc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtJQU1JO1FBTEEsU0FBSSxHQUFHLFNBQVMsQ0FBQztRQUNqQixZQUFPLEdBQUcsU0FBUyxDQUFDO1FBRVosVUFBSyxHQUFHLENBQUMsT0FBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUM7UUFHdkYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7Ozs7SUFFRCxrQ0FBUTs7O0lBQVI7UUFDSSxPQUFPLFNBQU8sSUFBSSxDQUFDLElBQUksVUFBSyxJQUFJLENBQUMsT0FBTyxNQUFHLENBQUM7SUFDaEQsQ0FBQzs7Ozs7SUFFTyxnQ0FBTTs7OztJQUFkOztZQUNVLEVBQUUsR0FBRztZQUNQLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUM7WUFDMUMsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUM7WUFDckMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUM7WUFDM0MsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUM7WUFDakMsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUM7WUFDcEMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUM7WUFDaEMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUM7WUFDckMsRUFBQyxJQUFJLEVBQUUsVUFB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Qzs7OztJQXRIRywrQkFBaUI7O0lBQ2pCLGtDQUFvQjs7Ozs7SUFFcEIsZ0NBQTJGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE9wZXJhdGluZ1N5c3RlbSB7XG4gICAgbmFtZSA9ICd1bmtub3duJztcbiAgICB2ZXJzaW9uID0gJ3Vua25vd24nO1xuXG4gICAgcHJpdmF0ZSBhZ2VudCA9ICh0eXBlb2YobmF2aWdhdG9yKSA9PT0gJ29iamVjdCcgPyBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkgOiAnJyApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZGV0ZWN0KCk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBPUzogJHt0aGlzLm5hbWV9ICgke3RoaXMudmVyc2lvbn0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdCgpIHtcbiAgICAgICAgY29uc3Qgb3MgPSBbXG4gICAgICAgICAgICB7bmFtZTogJ2lPUycsIHBhdHRlcm46IC9pcGhvbmV8aXBhZHxpcG9kL30sXG4gICAgICAgICAgICB7bmFtZTogJ0FuZHJvaWQnLCBwYXR0ZXJuOiAvYW5kcm9pZC99LFxuICAgICAgICAgICAge25hbWU6ICdCbGFja2JlcnJ5JywgcGF0dGVybjogL2JsYWNrYmVycnkvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnV2luZG93cycsIHBhdHRlcm46IC93aW4vfSxcbiAgICAgICAgICAgIHtuYW1lOiAnQ2hyb21lIE9TJywgcGF0dGVybjogL2Nyb3MvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnTWFjIE9TJywgcGF0dGVybjogL21hYy99LFxuICAgICAgICAgICAge25hbWU6ICdMaW51eCcsIHBhdHRlcm46IC9saW51eHx4MTEvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnT3BlbiBCU0QnLCBwYXR0ZXJuOiAvb3BlbmJzZC99LFxuICAgICAgICAgICAge25hbWU6ICdVbml4JywgcGF0dGVybjogL3VuaXgvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnU3VuIE9TJywgcGF0dGVybjogL3N1bm9zL30sXG4gICAgICAgICAgICB7bmFtZTogJ2JlT1MnLCBwYXR0ZXJuOiAvYmVvcy99LFxuICAgICAgICAgICAge25hbWU6ICdRTlgnLCBwYXR0ZXJuOiAvcW54L30sXG4gICAgICAgICAgICB7bmFtZTogJ29zMicsIHBhdHRlcm46IC9vc1xcLzIvfVxuICAgICAgICBdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBqID0gb3MubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaChvc1tpXS5wYXR0ZXJuKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IG9zW2ldLm5hbWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRldGVjdFZlcnNpb24oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdFZlcnNpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICdXaW5kb3dzJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWdlbnQubWF0Y2goL3Bob25lLykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGVjdFZlcnNpb25XaW5kb3dzUGhvbmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRlY3RWZXJzaW9uV2luZG93cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ01hYyBPUycpIHtcbiAgICAgICAgICAgIHRoaXMuZGV0ZWN0VmVyc2lvbk1hYygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ0FuZHJvaWQnKSB7XG4gICAgICAgICAgICBjb25zdCBhbmRyb2lkVmVyc2lvbiA9IHRoaXMuYWdlbnQubWF0Y2goL2FuZHJvaWQgKFswLTlcXC5dKykvKTtcblxuICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gKGFuZHJvaWRWZXJzaW9uID8gJyAnICsgYW5kcm9pZFZlcnNpb25bMV0gOiAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5uYW1lID09PSAnaU9TJykge1xuICAgICAgICAgICAgY29uc3QgaU9TVmVyc2lvbiA9IHRoaXMuYWdlbnQubWF0Y2goL29zIChbMC05XFxfXSspLyk7XG5cbiAgICAgICAgICAgIHRoaXMudmVyc2lvbiA9IChpT1NWZXJzaW9uID8gJyAnICsgaU9TVmVyc2lvblsxXS5yZXBsYWNlKCdfJywgJy4nKSA6ICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0VmVyc2lvbldpbmRvd3MoKSB7XG4gICAgICAgIHRoaXMubmFtZSA9ICdXaW5kb3dzJztcblxuICAgICAgICBjb25zdCB3aW5kb3dzID0gW1xuICAgICAgICAgICAge25hbWU6ICcxMCcsIHBhdHRlcm46IC93aW5kb3dzIG50IDEwLjB8d2luZG93cyAxMC4wL30sXG4gICAgICAgICAgICB7bmFtZTogJzEwIFRlY2huaWNhbCBQcmV2aWV3JywgcGF0dGVybjogL3dpbmRvd3MgbnQgNi40L30sXG4gICAgICAgICAgICB7bmFtZTogJzguMScsIHBhdHRlcm46IC93aW5kb3dzIG50IDYuM3x3aW5kb3dzIDguMS99LFxuICAgICAgICAgICAge25hbWU6ICc4JywgcGF0dGVybjogL3dpbmRvd3MgbnQgNi4yfHdpbmRvd3MgOC4wfHdvdzY0L30sXG4gICAgICAgICAgICB7bmFtZTogJzcgLyBTZXJ2ZXIgMjAwOCBSQzInLCBwYXR0ZXJuOiAvd2luZG93cyBudCA2LjF8d2luZG93cyA3L30sXG4gICAgICAgICAgICB7bmFtZTogJ1Zpc3RhJywgcGF0dGVybjogL3dpbmRvd3MgbnQgNi4wL30sXG4gICAgICAgICAgICB7bmFtZTogJ1NlcnZlciAyMDAzJywgcGF0dGVybjogL3dpbmRvd3MgbnQgNS4yL30sXG4gICAgICAgICAgICB7bmFtZTogJ1hQJywgcGF0dGVybjogL3dpbmRvd3MgbnQgNS4xfHdpbmRvd3MgeHAvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnMjAwMCcsIHBhdHRlcm46IC93aW5kb3dzIG50IDUuMHx3aW5kb3dzIDIwMDAvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnTlQgNC4wJywgcGF0dGVybjogL3dpbmRvd3MgbnQgNC4wfHdpbm50NC4wfHdpbm50fHdpbmRvd3MgbnQvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnQ0UnLCBwYXR0ZXJuOiAvd2luZG93cyBjZS99LFxuICAgICAgICAgICAge25hbWU6ICdNRScsIHBhdHRlcm46IC93aW5kb3dzIG1lL30sXG4gICAgICAgICAgICB7bmFtZTogJzk4JywgcGF0dGVybjogL3dpbmRvd3MgOTh8d2luOTgvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnOTUnLCBwYXR0ZXJuOiAvd2luZG93cyA5NXx3aW45NXx3aW5kb3dzXzk1L30sXG4gICAgICAgICAgICB7bmFtZTogJzMuMTEnLCBwYXR0ZXJuOiAvd2luMTYvfVxuICAgICAgICBdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBqID0gd2luZG93cy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFnZW50Lm1hdGNoKHdpbmRvd3NbaV0ucGF0dGVybikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnNpb24gPSB3aW5kb3dzW2ldLm5hbWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRldGVjdFZlcnNpb25XaW5kb3dzUGhvbmUoKSB7XG4gICAgICAgIHRoaXMubmFtZSA9ICdXaW5kb3dzIFBob25lJztcblxuICAgICAgICBjb25zdCB3aW5kb3dzID0gW1xuICAgICAgICAgICAge25hbWU6ICcxMCcsIHBhdHRlcm46IC93aW5kb3dzIHBob25lIDEwL30sXG4gICAgICAgICAgICB7bmFtZTogJzguMScsIHBhdHRlcm46IC93aW5kb3dzIHBob25lIDguMS99LFxuICAgICAgICAgICAge25hbWU6ICc4JywgcGF0dGVybjogL3dpbmRvd3MgcGhvbmUgOC99LFxuICAgICAgICAgICAge25hbWU6ICc3LjUnLCBwYXR0ZXJuOiAvd2luZG93cyBwaG9uZSBvcyA3LjUvfSxcbiAgICAgICAgICAgIHtuYW1lOiAnNycsIHBhdHRlcm46IC93aW5kb3dzIHBob25lIG9zIDcvfSxcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgaiA9IHdpbmRvd3MubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaCh3aW5kb3dzW2ldLnBhdHRlcm4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gd2luZG93c1tpXS5uYW1lO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRlY3RWZXJzaW9uTWFjKCkge1xuICAgICAgICBpZiAodGhpcy5hZ2VudC5tYXRjaCgvbWFjIG9zIHgvKSkge1xuICAgICAgICAgICAgY29uc3QgbWFjVmVyc2lvbiA9IHRoaXMuYWdlbnQubWF0Y2goL21hYyBvcyB4IChbMC05XFxfXSspLyk7XG5cbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICdNYWMgT1MgWCc7XG4gICAgICAgICAgICB0aGlzLnZlcnNpb24gPSAobWFjVmVyc2lvbiA/ICcgJyArIG1hY1ZlcnNpb25bMV0ucmVwbGFjZSgnXycsICcuJykgOiAnJyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hZ2VudC5tYXRjaCgvbWFjcHBjfG1hY2ludGVsfG1hY19wb3dlcnBjfG1hY2ludG9zaC8pKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnTWFjIE9TJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==