2017-09-13 07:52:34 +02:00

113 lines
3.4 KiB
JavaScript
Vendored

'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var browsers = require('../../data/browsers');
var browserVersions = require('../../data/browserVersions');
var agentsData = require('../../data/agents');
function unpackBrowserVersions (versionsData) {
return Object.keys(versionsData).reduce(function (usage, version) {
usage[browserVersions[version]] = versionsData[version];
return usage;
}, {});
}
var agents = Object.keys(agentsData).reduce(function (map, key) {
var versionsData = agentsData[key];
map[browsers[key]] = Object.keys(versionsData).reduce(function (data, entry) {
if (entry === 'A') {
data.usage_global = unpackBrowserVersions(versionsData[entry]);
} else if (entry === 'C') {
data.versions = versionsData[entry].reduce(function (list, version) {
if (version === '') {
list.push(null);
} else {
list.push(browserVersions[version]);
}
return list;
}, []);
} else if (entry === 'D') {
data.prefix_exceptions = unpackBrowserVersions(versionsData[entry]);
} else if (entry === 'E') {
data.browser = versionsData[entry];
} else {
data.prefix = versionsData[entry];
}
return data;
}, {});
return map;
}, {});
var statuses = {
1: "ls",
2: "rec",
3: "pr",
4: "cr",
5: "wd",
6: "other",
7: "unoff",
};
var supported = {
y: 1 << 0,
n: 1 << 1,
a: 1 << 2,
p: 1 << 3,
u: 1 << 4,
x: 1 << 5,
d: 1 << 6,
};
function unpackSupport (cipher) {
var stats = Object.keys(supported).reduce(function (list, support) {
if (cipher & supported[support]) { list.push(support); }
return list;
}, []);
var notes = cipher >> 7;
var notesArray = [];
while (notes) {
var note = Math.floor(Math.log2(notes)) + 1;
notesArray.unshift(("#" + note));
notes -= Math.pow(2, note - 1);
}
return stats.concat(notesArray).join(' ');
}
function unpackFeature (packed) {
var unpacked = {status: statuses[packed.B], title: packed.C};
unpacked.stats = Object.keys(packed.A).reduce(function (browserStats, key) {
var browser = packed.A[key];
browserStats[browsers[key]] = Object.keys(browser).reduce(function (stats, support) {
var packedVersions = browser[support].split(' ');
var unpacked = unpackSupport(support);
packedVersions.forEach(function (v) { return stats[browserVersions[v]] = unpacked; });
return stats;
}, {});
return browserStats;
}, {});
return unpacked;
}
var features = require('../../data/features');
function unpackRegion (packed) {
return Object.keys(packed).reduce(function (list, browser) {
var data = packed[browser];
list[browsers[browser]] = Object.keys(data).reduce(function (memo, key) {
var stats = data[key];
if (key === '_') {
stats.split(' ').forEach(function (version) { return memo[version] = null; });
} else {
memo[key] = stats;
}
return memo;
}, {});
return list;
}, {});
}
exports.agents = agents;
exports.feature = unpackFeature;
exports.features = features;
exports.region = unpackRegion;