Merge pull request #180 from babel/fix-compat-import

Respect older versions in invert equals map
This commit is contained in:
Henry Zhu 2017-03-03 15:43:27 -05:00 committed by GitHub
commit 7e622940a4
7 changed files with 130 additions and 72 deletions

View File

@ -36,6 +36,7 @@
"firefox": 4,
"safari": 6,
"node": 0.12,
"android": 4.4,
"ios": 7
},
"es6.typed.int16-array": {
@ -118,6 +119,7 @@
"chrome": 51,
"firefox": 53,
"safari": 9,
"node": 6.5,
"ios": 9,
"opera": 38
},
@ -126,6 +128,7 @@
"edge": 15,
"firefox": 53,
"safari": 9,
"node": 6.5,
"ios": 9,
"opera": 38
},
@ -134,6 +137,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -142,6 +146,7 @@
"edge": 13,
"firefox": 45,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -150,6 +155,7 @@
"edge": 13,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -158,6 +164,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -166,6 +173,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -174,6 +182,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -182,6 +191,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -190,6 +200,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -198,6 +209,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -206,6 +218,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -214,6 +227,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -222,6 +236,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -230,6 +245,7 @@
"edge": 12,
"firefox": 42,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 36
},
@ -246,6 +262,7 @@
"chrome": 51,
"firefox": 51,
"safari": 10,
"node": 6.5,
"ios": 10,
"opera": 38
},
@ -273,6 +290,7 @@
"safari": 9,
"node": 0.12,
"ie": 11,
"android": 5,
"ios": 9,
"opera": 21
},
@ -351,6 +369,7 @@
"chrome": 49,
"firefox": 37,
"safari": 9,
"node": 6,
"ios": 9,
"opera": 36
},
@ -419,7 +438,7 @@
"firefox": 25,
"safari": 8,
"node": 4,
"ios": 9,
"ios": 8,
"opera": 32
},
"es6.array.find-index": {
@ -428,7 +447,7 @@
"firefox": 25,
"safari": 8,
"node": 4,
"ios": 9,
"ios": 8,
"opera": 32
},
"es6.array.fill": {
@ -437,7 +456,7 @@
"firefox": 31,
"safari": 8,
"node": 4,
"ios": 9,
"ios": 8,
"opera": 32
},
"es6.array.iterator": {
@ -446,7 +465,8 @@
"firefox": 28,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.number.is-finite": {
@ -464,6 +484,7 @@
"firefox": 16,
"safari": 9,
"node": 0.12,
"android": 5,
"ios": 9,
"opera": 21
},
@ -473,6 +494,7 @@
"firefox": 32,
"safari": 9,
"node": 0.12,
"android": 5,
"ios": 9,
"opera": 21
},
@ -491,6 +513,7 @@
"firefox": 25,
"safari": 9,
"node": 0.12,
"android": 5,
"ios": 9,
"opera": 21
},
@ -500,6 +523,7 @@
"firefox": 31,
"safari": 9,
"node": 0.12,
"android": 5,
"ios": 9,
"opera": 21
},
@ -509,6 +533,7 @@
"firefox": 31,
"safari": 9,
"node": 0.12,
"android": 5,
"ios": 9,
"opera": 21
},
@ -518,7 +543,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.asinh": {
@ -527,7 +553,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.atanh": {
@ -536,7 +563,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.cbrt": {
@ -545,7 +573,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.clz32": {
@ -554,6 +583,7 @@
"firefox": 31,
"safari": 9,
"node": 0.12,
"android": 5.1,
"ios": 9,
"opera": 25
},
@ -563,7 +593,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.expm1": {
@ -572,7 +603,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.fround": {
@ -581,7 +613,8 @@
"firefox": 26,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.hypot": {
@ -590,7 +623,8 @@
"firefox": 27,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.imul": {
@ -609,7 +643,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.log10": {
@ -618,7 +653,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.log2": {
@ -627,7 +663,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.sign": {
@ -636,6 +673,7 @@
"firefox": 25,
"safari": 9,
"node": 0.12,
"android": 5.1,
"ios": 9,
"opera": 25
},
@ -645,7 +683,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.tanh": {
@ -654,7 +693,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es6.math.trunc": {
@ -663,7 +703,8 @@
"firefox": 25,
"safari": 8,
"node": 0.12,
"ios": 9,
"android": 5.1,
"ios": 8,
"opera": 25
},
"es7.array.includes": {
@ -671,6 +712,7 @@
"edge": 14,
"firefox": 43,
"safari": 10,
"node": 6,
"ios": 10,
"opera": 34
},
@ -678,6 +720,7 @@
"chrome": 54,
"edge": 14,
"firefox": 47,
"safari": 10.1,
"node": 7,
"opera": 41
},
@ -685,6 +728,7 @@
"chrome": 54,
"edge": 14,
"firefox": 47,
"safari": 10.1,
"node": 7,
"opera": 41
},
@ -692,7 +736,7 @@
"chrome": 54,
"edge": 15,
"firefox": 50,
"safari": 10,
"safari": 10.1,
"node": 7,
"opera": 41
},

