UNPKG

@cainiaofe/cn-utils

Version:

菜鸟前端基础工具库

98 lines (97 loc) 2.91 kB
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;