caniuse-api
Advanced tools
Comparing version 1.2.2 to 1.3.0
@@ -1,3 +0,12 @@ | ||
# 1.2.1 | ||
# 1.3.0 - 2015-03-30 | ||
- Added: better exception messages | ||
- Added: full browserify compatibility (by avoiding dynamic require) | ||
# 1.2.2 - 2015-02-06 | ||
- Fixed: postinstall hook for Windows | ||
# 1.2.1 - 2015-02-04 | ||
- Changed: Allow in browser usage by avoiding `require.resolve` and using a generated json instead or reading a directory ([#20](https://github.com/Nyalab/caniuse-api/pull/20)] | ||
@@ -4,0 +13,0 @@ |
"use strict"; | ||
var fs = require("fs"); | ||
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; | ||
var path = require("path"); | ||
var fs = _interopRequire(require("fs")); | ||
var caniusePath = path.dirname(require.resolve("caniuse-db/package.json")); | ||
var featuresPath = path.join(caniusePath, "features-json"); | ||
var features = fs.readdirSync(featuresPath).map(function (file) { | ||
var path = _interopRequire(require("path")); | ||
var features = fs.readdirSync(path.join(path.dirname(require.resolve("caniuse-db/package.json")), "features-json")).map(function (file) { | ||
return file.replace(".json", ""); | ||
}).map(function (feature) { | ||
return "\"" + feature + "\": function() { return require(\"" + path.join("caniuse-db", "features-json", feature) + "\")}"; | ||
}); | ||
fs.writeFileSync(path.join(__dirname, "..", "features.json"), JSON.stringify(features, null, 2)); | ||
fs.writeFileSync(path.join(__dirname, "..", "features.js"), "module.exports = {" + features.join(",\n") + "}"); |
"use strict"; | ||
var memoize = require("lodash.memoize"); | ||
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; | ||
var browserslist = require("browserslist"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var contains = require("./utils").contains; | ||
var parseCaniuseData = require("./utils").parseCaniuseData; | ||
var cleanBrowsersList = require("./utils").cleanBrowsersList; | ||
var features = require("../features.json"); | ||
var memoize = _interopRequire(require("lodash.memoize")); | ||
var browserslist = _interopRequire(require("browserslist")); | ||
var _utils = require("./utils"); | ||
var contains = _utils.contains; | ||
var parseCaniuseData = _utils.parseCaniuseData; | ||
var cleanBrowsersList = _utils.cleanBrowsersList; | ||
var features = _interopRequire(require("../features")); | ||
var featuresList = Object.keys(features); | ||
var browsers; | ||
@@ -25,24 +36,36 @@ function setBrowserScope(browserList) { | ||
function getSupport(query) { | ||
var feature; | ||
try { | ||
feature = require("caniuse-db/features-json/" + query); | ||
} catch (e) { | ||
var res = find(query); | ||
if (res.length === 1) return getSupport(res[0]); | ||
throw new ReferenceError("Please provide a proper feature name"); | ||
function getSupport(_x) { | ||
var _again = true; | ||
_function: while (_again) { | ||
_again = false; | ||
var query = _x; | ||
feature = res = undefined; | ||
var feature = undefined; | ||
try { | ||
feature = features[query](); | ||
} catch (e) { | ||
var res = find(query); | ||
if (res.length === 1) { | ||
_x = res[0]; | ||
_again = true; | ||
continue _function; | ||
} | ||
throw new ReferenceError("Please provide a proper feature name. Cannot find " + query); | ||
} | ||
return parse(feature, browsers); | ||
} | ||
return parse(feature, browsers); | ||
} | ||
function isSupported(feature, browsers) { | ||
var data; | ||
var data = undefined; | ||
try { | ||
data = require("caniuse-db/features-json/" + feature); | ||
data = features[feature](); | ||
} catch (e) { | ||
var res = find(feature); | ||
if (res.length === 1) { | ||
data = require("caniuse-db/features-json/" + res[0]); | ||
data = features[res[0]](); | ||
} else { | ||
throw new ReferenceError("Please provide a proper feature name"); | ||
throw new ReferenceError("Please provide a proper feature name. Cannot find " + feature); | ||
} | ||
@@ -59,3 +82,3 @@ } | ||
function find(query) { | ||
if (~features.indexOf(query)) { | ||
if (~featuresList.indexOf(query)) { | ||
// exact match | ||
@@ -65,3 +88,3 @@ return query; | ||
return features.filter(function (file) { | ||
return featuresList.filter(function (file) { | ||
return contains(file, query); | ||
@@ -68,0 +91,0 @@ }); |
"use strict"; | ||
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; | ||
exports.contains = contains; | ||
exports.parseCaniuseData = parseCaniuseData; | ||
exports.cleanBrowsersList = cleanBrowsersList; | ||
var uniq = require("lodash.uniq"); | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var browserslist = require("browserslist"); | ||
var uniq = _interopRequire(require("lodash.uniq")); | ||
var browserslist = _interopRequire(require("browserslist")); | ||
function contains(str, substr) { | ||
@@ -11,0 +17,0 @@ return !! ~str.indexOf(substr); |
{ | ||
"name": "caniuse-api", | ||
"version": "1.2.2", | ||
"version": "1.3.0", | ||
"description": "request the caniuse data to check browsers compatibilities", | ||
@@ -18,3 +18,4 @@ "main": "dist/index.js", | ||
"devDependencies": { | ||
"6to5": "^1.14.17", | ||
"babel": "^4.7.16", | ||
"babel-tape-runner": "^1.0.0", | ||
"jshint": "^2.5.10", | ||
@@ -25,7 +26,7 @@ "tap-spec": "^2.1.1", | ||
"scripts": { | ||
"build": "6to5 src --out-dir dist", | ||
"build": "babel src --out-dir dist", | ||
"lint": "jshint src", | ||
"prepublish": "npm run build", | ||
"pretest": "6to5-node src/generate-features.js", | ||
"test": "npm run lint && 6to5-node test/*.js | tap-spec", | ||
"pretest": "babel-node src/generate-features.js", | ||
"test": "npm run lint && babel-tape-runner test/*.js | tap-spec", | ||
"postinstall": "node -e \"require('shelljs/global');if(test('-d', 'dist'))exec('node dist/generate-features.js')\"" | ||
@@ -32,0 +33,0 @@ }, |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
10062
134
2
5
1