View File

@ -40,7 +40,7 @@
"firefox": 34,
"safari": 8,
"node": 4,
"ios": 9,
"ios": 8,
"opera": 31
},
"check-es2015-constants": {
@ -146,6 +146,7 @@
"firefox": 36,
"safari": 9,
"node": 0.12,
"android": 5.1,
"ios": 9,
"opera": 25
},
@ -171,11 +172,14 @@
"chrome": 52,
"edge": 14,
"firefox": 52,
"safari": 10.1,
"node": 7,
"opera": 39
},
"transform-async-to-generator": {
"chrome": 55,
"firefox": 52,
"safari": 10.1,
"node": 7.6,
"opera": 42
},

View File

@ -58,7 +58,7 @@
"babel-preset-es2015": "^6.14.0",
"babel-register": "^6.14.0",
"chai": "^3.0.0",
"compat-table": "kangax/compat-table#291c758ac618fff6bf5bb2113a5aa046189f93e2",
"compat-table": "kangax/compat-table#c38f039b8ea7fadf347d3e300fec3611645e31e9",
"eslint": "^3.13.1",
"eslint-config-babel": "^5.0.0",
"eslint-plugin-flowtype": "^2.29.1",

View File

@ -16,36 +16,6 @@ const es6Data = require("compat-table/data-es6");
const es6PlusData = require("compat-table/data-es2016plus");
const envs = require("compat-table/environments");
const invertedEqualsEnv = Object.keys(envs)
.filter((b) => envs[b].equals)
.reduce((a, b) => {
if (!a[envs[b].equals]) {
a[envs[b].equals] = [b];
} else {
a[envs[b].equals].push(b);
}
return a;
}, {});
invertedEqualsEnv.safari5 = ["ios6"];
if (Array.isArray(invertedEqualsEnv.safari6)) {
invertedEqualsEnv.safari6.push("ios7");
} else {
invertedEqualsEnv.safari6 = ["ios7"];
}
invertedEqualsEnv.safari8 = ["ios9"];
const compatibilityTests = flattenDeep([
es6Data,
es6PlusData,
].map((data) =>
data.tests.map((test) => {
return test.subtests ?
[test, renameTests(test.subtests, (name) => test.name + " / " + name)] :
test;
})
));
const environments = [
"chrome",
"opera",
@ -62,6 +32,7 @@ const environments = [
const envMap = {
safari51: "safari5",
safari71_8: "safari8",
safari10_1: "safari10.1",
firefox3_5: "firefox3",
firefox3_6: "firefox3",
node010: "node0.10",
@ -80,6 +51,46 @@ const envMap = {
ios51: "ios5.1",
};
const invertedEqualsEnv = Object.keys(envs)
.filter((b) => envs[b].equals)
.reduce((a, b) => {
const checkEnv = envMap[envs[b].equals] || envs[b].equals;
environments.some((env) => {
// go through all environment names to find the the current one
// and try to get the version as integer
const version = parseFloat(checkEnv.replace(env, ""));
if (!isNaN(version)) {
Object.keys(envs).forEach((equals) => {
equals = envMap[equals] || equals;
// Go through all envs from compat-table and get int version
const equalsVersion = parseFloat(equals.replace(env, ""));
// If the current version is smaller than the version that was mentioned
// in `equals` we can add an entry, as older versions should include features
// that newer ones have
if (!isNaN(equalsVersion) && equalsVersion <= version) {
if (!a[equals]) a[equals] = [];
if (a[equals].indexOf(b) >= 0) return;
a[equals].push(b);
}
});
return true;
}
});
return a;
}, {});
const compatibilityTests = flattenDeep([
es6Data,
es6PlusData,
].map((data) =>
data.tests.map((test) => {
return test.subtests ?
[test, renameTests(test.subtests, (name) => test.name + " / " + name)] :
test;
})
));
const getLowestImplementedVersion = ({ features }, env) => {
const tests = flatten(compatibilityTests
.filter((test) => {
@ -130,7 +141,7 @@ const getLowestImplementedVersion = ({ features }, env) => {
.filter((test) => tests[i].res[test] === true || tests[i].res[test] === "strict")
// normalize some keys
.map((test) => envMap[test] || test)
.filter((test) => !isNaN(parseInt(test.replace(env, ""))))
.filter((test) => !isNaN(parseFloat(test.replace(env, ""))))
.shift();
});

View File

@ -39,19 +39,19 @@ Using polyfills:
es6.set {"ie":10,"node":6}
es6.weak-map {"ie":10,"node":6}
es6.weak-set {"ie":10,"node":6}
es6.reflect.apply {"ie":10,"node":6}
es6.reflect.construct {"ie":10,"node":6}
es6.reflect.define-property {"ie":10,"node":6}
es6.reflect.delete-property {"ie":10,"node":6}
es6.reflect.get {"ie":10,"node":6}
es6.reflect.get-own-property-descriptor {"ie":10,"node":6}
es6.reflect.get-prototype-of {"ie":10,"node":6}
es6.reflect.has {"ie":10,"node":6}
es6.reflect.is-extensible {"ie":10,"node":6}
es6.reflect.own-keys {"ie":10,"node":6}
es6.reflect.prevent-extensions {"ie":10,"node":6}
es6.reflect.set {"ie":10,"node":6}
es6.reflect.set-prototype-of {"ie":10,"node":6}
es6.reflect.apply {"ie":10}
es6.reflect.construct {"ie":10}
es6.reflect.define-property {"ie":10}
es6.reflect.delete-property {"ie":10}
es6.reflect.get {"ie":10}
es6.reflect.get-own-property-descriptor {"ie":10}
es6.reflect.get-prototype-of {"ie":10}
es6.reflect.has {"ie":10}
es6.reflect.is-extensible {"ie":10}
es6.reflect.own-keys {"ie":10}
es6.reflect.prevent-extensions {"ie":10}
es6.reflect.set {"ie":10}
es6.reflect.set-prototype-of {"ie":10}
es6.promise {"ie":10,"node":6}
es6.symbol {"ie":10,"node":6}
es6.object.assign {"ie":10}
@ -65,7 +65,7 @@ Using polyfills:
es6.string.starts-with {"ie":10}
es6.string.ends-with {"ie":10}
es6.string.includes {"ie":10}
es6.regexp.flags {"ie":10,"node":6}
es6.regexp.flags {"ie":10}
es6.regexp.match {"ie":10}
es6.regexp.replace {"ie":10}
es6.regexp.split {"ie":10}
@ -101,7 +101,7 @@ Using polyfills:
es6.math.sinh {"ie":10}
es6.math.tanh {"ie":10}
es6.math.trunc {"ie":10}
es7.array.includes {"ie":10,"node":6}
es7.array.includes {"ie":10}
es7.object.values {"ie":10,"node":6}
es7.object.entries {"ie":10,"node":6}
es7.object.get-own-property-descriptors {"ie":10,"node":6}
@ -110,4 +110,4 @@ Using polyfills:
web.timers {"chrome":54,"ie":10,"node":6}
web.immediate {"chrome":54,"ie":10,"node":6}
web.dom.iterable {"chrome":54,"ie":10,"node":6}
src/in.js -> lib/in.js
src/in.js -> lib/in.js

View File

@ -13,6 +13,5 @@ Using plugins:
transform-es2015-for-of {"firefox":52}
transform-es2015-function-name {"firefox":52}
transform-es2015-literals {"firefox":52}
transform-exponentiation-operator {"node":7.4}
syntax-trailing-function-commas {"node":7.4}
src/in.js -> lib/in.js
src/in.js -> lib/in.js

View File

@ -1067,9 +1067,9 @@ commoner@^0.10.1:
q "^1.1.2"
recast "^0.11.17"
compat-table@kangax/compat-table#291c758ac618fff6bf5bb2113a5aa046189f93e2:
compat-table@kangax/compat-table#c38f039b8ea7fadf347d3e300fec3611645e31e9:
version "0.0.0"
resolved "https://codeload.github.com/kangax/compat-table/tar.gz/291c758ac618fff6bf5bb2113a5aa046189f93e2"
resolved "https://codeload.github.com/kangax/compat-table/tar.gz/c38f039b8ea7fadf347d3e300fec3611645e31e9"
dependencies:
babel-core latest
babel-polyfill latest