Use compat-table equals option (#36)

* Use compat-table equals option

* fixes
This commit is contained in:
Henry Zhu
2016-11-02 17:09:32 -04:00
committed by GitHub
parent d40c684723
commit a5daad4d32
3 changed files with 61 additions and 28 deletions

View File

@@ -4,122 +4,141 @@
"edge": 13, "edge": 13,
"firefox": 45, "firefox": 45,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-es2015-block-scoped-functions": { "transform-es2015-block-scoped-functions": {
"chrome": 41, "chrome": 41,
"firefox": 46, "firefox": 46,
"safari": 10, "safari": 10,
"node": 4, "node": 4,
"ie": 11 "ie": 11,
"ios": 10
}, },
"transform-es2015-block-scoping": { "transform-es2015-block-scoping": {
"chrome": 49, "chrome": 49,
"firefox": 51, "firefox": 51,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-es2015-classes": { "transform-es2015-classes": {
"chrome": 46, "chrome": 46,
"edge": 13, "edge": 13,
"firefox": 45, "firefox": 45,
"safari": 10, "safari": 10,
"node": 5 "node": 5,
"ios": 10
}, },
"transform-es2015-computed-properties": { "transform-es2015-computed-properties": {
"chrome": 44, "chrome": 44,
"edge": 12, "edge": 12,
"firefox": 34, "firefox": 34,
"safari": 7, "safari": 7,
"node": 4 "node": 4,
"ios": 8
}, },
"check-es2015-constants": { "check-es2015-constants": {
"chrome": 49, "chrome": 49,
"firefox": 51, "firefox": 51,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-es2015-destructuring": { "transform-es2015-destructuring": {
"chrome": 51, "chrome": 51,
"safari": 10, "safari": 10,
"node": 6.5 "node": 6.5,
"ios": 10
}, },
"transform-es2015-for-of": { "transform-es2015-for-of": {
"chrome": 51, "chrome": 51,
"safari": 10, "safari": 10,
"node": 6.5 "node": 6.5,
"ios": 10
}, },
"transform-es2015-function-name": { "transform-es2015-function-name": {
"chrome": 51, "chrome": 51,
"safari": 10, "safari": 10,
"node": 6.5 "node": 6.5,
"ios": 10
}, },
"transform-es2015-literals": { "transform-es2015-literals": {
"chrome": 44, "chrome": 44,
"edge": 12, "edge": 12,
"safari": 9, "safari": 9,
"node": 4 "node": 4,
"ios": 9
}, },
"transform-es2015-object-super": { "transform-es2015-object-super": {
"chrome": 46, "chrome": 46,
"edge": 13, "edge": 13,
"firefox": 45, "firefox": 45,
"safari": 10, "safari": 10,
"node": 5 "node": 5,
"ios": 10
}, },
"transform-es2015-parameters": { "transform-es2015-parameters": {
"chrome": 49, "chrome": 49,
"edge": 14, "edge": 14,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-es2015-shorthand-properties": { "transform-es2015-shorthand-properties": {
"chrome": 43, "chrome": 43,
"edge": 12, "edge": 12,
"firefox": 33, "firefox": 33,
"safari": 9, "safari": 9,
"node": 4 "node": 4,
"ios": 9
}, },
"transform-es2015-spread": { "transform-es2015-spread": {
"chrome": 46, "chrome": 46,
"edge": 13, "edge": 13,
"firefox": 36, "firefox": 36,
"safari": 10, "safari": 10,
"node": 5 "node": 5,
"ios": 10
}, },
"transform-es2015-sticky-regex": { "transform-es2015-sticky-regex": {
"chrome": 49, "chrome": 49,
"edge": 13, "edge": 13,
"firefox": 3, "firefox": 3,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-es2015-template-literals": { "transform-es2015-template-literals": {
"chrome": 41, "chrome": 41,
"edge": 13, "edge": 13,
"firefox": 34, "firefox": 34,
"safari": 9, "safari": 9,
"node": 4 "node": 4,
"ios": 9
}, },
"transform-es2015-typeof-symbol": { "transform-es2015-typeof-symbol": {
"chrome": 38, "chrome": 38,
"edge": 12, "edge": 12,
"firefox": 36, "firefox": 36,
"safari": 9, "safari": 9,
"node": 0.12 "node": 0.12,
"ios": 9
}, },
"transform-es2015-unicode-regex": { "transform-es2015-unicode-regex": {
"chrome": 50, "chrome": 50,
"edge": 13, "edge": 13,
"firefox": 46, "firefox": 46,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-regenerator": { "transform-regenerator": {
"chrome": 50, "chrome": 50,
"edge": 13, "edge": 13,
"safari": 10, "safari": 10,
"node": 6 "node": 6,
"ios": 10
}, },
"transform-exponentiation-operator": { "transform-exponentiation-operator": {
"chrome": 52, "chrome": 52,
@@ -133,6 +152,7 @@
"syntax-trailing-function-commas": { "syntax-trailing-function-commas": {
"edge": 14, "edge": 14,
"firefox": 52, "firefox": 52,
"safari": 10 "safari": 10,
"ios": 10
} }
} }

