diff options
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/useragent/index.js')
-rw-r--r-- | vnfmarket/src/main/webapp/vnfmarket/node_modules/useragent/index.js | 621 |
1 files changed, 0 insertions, 621 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/useragent/index.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/useragent/index.js deleted file mode 100644 index f14e548f..00000000 --- a/vnfmarket/src/main/webapp/vnfmarket/node_modules/useragent/index.js +++ /dev/null @@ -1,621 +0,0 @@ -'use strict'; - -/** - * This is where all the magic comes from, specially crafted for `useragent`. - */ -var regexps = require('./lib/regexps'); - -/** - * Reduce references by storing the lookups. - */ -// OperatingSystem parsers: -var osparsers = regexps.os - , osparserslength = osparsers.length; - -// UserAgent parsers: -var agentparsers = regexps.browser - , agentparserslength = agentparsers.length; - -// Device parsers: -var deviceparsers = regexps.device - , deviceparserslength = deviceparsers.length; - -/** - * The representation of a parsed user agent. - * - * @constructor - * @param {String} family The name of the browser - * @param {String} major Major version of the browser - * @param {String} minor Minor version of the browser - * @param {String} patch Patch version of the browser - * @param {String} source The actual user agent string - * @api public - */ -function Agent(family, major, minor, patch, source) { - this.family = family || 'Other'; - this.major = major || '0'; - this.minor = minor || '0'; - this.patch = patch || '0'; - this.source = source || ''; -} - -/** - * OnDemand parsing of the Operating System. - * - * @type {OperatingSystem} - * @api public - */ -Object.defineProperty(Agent.prototype, 'os', { - get: function lazyparse() { - var userAgent = this.source - , length = osparserslength - , parsers = osparsers - , i = 0 - , parser - , res; - - for (; i < length; i++) { - if (res = parsers[i][0].exec(userAgent)) { - parser = parsers[i]; - - if (parser[1]) res[1] = parser[1].replace('$1', res[1]); - break; - } - } - - return Object.defineProperty(this, 'os', { - value: !parser || !res - ? new OperatingSystem() - : new OperatingSystem( - res[1] - , parser[2] || res[2] - , parser[3] || res[3] - , parser[4] || res[4] - ) - }).os; - }, - - /** - * Bypass the OnDemand parsing and set an OperatingSystem instance. - * - * @param {OperatingSystem} os - * @api public - */ - set: function set(os) { - if (!(os instanceof OperatingSystem)) return false; - - return Object.defineProperty(this, 'os', { - value: os - }).os; - } -}); - -/** - * OnDemand parsing of the Device type. - * - * @type {Device} - * @api public - */ -Object.defineProperty(Agent.prototype, 'device', { - get: function lazyparse() { - var userAgent = this.source - , length = deviceparserslength - , parsers = deviceparsers - , i = 0 - , parser - , res; - - for (; i < length; i++) { - if (res = parsers[i][0].exec(userAgent)) { - parser = parsers[i]; - - if (parser[1]) res[1] = parser[1].replace('$1', res[1]); - break; - } - } - - return Object.defineProperty(this, 'device', { - value: !parser || !res - ? new Device() - : new Device( - res[1] - , parser[2] || res[2] - , parser[3] || res[3] - , parser[4] || res[4] - ) - }).device; - }, - - /** - * Bypass the OnDemand parsing and set an Device instance. - * - * @param {Device} device - * @api public - */ - set: function set(device) { - if (!(device instanceof Device)) return false; - - return Object.defineProperty(this, 'device', { - value: device - }).device; - } -}); -/*** Generates a string output of the parsed user agent. - * - * @returns {String} - * @api public - */ -Agent.prototype.toAgent = function toAgent() { - var output = this.family - , version = this.toVersion(); - - if (version) output += ' '+ version; - return output; -}; - -/** - * Generates a string output of the parser user agent and operating system. - * - * @returns {String} "UserAgent 0.0.0 / OS" - * @api public - */ -Agent.prototype.toString = function toString() { - var agent = this.toAgent() - , os = this.os !== 'Other' ? this.os : false; - - return agent + (os ? ' / ' + os : ''); -}; - -/** - * Outputs a compiled veersion number of the user agent. - * - * @returns {String} - * @api public - */ -Agent.prototype.toVersion = function toVersion() { - var version = ''; - - if (this.major) { - version += this.major; - - if (this.minor) { - version += '.' + this.minor; - - // Special case here, the patch can also be Alpha, Beta etc so we need - // to check if it's a string or not. - if (this.patch) { - version += (isNaN(+this.patch) ? ' ' : '.') + this.patch; - } - } - } - - return version; -}; - -/** - * Outputs a JSON string of the Agent. - * - * @returns {String} - * @api public - */ -Agent.prototype.toJSON = function toJSON() { - return { - family: this.family - , major: this.major - , minor: this.minor - , patch: this.patch - , device: this.device - , os: this.os - }; -}; - -/** - * The representation of a parsed Operating System. - * - * @constructor - * @param {String} family The name of the os - * @param {String} major Major version of the os - * @param {String} minor Minor version of the os - * @param {String} patch Patch version of the os - * @api public - */ -function OperatingSystem(family, major, minor, patch) { - this.family = family || 'Other'; - this.major = major || '0'; - this.minor = minor || '0'; - this.patch = patch || '0'; -} - -/** - * Generates a stringified version of the Operating System. - * - * @returns {String} "Operating System 0.0.0" - * @api public - */ -OperatingSystem.prototype.toString = function toString() { - var output = this.family - , version = this.toVersion(); - - if (version) output += ' '+ version; - return output; -}; - -/** - * Generates the version of the Operating System. - * - * @returns {String} - * @api public - */ -OperatingSystem.prototype.toVersion = function toVersion() { - var version = ''; - - if (this.major) { - version += this.major; - - if (this.minor) { - version += '.' + this.minor; - - // Special case here, the patch can also be Alpha, Beta etc so we need - // to check if it's a string or not. - if (this.patch) { - version += (isNaN(+this.patch) ? ' ' : '.') + this.patch; - } - } - } - - return version; -}; - -/** - * Outputs a JSON string of the OS, values are defaulted to undefined so they - * are not outputed in the stringify. - * - * @returns {String} - * @api public - */ -OperatingSystem.prototype.toJSON = function toJSON(){ - return { - family: this.family - , major: this.major || undefined - , minor: this.minor || undefined - , patch: this.patch || undefined - }; -}; - -/** - * The representation of a parsed Device. - * - * @constructor - * @param {String} family The name of the device - * @param {String} major Major version of the device - * @param {String} minor Minor version of the device - * @param {String} patch Patch version of the device - * @api public - */ -function Device(family, major, minor, patch) { - this.family = family || 'Other'; - this.major = major || '0'; - this.minor = minor || '0'; - this.patch = patch || '0'; -} - -/** - * Generates a stringified version of the Device. - * - * @returns {String} "Device 0.0.0" - * @api public - */ -Device.prototype.toString = function toString() { - var output = this.family - , version = this.toVersion(); - - if (version) output += ' '+ version; - return output; -}; - -/** - * Generates the version of the Device. - * - * @returns {String} - * @api public - */ -Device.prototype.toVersion = function toVersion() { - var version = ''; - - if (this.major) { - version += this.major; - - if (this.minor) { - version += '.' + this.minor; - - // Special case here, the patch can also be Alpha, Beta etc so we need - // to check if it's a string or not. - if (this.patch) { - version += (isNaN(+this.patch) ? ' ' : '.') + this.patch; - } - } - } - - return version; -}; - -/** - * Outputs a JSON string of the Device, values are defaulted to undefined so they - * are not outputed in the stringify. - * - * @returns {String} - * @api public - */ -Device.prototype.toJSON = function toJSON() { - return { - family: this.family - , major: this.major || undefined - , minor: this.minor || undefined - , patch: this.patch || undefined - }; -}; - -/** - * Small nifty thick that allows us to download a fresh set regexs from t3h - * Int3rNetz when we want to. We will be using the compiled version by default - * but users can opt-in for updates. - * - * @param {Boolean} refresh Refresh the dataset from the remote - * @api public - */ -module.exports = function updater() { - try { - require('./lib/update').update(function updating(err, results) { - if (err) { - console.log('[useragent] Failed to update the parsed due to an error:'); - console.log('[useragent] '+ (err.message ? err.message : err)); - return; - } - - regexps = results; - - // OperatingSystem parsers: - osparsers = regexps.os; - osparserslength = osparsers.length; - - // UserAgent parsers: - agentparsers = regexps.browser; - agentparserslength = agentparsers.length; - - // Device parsers: - deviceparsers = regexps.device; - deviceparserslength = deviceparsers.length; - }); - } catch (e) { - console.error('[useragent] If you want to use automatic updating, please add:'); - console.error('[useragent] - request (npm install request --save)'); - console.error('[useragent] - yamlparser (npm install yamlparser --save)'); - console.error('[useragent] To your own package.json'); - } -}; - -// Override the exports with our newly set module.exports -exports = module.exports; - -/** - * Nao that we have setup all the different classes and configured it we can - * actually start assembling and exposing everything. - */ -exports.Device = Device; -exports.OperatingSystem = OperatingSystem; -exports.Agent = Agent; - -/** - * Check if the userAgent is something we want to parse with regexp's. - * - * @param {String} userAgent The userAgent. - * @returns {Boolean} - */ -function isSafe(userAgent) { - var consecutive = 0 - , code = 0; - - for (var i = 0; i < userAgent.length; i++) { - code = userAgent.charCodeAt(i); - // numbers between 0 and 9 - if (code >= 48 && code <= 57) { - consecutive++; - } else { - consecutive = 0; - } - - if (consecutive >= 100) { - return false; - } - } - - return true -} - - -/** - * Parses the user agent string with the generated parsers from the - * ua-parser project on google code. - * - * @param {String} userAgent The user agent string - * @param {String} jsAgent Optional UA from js to detect chrome frame - * @returns {Agent} - * @api public - */ -exports.parse = function parse(userAgent, jsAgent) { - if (!userAgent || !isSafe(userAgent)) return new Agent(); - - var length = agentparserslength - , parsers = agentparsers - , i = 0 - , parser - , res; - - for (; i < length; i++) { - if (res = parsers[i][0].exec(userAgent)) { - parser = parsers[i]; - - if (parser[1]) res[1] = parser[1].replace('$1', res[1]); - if (!jsAgent) return new Agent( - res[1] - , parser[2] || res[2] - , parser[3] || res[3] - , parser[4] || res[4] - , userAgent - ); - - break; - } - } - - // Return early if we didn't find an match, but might still be able to parse - // the os and device, so make sure we supply it with the source - if (!parser || !res) return new Agent('', '', '', '', userAgent); - - // Detect Chrome Frame, but make sure it's enabled! So we need to check for - // the Chrome/ so we know that it's actually using Chrome under the hood. - if (jsAgent && ~jsAgent.indexOf('Chrome/') && ~userAgent.indexOf('chromeframe')) { - res[1] = 'Chrome Frame (IE '+ res[1] +'.'+ res[2] +')'; - - // Run the JavaScripted userAgent string through the parser again so we can - // update the version numbers; - parser = parse(jsAgent); - parser[2] = parser.major; - parser[3] = parser.minor; - parser[4] = parser.patch; - } - - return new Agent( - res[1] - , parser[2] || res[2] - , parser[3] || res[3] - , parser[4] || res[4] - , userAgent - ); -}; - -/** - * If you are doing a lot of lookups you might want to cache the results of the - * parsed user agent string instead, in memory. - * - * @TODO We probably want to create 2 dictionary's here 1 for the Agent - * instances and one for the userAgent instance mapping so we can re-use simular - * Agent instance and lower our memory consumption. - * - * @param {String} userAgent The user agent string - * @param {String} jsAgent Optional UA from js to detect chrome frame - * @api public - */ -var LRU = require('lru-cache')(5000); -exports.lookup = function lookup(userAgent, jsAgent) { - var key = (userAgent || '')+(jsAgent || '') - , cached = LRU.get(key); - - if (cached) return cached; - LRU.set(key, (cached = exports.parse(userAgent, jsAgent))); - - return cached; -}; - -/** - * Does a more inaccurate but more common check for useragents identification. - * The version detection is from the jQuery.com library and is licensed under - * MIT. - * - * @param {String} useragent The user agent - * @returns {Object} matches - * @api public - */ -exports.is = function is(useragent) { - var ua = (useragent || '').toLowerCase() - , details = { - chrome: false - , firefox: false - , ie: false - , mobile_safari: false - , mozilla: false - , opera: false - , safari: false - , webkit: false - , android: false - , version: (ua.match(exports.is.versionRE) || [0, "0"])[1] - }; - - if (~ua.indexOf('webkit')) { - details.webkit = true; - - if (~ua.indexOf('android')){ - details.android = true; - } - - if (~ua.indexOf('chrome')) { - details.chrome = true; - } else if (~ua.indexOf('safari')) { - details.safari = true; - - if (~ua.indexOf('mobile') && ~ua.indexOf('apple')) { - details.mobile_safari = true; - } - } - } else if (~ua.indexOf('opera')) { - details.opera = true; - } else if (~ua.indexOf('trident') || ~ua.indexOf('msie')) { - details.ie = true; - } else if (~ua.indexOf('mozilla') && !~ua.indexOf('compatible')) { - details.mozilla = true; - - if (~ua.indexOf('firefox')) details.firefox = true; - } - - - return details; -}; - -/** - * Parses out the version numbers. - * - * @type {RegExp} - * @api private - */ -exports.is.versionRE = /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/; - -/** - * Transform a JSON object back to a valid userAgent string - * - * @param {Object} details - * @returns {Agent} - */ -exports.fromJSON = function fromJSON(details) { - if (typeof details === 'string') details = JSON.parse(details); - - var agent = new Agent(details.family, details.major, details.minor, details.patch) - , os = details.os; - - // The device family was added in v2.0 - if ('device' in details) { - agent.device = new Device(details.device.family); - } else { - agent.device = new Device(); - } - - if ('os' in details && os) { - // In v1.1.0 we only parsed out the Operating System name, not the full - // version which we added in v2.0. To provide backwards compatible we should - // we should set the details.os as family - if (typeof os === 'string') { - agent.os = new OperatingSystem(os); - } else { - agent.os = new OperatingSystem(os.family, os.major, os.minor, os.patch); - } - } - - return agent; -}; - -/** - * Library version. - * - * @type {String} - * @api public - */ -exports.version = require('./package.json').version; |