@cainiaofe/cn-utils
Version:
菜鸟前端基础工具库
101 lines (100 loc) • 3.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var browsersList_1 = tslib_1.__importDefault(require("./browsersList"));
var array_1 = tslib_1.__importDefault(require("../../common/array"));
/**
* The main class that arranges the whole parsing process.
*/
var Parser = /** @class */ (function () {
function Parser(UA) {
if (!UA) {
throw new Error("UserAgent parameter can't be empty");
}
this._ua = UA;
/**
* @typedef ParsedResult
* @property {Object} browser
* @property {String|undefined} [browser.name]
* Browser name, like `"Chrome"` or `"Internet Explorer"`
* @property {String|undefined} [browser.version] Browser version as a String `"12.01.45334.10"`
*/
// @ts-ignore
this.parsedResult = {};
this.parseBrowser();
}
/**
* Get UserAgent string of current Parser instance
* @return {String} User-Agent String of the current <Parser> object
*
* @public
*/
Parser.prototype.getUA = function () {
return this._ua;
};
/**
* Test a UA string for a regexp
* @param {RegExp} regex
* @return {Boolean}
*/
Parser.prototype.test = function (regex) {
return regex.test(this._ua);
};
/**
* Get parsed browser object
* @return {Object}
*/
Parser.prototype.parseBrowser = function () {
var _this = this;
// @ts-ignore
this.parsedResult.browser = {};
var browserDescriptor = array_1.default.find(browsersList_1.default, function (_browser) {
if (typeof _browser.test === 'function') {
return _browser.test(_this);
}
if (_browser.test instanceof Array) {
return _browser.test.some(function (condition) { return _this.test(condition); });
}
throw new Error("Browser's test function is not valid");
});
if (browserDescriptor) {
this.parsedResult.browser = browserDescriptor.describe(this.getUA());
}
return this.parsedResult.browser;
};
/**
* Get parsed browser object
* @return {Object}
*
* @public
*/
Parser.prototype.getBrowser = function () {
if (this.parsedResult.browser) {
return this.parsedResult.browser;
}
return this.parseBrowser();
};
/**
* Get browser's name
* @return {String} Browser's name or an empty string
*
* @public
*/
Parser.prototype.getBrowserName = function (toLowerCase) {
if (toLowerCase) {
return String(this.getBrowser().name).toLowerCase() || '';
}
return this.getBrowser().name || '';
};
/**
* Get browser's version
* @return {String} version of browser
*
* @public
*/
Parser.prototype.getBrowserVersion = function () {
return this.getBrowser().version;
};
return Parser;
}());
exports.default = Parser;