Added logging, changed some directory structure

This commit is contained in:
2018-01-13 21:33:40 -05:00
parent f079a5f067
commit 8e72ffb917
73656 changed files with 35284 additions and 53718 deletions

View File

@@ -0,0 +1,99 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getBrowserScope = exports.setBrowserScope = exports.getLatestStableBrowsers = exports.find = exports.isSupported = exports.getSupport = exports.features = undefined;
var _lodash = require("lodash.memoize");
var _lodash2 = _interopRequireDefault(_lodash);
var _browserslist = require("browserslist");
var _browserslist2 = _interopRequireDefault(_browserslist);
var _utils = require("./utils");
var _data = require("caniuse-db/data.json");
var _data2 = _interopRequireDefault(_data);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var features = _data2.default.data;
var featuresList = Object.keys(features);
var browsers = void 0;
function setBrowserScope(browserList) {
browsers = (0, _utils.cleanBrowsersList)(browserList);
}
function getBrowserScope() {
return browsers;
}
var parse = (0, _lodash2.default)(_utils.parseCaniuseData, function (feature, browsers) {
return feature.title + browsers;
});
function getSupport(query) {
var feature = void 0;
try {
feature = features[query];
} catch (e) {
var res = find(query);
if (res.length === 1) return getSupport(res[0]);
throw new ReferenceError("Please provide a proper feature name. Cannot find " + query);
}
return parse(feature, browsers);
}
function isSupported(feature, browsers) {
var data = void 0;
try {
data = features[feature];
} catch (e) {
var res = find(feature);
if (res.length === 1) {
data = features[res[0]];
} else {
throw new ReferenceError("Please provide a proper feature name. Cannot find " + feature);
}
}
return (0, _browserslist2.default)(browsers).map(function (browser) {
return browser.split(" ");
}).every(function (browser) {
return data.stats[browser[0]] && data.stats[browser[0]][browser[1]] === "y";
});
}
function find(query) {
if (typeof query !== "string") {
throw new TypeError("The `query` parameter should be a string.");
}
if (~featuresList.indexOf(query)) {
// exact match
return query;
}
return featuresList.filter(function (file) {
return (0, _utils.contains)(file, query);
});
}
function getLatestStableBrowsers() {
return _browserslist2.default.queries.lastVersions.select(1);
}
setBrowserScope();
exports.features = featuresList;
exports.getSupport = getSupport;
exports.isSupported = isSupported;
exports.find = find;
exports.getLatestStableBrowsers = getLatestStableBrowsers;
exports.setBrowserScope = setBrowserScope;
exports.getBrowserScope = getBrowserScope;

View File

@@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.contains = contains;
exports.parseCaniuseData = parseCaniuseData;
exports.cleanBrowsersList = cleanBrowsersList;
var _lodash = require("lodash.uniq");
var _lodash2 = _interopRequireDefault(_lodash);
var _browserslist = require("browserslist");
var _browserslist2 = _interopRequireDefault(_browserslist);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function contains(str, substr) {
return !!~str.indexOf(substr);
}
function parseCaniuseData(feature, browsers) {
var support = {};
var letters;
var letter;
browsers.forEach(function (browser) {
support[browser] = {};
for (var info in feature.stats[browser]) {
letters = feature.stats[browser][info].split(" ");
info = parseFloat(info.split("-")[0]); //if info is a range, take the left
if (isNaN(info)) continue;
for (var i = 0; i < letters.length; i++) {
letter = letters[i];
if (letter === "y") {
// min support asked, need to find the min value
if (typeof support[browser][letter] === "undefined" || info < support[browser][letter]) {
support[browser][letter] = info;
}
} else {
// any other support, need to find the max value
if (typeof support[browser][letter] === "undefined" || info > support[browser][letter]) {
support[browser][letter] = info;
}
}
}
}
});
return support;
}
function cleanBrowsersList(browserList) {
return (0, _lodash2.default)((0, _browserslist2.default)(browserList).map(function (browser) {
return browser.split(" ")[0];
}));
}