@cainiaofe/cn-utils
Version:
菜鸟前端基础工具库
98 lines (97 loc) • 2.91 kB
JavaScript
import browserParsersList from './browsersList';
import array from "../../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.find(browserParsersList, 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;
}());
export default Parser;