View File

@@ -60,8 +60,7 @@
"eslint-plugin-babel": "^3.3.0", "eslint-plugin-babel": "^3.3.0",
"eslint-plugin-flow-vars": "^0.5.0", "eslint-plugin-flow-vars": "^0.5.0",
"lodash": "^4.15.0", "lodash": "^4.15.0",
"mocha": "^3.0.2", "mocha": "^3.0.2"
"natural-compare": "^1.4.0"
}, },
"babel": { "babel": {
"presets": [ "presets": [

View File

@@ -3,15 +3,25 @@ const path = require("path");
const flatten = require("lodash/flatten"); const flatten = require("lodash/flatten");
const flattenDeep = require("lodash/flattenDeep"); const flattenDeep = require("lodash/flattenDeep");
// const naturalCompare = require("natural-compare");
const pluginFeatures = require("../data/pluginFeatures"); const pluginFeatures = require("../data/pluginFeatures");
const renameTests = (tests, getName) => const renameTests = (tests, getName) =>
tests.map((test) => Object.assign({}, test, { name: getName(test.name) })); tests.map((test) => Object.assign({}, test, { name: getName(test.name) }));
const es6Data = require("compat-table/data-es6");
es6Data.browsers.node6 = es6Data.browsers["node64"];
const es6PlusData = require("compat-table/data-es2016plus");
const invertedEqualsEnv = Object.keys(es6Data.browsers)
.filter((b) => es6Data.browsers[b].equals)
.reduce((a, b) => {
a[es6Data.browsers[b].equals] = b;
return a;
}, {});
const compatibilityTests = flattenDeep([ const compatibilityTests = flattenDeep([
require("compat-table/data-es6"), es6Data,
require("compat-table/data-es2016plus"), es6PlusData,
].map((data) => ].map((data) =>
data.tests.map((test) => { data.tests.map((test) => {
return test.subtests ? return test.subtests ?
@@ -20,8 +30,6 @@ const compatibilityTests = flattenDeep([
}) })
)); ));
// const versions = Object.keys(require("compat-table/data-es6").browsers).sort(naturalCompare);
const environments = [ const environments = [
"chrome", "chrome",
"edge", "edge",
@@ -30,7 +38,8 @@ const environments = [
"node", "node",
"ie", "ie",
"android", "android",
"ios" "ios",
"phantom"
]; ];
const envMap = { const envMap = {
@@ -72,6 +81,11 @@ const getLowestImplementedVersion = ({ features }, env) => {
let envTests = tests let envTests = tests
.map(({ res: test, name }, i) => { .map(({ res: test, name }, i) => {
// `equals` in compat-table
Object.keys(test).forEach((t) => {
test[invertedEqualsEnv[t]] = test[t];
});
return Object.keys(test) return Object.keys(test)
.filter((t) => t.startsWith(env)) .filter((t) => t.startsWith(env))
// Babel assumes strict mode // Babel assumes strict mode