Merge pull request #56 from babel/builtins-option
add useBuiltIns option
This commit is contained in:
commit
b44949025a
@ -120,6 +120,47 @@ Useful if there is a bug in a native implementation, or a combination of a non-s
|
||||
|
||||
Ex: Node 4 supports native classes but not spread.
|
||||
|
||||
### `useBuiltIns`: `boolean`
|
||||
|
||||
Defaults to `false`.
|
||||
|
||||
A way to apply `babel-preset-env` for polyfills (via "babel-polyfill").
|
||||
|
||||
> NOTE: This does not currently polyfill experimental/stage-x built-ins like the regular "babel-polyfill" does.
|
||||
> This will only work with npm >= 3 (which should be used with Babel 6 anyway)
|
||||
|
||||
```
|
||||
npm install babel-polyfill --save
|
||||
```
|
||||
|
||||
This option will apply a new plugin that replaces the statement `import "babel-polyfill"` or `require("babel-polyfill")` with individual requires for `babel-polyfill` based on environment.
|
||||
|
||||
> NOTE: Only use `require("babel-polyfill");` once in your whole app. One option is to create single entry file that only contains the require statement.
|
||||
|
||||
In
|
||||
|
||||
```js
|
||||
import "babel-polyfill";
|
||||
```
|
||||
|
||||
Out (different based on environment)
|
||||
|
||||
```js
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
```
|
||||
|
||||
> This will also work for "core-js" directly (`import "core-js";`)
|
||||
|
||||
```
|
||||
npm install core-js --save
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
```js
|
||||
|
||||
134
experimental/babel-preset-env/data/builtInFeatures.js
Normal file
134
experimental/babel-preset-env/data/builtInFeatures.js
Normal file
@ -0,0 +1,134 @@
|
||||
// https://github.com/zloirock/core-js
|
||||
|
||||
const es2015 = {
|
||||
// "es6.typed/array-buffer": "typed arrays / ",
|
||||
"es6.typed.data-view": "typed arrays / DataView",
|
||||
"es6.typed.int8-array": "typed arrays / Int8Array",
|
||||
"es6.typed.uint8-array": "typed arrays / Uint8Array",
|
||||
"es6.typed.uint8-clamped-array": "typed arrays / Uint8ClampedArray",
|
||||
"es6.typed.int16-array": "typed arrays / Int16Array",
|
||||
"es6.typed.uint16-array": "typed arrays / Uint16Array",
|
||||
"es6.typed.int32-array": "typed arrays / Int32Array",
|
||||
"es6.typed.uint32-array": "typed arrays / Uint32Array",
|
||||
"es6.typed.float32-array": "typed arrays / Float32Array",
|
||||
"es6.typed.float64-array": "typed arrays / Float64Array",
|
||||
|
||||
"es6.map": "Map",
|
||||
"es6.set": "Set",
|
||||
"es6.weak-map": "WeakMap",
|
||||
"es6.weak-set": "WeakSet",
|
||||
// Proxy not implementable
|
||||
|
||||
"es6.reflect.apply": "Reflect / Reflect.apply",
|
||||
"es6.reflect.construct": "Reflect / Reflect.construct",
|
||||
"es6.reflect.define-property": "Reflect / Reflect.defineProperty",
|
||||
"es6.reflect.delete-property": "Reflect / Reflect.deleteProperty",
|
||||
"es6.reflect.get": "Reflect / Reflect.get",
|
||||
"es6.reflect.get-own-property-descriptor": "Reflect / Reflect.getOwnPropertyDescriptor",
|
||||
"es6.reflect.get-prototype-of": "Reflect / Reflect.getPrototypeOf",
|
||||
"es6.reflect.has": "Reflect / Reflect.has",
|
||||
"es6.reflect.is-extensible": "Reflect / Reflect.isExtensible",
|
||||
"es6.reflect.own-keys": "Reflect / Reflect.ownKeys",
|
||||
"es6.reflect.prevent-extensions": "Reflect / Reflect.preventExtensions",
|
||||
"es6.reflect.set": "Reflect / Reflect.set",
|
||||
"es6.reflect.set-prototype-of": "Reflect / Reflect.setPrototypeOf",
|
||||
|
||||
"es6.promise": "Promise",
|
||||
|
||||
"es6.symbol": {
|
||||
features: [
|
||||
"Symbol",
|
||||
"well-known symbols / Symbol.hasInstance",
|
||||
"well-known symbols / Symbol.isConcatSpreadable",
|
||||
"well-known symbols / Symbol.iterator",
|
||||
"well-known symbols / Symbol.match",
|
||||
"well-known symbols / Symbol.replace",
|
||||
"well-known symbols / Symbol.search",
|
||||
"well-known symbols / Symbol.species",
|
||||
"well-known symbols / Symbol.split",
|
||||
"well-known symbols / Symbol.toPrimitive",
|
||||
"well-known symbols / Symbol.toStringTag",
|
||||
"well-known symbols / Symbol.unscopables",
|
||||
]
|
||||
},
|
||||
|
||||
"es6.object.assign": "Object static methods / Object.assign",
|
||||
"es6.object.is": "Object static methods / Object.is",
|
||||
"es6.object.get-own-property-symbols": "Object static methods / Object.getOwnPropertySymbols",
|
||||
"es6.object.set-prototype-of": "Object static methods / Object.setPrototypeOf",
|
||||
|
||||
"es6.function.name": 'function "name" property',
|
||||
|
||||
"es6.string.raw": "String static methods / String.raw",
|
||||
"es6.string.from-code-point": "String static methods / String.fromCodePoint",
|
||||
|
||||
"es6.string.code-point-at": "String.prototype methods / String.prototype.codePointAt",
|
||||
// "String.prototype methods / String.prototype.normalize" not implemented
|
||||
"es6.string.repeat": "String.prototype methods / String.prototype.repeat",
|
||||
"es6.string.starts-with": "String.prototype methods / String.prototype.startsWith",
|
||||
"es6.string.ends-with": "String.prototype methods / String.prototype.endsWith",
|
||||
"es6.string.includes": "String.prototype methods / String.prototype.includes",
|
||||
|
||||
"es6.regexp.flags": "RegExp.prototype properties / RegExp.prototype.flags",
|
||||
"es6.regexp.match": "RegExp.prototype properties / RegExp.prototype[Symbol.match]",
|
||||
"es6.regexp.replace": "RegExp.prototype properties / RegExp.prototype[Symbol.replace]",
|
||||
"es6.regexp.split": "RegExp.prototype properties / RegExp.prototype[Symbol.split]",
|
||||
"es6.regexp.search": "RegExp.prototype properties / RegExp.prototype[Symbol.search]",
|
||||
|
||||
"es6.array.from": "Array static methods / Array.from",
|
||||
"es6.array.of": "Array static methods / Array.of",
|
||||
|
||||
"es6.array.copy-within": "Array.prototype methods / Array.prototype.copyWithin",
|
||||
"es6.array.find": "Array.prototype methods / Array.prototype.find",
|
||||
"es6.array.find-index": "Array.prototype methods / Array.prototype.findIndex",
|
||||
"es6.array.fill": "Array.prototype methods / Array.prototype.fill",
|
||||
|
||||
"es6.array.iterator": {
|
||||
features: [
|
||||
"Array.prototype methods / Array.prototype.keys",
|
||||
// can use Symbol.iterator, not implemented in many environments
|
||||
// "Array.prototype methods / Array.prototype.values",
|
||||
"Array.prototype methods / Array.prototype.entries",
|
||||
]
|
||||
},
|
||||
|
||||
"es6.number.is-finite": "Number properties / Number.isFinite",
|
||||
"es6.number.is-integer": "Number properties / Number.isInteger",
|
||||
"es6.number.is-safe-integer": "Number properties / Number.isSafeInteger",
|
||||
"es6.number.is-nan": "Number properties / Number.isNaN",
|
||||
"es6.number.epsilon": "Number properties / Number.EPSILON",
|
||||
"es6.number.min-safe-integer": "Number properties / Number.MIN_SAFE_INTEGER",
|
||||
"es6.number.max-safe-integer": "Number properties / Number.MAX_SAFE_INTEGER",
|
||||
|
||||
"es6.math.acosh": "Math methods / Math.acosh",
|
||||
"es6.math.asinh": "Math methods / Math.asinh",
|
||||
"es6.math.atanh": "Math methods / Math.atanh",
|
||||
"es6.math.cbrt": "Math methods / Math.cbrt",
|
||||
"es6.math.clz32": "Math methods / Math.clz32",
|
||||
"es6.math.cosh": "Math methods / Math.cosh",
|
||||
"es6.math.expm1": "Math methods / Math.expm1",
|
||||
"es6.math.fround": "Math methods / Math.fround",
|
||||
"es6.math.hypot": "Math methods / Math.hypot",
|
||||
"es6.math.imul": "Math methods / Math.imul",
|
||||
"es6.math.log1p": "Math methods / Math.log1p",
|
||||
"es6.math.log10": "Math methods / Math.log10",
|
||||
"es6.math.log2": "Math methods / Math.log2",
|
||||
"es6.math.sign": "Math methods / Math.sign",
|
||||
"es6.math.sinh": "Math methods / Math.sinh",
|
||||
"es6.math.tanh": "Math methods / Math.tanh",
|
||||
"es6.math.trunc": "Math methods / Math.trunc",
|
||||
};
|
||||
|
||||
const es2016 = {
|
||||
"es7.array.includes.js": "Array.prototype.includes",
|
||||
};
|
||||
|
||||
const es2017 = {
|
||||
"es7.object.values": "Object.values",
|
||||
"es7.object.entries": "Object.entries",
|
||||
"es7.object.get-own-property-descriptors": "Object.getOwnPropertyDescriptors",
|
||||
"es7.string.pad-start": "String padding / String.prototype.padStart",
|
||||
"es7.string.pad-end": "String padding / String.prototype.padEnd",
|
||||
};
|
||||
|
||||
module.exports = Object.assign({}, es2015, es2016, es2017);
|
||||
708
experimental/babel-preset-env/data/builtIns.json
Normal file
708
experimental/babel-preset-env/data/builtIns.json
Normal file
@ -0,0 +1,708 @@
|
||||
{
|
||||
"es6.typed.data-view": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 15,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.int8-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.uint8-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.uint8-clamped-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"edge": 12,
|
||||
"firefox": 4,
|
||||
"safari": 6,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.typed.int16-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.uint16-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.int32-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.uint32-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.float32-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.typed.float64-array": {
|
||||
"chrome": 5,
|
||||
"opera": 12,
|
||||
"firefox": 4,
|
||||
"safari": 5,
|
||||
"node": 0.12,
|
||||
"ie": 10,
|
||||
"android": 4.1,
|
||||
"ios": 6
|
||||
},
|
||||
"es6.map": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"safari": 10,
|
||||
"node": 6.5,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.set": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"safari": 10,
|
||||
"node": 6.5,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.weak-map": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"safari": 9,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.weak-set": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"safari": 9,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.reflect.apply": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.construct": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 13,
|
||||
"firefox": 45,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.define-property": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 13,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.delete-property": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.get": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.get-own-property-descriptor": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.get-prototype-of": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.has": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.is-extensible": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.own-keys": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.prevent-extensions": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.set": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.reflect.set-prototype-of": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"edge": 12,
|
||||
"firefox": 42,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.promise": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"edge": 13,
|
||||
"firefox": 45,
|
||||
"safari": 10,
|
||||
"node": 6.5,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.symbol": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"firefox": 51,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.object.assign": {
|
||||
"chrome": 45,
|
||||
"opera": 32,
|
||||
"edge": 12,
|
||||
"firefox": 34,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.object.is": {
|
||||
"chrome": 19,
|
||||
"edge": 12,
|
||||
"firefox": 22,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"android": 4.1,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.object.get-own-property-symbols": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 36,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.object.set-prototype-of": {
|
||||
"chrome": 34,
|
||||
"opera": 21,
|
||||
"firefox": 31,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ie": 11,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.function.name": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"safari": 10,
|
||||
"node": 6.5,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.string.raw": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 34,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.string.from-code-point": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 29,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.string.code-point-at": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 29,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.string.repeat": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 24,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.string.starts-with": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 29,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.string.ends-with": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 29,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.string.includes": {
|
||||
"chrome": 41,
|
||||
"opera": 28,
|
||||
"edge": 12,
|
||||
"firefox": 40,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.regexp.flags": {
|
||||
"chrome": 49,
|
||||
"opera": 36,
|
||||
"firefox": 37,
|
||||
"safari": 9,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.regexp.match": {
|
||||
"chrome": 50,
|
||||
"opera": 37,
|
||||
"firefox": 49,
|
||||
"safari": 10,
|
||||
"node": 6,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.regexp.replace": {
|
||||
"chrome": 50,
|
||||
"opera": 37,
|
||||
"firefox": 49,
|
||||
"safari": 10,
|
||||
"node": 6,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.regexp.split": {
|
||||
"chrome": 50,
|
||||
"opera": 37,
|
||||
"firefox": 49,
|
||||
"safari": 10,
|
||||
"node": 6,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.regexp.search": {
|
||||
"chrome": 50,
|
||||
"opera": 37,
|
||||
"firefox": 49,
|
||||
"safari": 10,
|
||||
"node": 6,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.array.from": {
|
||||
"chrome": 51,
|
||||
"opera": 38,
|
||||
"safari": 10,
|
||||
"node": 6.5,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.array.of": {
|
||||
"chrome": 45,
|
||||
"opera": 32,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.array.copy-within": {
|
||||
"chrome": 45,
|
||||
"opera": 32,
|
||||
"edge": 12,
|
||||
"firefox": 32,
|
||||
"safari": 9,
|
||||
"node": 4,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.array.find": {
|
||||
"chrome": 45,
|
||||
"opera": 32,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 4,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.array.find-index": {
|
||||
"chrome": 45,
|
||||
"opera": 32,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 4,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.array.fill": {
|
||||
"chrome": 45,
|
||||
"opera": 32,
|
||||
"edge": 12,
|
||||
"firefox": 31,
|
||||
"safari": 7,
|
||||
"node": 4,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.array.iterator": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 28,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.number.is-finite": {
|
||||
"chrome": 19,
|
||||
"edge": 12,
|
||||
"firefox": 16,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"android": 4.1,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.number.is-integer": {
|
||||
"chrome": 34,
|
||||
"opera": 21,
|
||||
"edge": 12,
|
||||
"firefox": 16,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.number.is-safe-integer": {
|
||||
"chrome": 34,
|
||||
"opera": 21,
|
||||
"edge": 12,
|
||||
"firefox": 32,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.number.is-nan": {
|
||||
"chrome": 19,
|
||||
"edge": 12,
|
||||
"firefox": 15,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"android": 4.1,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.number.epsilon": {
|
||||
"chrome": 34,
|
||||
"opera": 21,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.number.min-safe-integer": {
|
||||
"chrome": 34,
|
||||
"opera": 21,
|
||||
"edge": 12,
|
||||
"firefox": 31,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.number.max-safe-integer": {
|
||||
"chrome": 34,
|
||||
"opera": 21,
|
||||
"edge": 12,
|
||||
"firefox": 31,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.math.acosh": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.asinh": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.atanh": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.cbrt": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.clz32": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 31,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.math.cosh": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.expm1": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.fround": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 26,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.hypot": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 27,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.imul": {
|
||||
"chrome": 30,
|
||||
"opera": 17,
|
||||
"edge": 12,
|
||||
"firefox": 23,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"android": 4.4,
|
||||
"ios": 8
|
||||
},
|
||||
"es6.math.log1p": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.log10": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.log2": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.sign": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 9,
|
||||
"node": 0.12,
|
||||
"ios": 9
|
||||
},
|
||||
"es6.math.sinh": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.tanh": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es6.math.trunc": {
|
||||
"chrome": 38,
|
||||
"opera": 25,
|
||||
"edge": 12,
|
||||
"firefox": 25,
|
||||
"safari": 7,
|
||||
"node": 0.12,
|
||||
"ios": 10
|
||||
},
|
||||
"es7.array.includes.js": {
|
||||
"chrome": 47,
|
||||
"opera": 34,
|
||||
"edge": 14,
|
||||
"firefox": 43,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es7.object.values": {
|
||||
"chrome": 54,
|
||||
"opera": 41,
|
||||
"edge": 14,
|
||||
"firefox": 47,
|
||||
"node": 7
|
||||
},
|
||||
"es7.object.entries": {
|
||||
"chrome": 54,
|
||||
"opera": 41,
|
||||
"edge": 14,
|
||||
"firefox": 47,
|
||||
"node": 7
|
||||
},
|
||||
"es7.object.get-own-property-descriptors": {
|
||||
"chrome": 54,
|
||||
"opera": 41,
|
||||
"firefox": 50,
|
||||
"node": 7
|
||||
},
|
||||
"es7.string.pad-start": {
|
||||
"firefox": 48,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
},
|
||||
"es7.string.pad-end": {
|
||||
"firefox": 48,
|
||||
"safari": 10,
|
||||
"ios": 10
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,3 @@
|
||||
/* eslint-disable quotes */
|
||||
module.exports = {
|
||||
// es2015
|
||||
"transform-es2015-arrow-functions": {
|
||||
|
||||
@ -82,7 +82,8 @@
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"max-len": 0
|
||||
"max-len": 0,
|
||||
"quotes": ["error", "double", { "avoidEscape": true }]
|
||||
},
|
||||
"env": {
|
||||
"mocha": true
|
||||
|
||||
@ -4,6 +4,7 @@ const path = require("path");
|
||||
const flatten = require("lodash/flatten");
|
||||
const flattenDeep = require("lodash/flattenDeep");
|
||||
const pluginFeatures = require("../data/pluginFeatures");
|
||||
const builtInFeatures = require("../data/builtInFeatures");
|
||||
|
||||
const renameTests = (tests, getName) =>
|
||||
tests.map((test) => Object.assign({}, test, { name: getName(test.name) }));
|
||||
@ -65,22 +66,37 @@ const envMap = {
|
||||
|
||||
const getLowestImplementedVersion = ({ features }, env) => {
|
||||
let tests = flatten(compatibilityTests
|
||||
.filter((test) => features.indexOf(test.name) >= 0)
|
||||
.filter((test) => {
|
||||
return features.indexOf(test.name) >= 0 ||
|
||||
// for features === ["DataView"]
|
||||
// it covers "DataView (Int8)" and "DataView (UInt8)"
|
||||
features.length === 1 && test.name.indexOf(features[0]) === 0;
|
||||
})
|
||||
.map((test) => {
|
||||
const isBuiltIn = test.category === "built-ins" || test.category === "built-in extensions";
|
||||
|
||||
return test.subtests ?
|
||||
test.subtests.map((subtest) => ({
|
||||
name: `${test.name}/${subtest.name}`,
|
||||
res: subtest.res
|
||||
res: subtest.res,
|
||||
isBuiltIn
|
||||
})) :
|
||||
{
|
||||
name: test.name,
|
||||
res: test.res
|
||||
res: test.res,
|
||||
isBuiltIn
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
let envTests = tests
|
||||
.map(({ res: test, name }, i) => {
|
||||
.map(({ res: test, name, isBuiltIn }, i) => {
|
||||
// Babel itself doesn't implement the feature correctly,
|
||||
// don't count against it
|
||||
// only doing this for built-ins atm
|
||||
if (!test.babel && isBuiltIn) {
|
||||
return "-1";
|
||||
}
|
||||
|
||||
// `equals` in compat-table
|
||||
Object.keys(test).forEach((t) => {
|
||||
@ -98,7 +114,7 @@ const getLowestImplementedVersion = ({ features }, env) => {
|
||||
});
|
||||
|
||||
let envFiltered = envTests.filter((t) => t);
|
||||
if (envTests.length > envFiltered.length) {
|
||||
if (envTests.length > envFiltered.length || envTests.length === 0) {
|
||||
// envTests.forEach((test, i) => {
|
||||
// if (!test) {
|
||||
// // print unsupported features
|
||||
@ -115,27 +131,47 @@ const getLowestImplementedVersion = ({ features }, env) => {
|
||||
.reduce((a, b) => { return (a < b) ? b : a; });
|
||||
};
|
||||
|
||||
const data = {};
|
||||
for (const pluginName in pluginFeatures) {
|
||||
const options = pluginFeatures[pluginName];
|
||||
const plugin = {};
|
||||
environments.forEach((env) => {
|
||||
if (Array.isArray(options.features)) {
|
||||
function generateData(features) {
|
||||
let ret = {};
|
||||
|
||||
Object.keys(features).forEach((pluginName) => {
|
||||
let options = features[pluginName];
|
||||
|
||||
if (!options.features) {
|
||||
options = {
|
||||
features: [options]
|
||||
};
|
||||
}
|
||||
|
||||
const plugin = {};
|
||||
environments.forEach((env) => {
|
||||
const version = getLowestImplementedVersion(options, env);
|
||||
if (version !== null) {
|
||||
plugin[env] = version;
|
||||
}
|
||||
}
|
||||
|
||||
// add opera
|
||||
if (plugin.chrome) {
|
||||
plugin.opera = plugin.chrome - 13;
|
||||
}
|
||||
// add opera
|
||||
if (plugin.chrome) {
|
||||
if (plugin.chrome >= 28) {
|
||||
plugin.opera = plugin.chrome - 13;
|
||||
} else if (plugin.chrome === 5) {
|
||||
plugin.opera = 12;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ret[pluginName] = plugin;
|
||||
});
|
||||
data[pluginName] = plugin;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(__dirname, "../data/plugins.json"),
|
||||
JSON.stringify(data, null, 2) + "\n"
|
||||
JSON.stringify(generateData(pluginFeatures), null, 2) + "\n"
|
||||
);
|
||||
|
||||
fs.writeFileSync(
|
||||
path.join(__dirname, "../data/builtIns.json"),
|
||||
JSON.stringify(generateData(builtInFeatures), null, 2) + "\n"
|
||||
);
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
import pluginList from "../data/plugins.json";
|
||||
import builtInsList from "../data/builtIns.json";
|
||||
import browserslist from "browserslist";
|
||||
import transformPolyfillRequirePlugin from "./transformPolyfillRequirePlugin";
|
||||
|
||||
export const MODULE_TRANSFORMATIONS = {
|
||||
"amd": "transform-es2015-modules-amd",
|
||||
@ -134,38 +136,58 @@ export const validateWhitelistOption = (whitelistOpt = []) => {
|
||||
|
||||
let hasBeenLogged = false;
|
||||
|
||||
const logPlugin = (plugin, targets, list) => {
|
||||
const envList = list[plugin];
|
||||
const filteredList = Object.keys(targets)
|
||||
.reduce((a, b) => {
|
||||
a[b] = envList[b];
|
||||
return a;
|
||||
}, {});
|
||||
const logStr = `\n ${plugin} ${JSON.stringify(filteredList)}`;
|
||||
console.log(logStr);
|
||||
};
|
||||
|
||||
export default function buildPreset(context, opts = {}) {
|
||||
const loose = validateLooseOption(opts.loose);
|
||||
const moduleType = validateModulesOption(opts.modules);
|
||||
const whitelist = validateWhitelistOption(opts.whitelist);
|
||||
const targets = getTargets(opts.targets);
|
||||
const debug = opts.debug;
|
||||
const useBuiltIns = opts.useBuiltIns;
|
||||
|
||||
let transformations = Object.keys(pluginList)
|
||||
.filter((pluginName) => isPluginRequired(targets, pluginList[pluginName]));
|
||||
|
||||
let polyfills;
|
||||
if (useBuiltIns) {
|
||||
polyfills = Object.keys(builtInsList)
|
||||
.filter((builtInName) => isPluginRequired(targets, builtInsList[builtInName]));
|
||||
}
|
||||
|
||||
if (debug && !hasBeenLogged) {
|
||||
hasBeenLogged = true;
|
||||
|
||||
console.log("babel-preset-env: `DEBUG` option");
|
||||
console.log("");
|
||||
console.log(`Using targets: ${JSON.stringify(targets, null, 2)}`);
|
||||
console.log("");
|
||||
console.log("Using plugins:");
|
||||
console.log(`modules transform: ${moduleType}`);
|
||||
console.log("");
|
||||
console.log(`module: ${moduleType}`);
|
||||
console.log("Using plugins:");
|
||||
transformations.forEach((transform) => {
|
||||
let envList = pluginList[transform];
|
||||
let filteredList = Object.keys(targets)
|
||||
.reduce((a, b) => {
|
||||
a[b] = envList[b];
|
||||
return a;
|
||||
}, {});
|
||||
console.log(transform, JSON.stringify(filteredList, null, 2));
|
||||
logPlugin(transform, targets, pluginList);
|
||||
});
|
||||
console.log("\nUsing polyfills:");
|
||||
if (useBuiltIns && polyfills.length) {
|
||||
polyfills.forEach((polyfill) => {
|
||||
logPlugin(polyfill, targets, builtInsList);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
transformations = [...transformations, ...whitelist].map((pluginName) => {
|
||||
let allTransformations = [...transformations, ...whitelist];
|
||||
let regenerator = allTransformations.indexOf("transform-regenerator") >= 0;
|
||||
|
||||
let plugins = allTransformations.map((pluginName) => {
|
||||
return [require(`babel-plugin-${pluginName}`), { loose }];
|
||||
});
|
||||
|
||||
@ -179,7 +201,8 @@ export default function buildPreset(context, opts = {}) {
|
||||
return {
|
||||
plugins: [
|
||||
...modules,
|
||||
...transformations
|
||||
]
|
||||
...plugins,
|
||||
useBuiltIns === true && [transformPolyfillRequirePlugin, { polyfills, regenerator }]
|
||||
].filter(Boolean)
|
||||
};
|
||||
}
|
||||
|
||||
@ -0,0 +1,104 @@
|
||||
function isPolyfillSource(value) {
|
||||
return value === "babel-polyfill" || value === "core-js";
|
||||
}
|
||||
|
||||
const whitelist = [
|
||||
"web.timers",
|
||||
"web.immediate",
|
||||
"web.dom.iterable"
|
||||
];
|
||||
|
||||
export default function ({ types: t }) {
|
||||
function createImportDeclaration(polyfill) {
|
||||
let declar = t.importDeclaration([], t.stringLiteral(`core-js/modules/${polyfill}`));
|
||||
declar._blockHoist = 3;
|
||||
return declar;
|
||||
}
|
||||
|
||||
function createRequireStatement(polyfill) {
|
||||
return t.expressionStatement(
|
||||
t.callExpression(
|
||||
t.identifier("require"),
|
||||
[
|
||||
t.stringLiteral(`core-js/modules/${polyfill}`)
|
||||
]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
function isRequire(path) {
|
||||
return t.isExpressionStatement(path.node) &&
|
||||
t.isCallExpression(path.node.expression) &&
|
||||
t.isIdentifier(path.node.expression.callee) &&
|
||||
path.node.expression.callee.name === "require" &&
|
||||
path.node.expression.arguments.length === 1 &&
|
||||
t.isStringLiteral(path.node.expression.arguments[0]) &&
|
||||
isPolyfillSource(path.node.expression.arguments[0].value);
|
||||
}
|
||||
|
||||
function createImport(polyfill, requireType) {
|
||||
if (requireType === "import") {
|
||||
return createImportDeclaration(polyfill);
|
||||
} else {
|
||||
return createRequireStatement(polyfill);
|
||||
}
|
||||
}
|
||||
|
||||
function createImports(polyfills, requireType, regenerator) {
|
||||
let imports = polyfills
|
||||
.filter((el, i, arr) => arr.indexOf(el) === i)
|
||||
.map((polyfill) => createImport(polyfill, requireType));
|
||||
|
||||
return [
|
||||
...imports,
|
||||
regenerator && createImport("regenerator-runtime/runtime", requireType)
|
||||
].filter(Boolean);
|
||||
}
|
||||
|
||||
const isPolyfillImport = {
|
||||
ImportDeclaration(path, state) {
|
||||
if (path.node.specifiers.length === 0 &&
|
||||
isPolyfillSource(path.node.source.value)) {
|
||||
this.numPolyfillImports++;
|
||||
if (this.numPolyfillImports > 1) {
|
||||
path.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
path.replaceWithMultiple(
|
||||
createImports([...state.opts.polyfills, ...whitelist], "import", state.opts.regenerator)
|
||||
);
|
||||
}
|
||||
},
|
||||
Program(path, state) {
|
||||
if (!state.opts.polyfills) {
|
||||
throw path.buildCodeFrameError(`
|
||||
There was an issue in "babel-preset-env" such that
|
||||
the "polyfills" option was not correctly passed
|
||||
to the "transform-polyfill-require" plugin
|
||||
`);
|
||||
}
|
||||
path.get("body").forEach((bodyPath) => {
|
||||
if (isRequire(bodyPath)) {
|
||||
this.numPolyfillImports++;
|
||||
if (this.numPolyfillImports > 1) {
|
||||
path.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
bodyPath.replaceWithMultiple(
|
||||
createImports([...state.opts.polyfills, ...whitelist], "require", state.opts.regenerator)
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
name: "transform-polyfill-require",
|
||||
visitor: isPolyfillImport,
|
||||
pre() {
|
||||
this.numPolyfillImports = 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
1
experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/actual.js
vendored
Normal file
1
experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "babel-polyfill";
|
||||
5
experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/expected.js
vendored
Normal file
5
experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/expected.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import "core-js/modules/es6.typed.data-view";
|
||||
import "core-js/modules/es6.reflect.apply";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
11
experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/plugin-options/filters-duplicates/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"plugins": [
|
||||
["../../../../lib/transformPolyfillRequirePlugin", {
|
||||
"polyfills": [
|
||||
"es6.typed.data-view",
|
||||
"es6.typed.data-view",
|
||||
"es6.reflect.apply"
|
||||
]
|
||||
}]
|
||||
]
|
||||
}
|
||||
1
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/actual.js
vendored
Normal file
1
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "babel-polyfill";
|
||||
3
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/expected.js
vendored
Normal file
3
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/expected.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
8
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/options.json
vendored
Normal file
8
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-false/options.json
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"plugins": [
|
||||
["../../../../lib/transformPolyfillRequirePlugin", {
|
||||
"regenerator": false,
|
||||
"polyfills": []
|
||||
}]
|
||||
]
|
||||
}
|
||||
1
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/actual.js
vendored
Normal file
1
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "babel-polyfill";
|
||||
4
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/expected.js
vendored
Normal file
4
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/expected.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
import "core-js/modules/regenerator-runtime/runtime";
|
||||
8
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/options.json
vendored
Normal file
8
experimental/babel-preset-env/test/fixtures/plugin-options/regenerator-true/options.json
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"plugins": [
|
||||
["../../../../lib/transformPolyfillRequirePlugin", {
|
||||
"regenerator": true,
|
||||
"polyfills": []
|
||||
}]
|
||||
]
|
||||
}
|
||||
1
experimental/babel-preset-env/test/fixtures/preset-options/core-js/actual.js
vendored
Normal file
1
experimental/babel-preset-env/test/fixtures/preset-options/core-js/actual.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
import "core-js";
|
||||
5
experimental/babel-preset-env/test/fixtures/preset-options/core-js/expected.js
vendored
Normal file
5
experimental/babel-preset-env/test/fixtures/preset-options/core-js/expected.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/core-js/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/core-js/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 55
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
var a = "1";
|
||||
var a = "1";
|
||||
@ -1 +1 @@
|
||||
import a from "a";
|
||||
import a from "a";
|
||||
@ -1,3 +1,3 @@
|
||||
"use strict";
|
||||
|
||||
var a = "1";
|
||||
var a = "1";
|
||||
2
experimental/babel-preset-env/test/fixtures/preset-options/no-transform/actual.js
vendored
Normal file
2
experimental/babel-preset-env/test/fixtures/preset-options/no-transform/actual.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import "not-core-js";
|
||||
import "not-babel-polyfill";
|
||||
2
experimental/babel-preset-env/test/fixtures/preset-options/no-transform/expected.js
vendored
Normal file
2
experimental/babel-preset-env/test/fixtures/preset-options/no-transform/expected.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import "not-core-js";
|
||||
import "not-babel-polyfill";
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/no-transform/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 55
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
2
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/actual.js
vendored
Normal file
2
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/actual.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import "babel-polyfill";
|
||||
1 ** 2;
|
||||
37
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/expected.js
vendored
Normal file
37
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/expected.js
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
import "core-js/modules/es6.map";
|
||||
import "core-js/modules/es6.set";
|
||||
import "core-js/modules/es6.weak-map";
|
||||
import "core-js/modules/es6.weak-set";
|
||||
import "core-js/modules/es6.reflect.apply";
|
||||
import "core-js/modules/es6.reflect.construct";
|
||||
import "core-js/modules/es6.reflect.define-property";
|
||||
import "core-js/modules/es6.reflect.delete-property";
|
||||
import "core-js/modules/es6.reflect.get";
|
||||
import "core-js/modules/es6.reflect.get-own-property-descriptor";
|
||||
import "core-js/modules/es6.reflect.get-prototype-of";
|
||||
import "core-js/modules/es6.reflect.has";
|
||||
import "core-js/modules/es6.reflect.is-extensible";
|
||||
import "core-js/modules/es6.reflect.own-keys";
|
||||
import "core-js/modules/es6.reflect.prevent-extensions";
|
||||
import "core-js/modules/es6.reflect.set";
|
||||
import "core-js/modules/es6.reflect.set-prototype-of";
|
||||
import "core-js/modules/es6.promise";
|
||||
import "core-js/modules/es6.symbol";
|
||||
import "core-js/modules/es6.function.name";
|
||||
import "core-js/modules/es6.regexp.flags";
|
||||
import "core-js/modules/es6.regexp.match";
|
||||
import "core-js/modules/es6.regexp.replace";
|
||||
import "core-js/modules/es6.regexp.split";
|
||||
import "core-js/modules/es6.regexp.search";
|
||||
import "core-js/modules/es6.array.from";
|
||||
import "core-js/modules/es7.object.values";
|
||||
import "core-js/modules/es7.object.entries";
|
||||
import "core-js/modules/es7.object.get-own-property-descriptors";
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
import "core-js/modules/regenerator-runtime/runtime";
|
||||
|
||||
Math.pow(1, 2);
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-48/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 48
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
2
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/actual.js
vendored
Normal file
2
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/actual.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import "babel-polyfill";
|
||||
1 ** 2;
|
||||
23
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/expected.js
vendored
Normal file
23
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/expected.js
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
import "core-js/modules/es6.map";
|
||||
import "core-js/modules/es6.set";
|
||||
import "core-js/modules/es6.weak-map";
|
||||
import "core-js/modules/es6.weak-set";
|
||||
import "core-js/modules/es6.promise";
|
||||
import "core-js/modules/es6.symbol";
|
||||
import "core-js/modules/es6.function.name";
|
||||
import "core-js/modules/es6.regexp.match";
|
||||
import "core-js/modules/es6.regexp.replace";
|
||||
import "core-js/modules/es6.regexp.split";
|
||||
import "core-js/modules/es6.regexp.search";
|
||||
import "core-js/modules/es6.array.from";
|
||||
import "core-js/modules/es7.object.values";
|
||||
import "core-js/modules/es7.object.entries";
|
||||
import "core-js/modules/es7.object.get-own-property-descriptors";
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
import "core-js/modules/regenerator-runtime/runtime";
|
||||
|
||||
Math.pow(1, 2);
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-chrome-49/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 49
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
2
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/actual.js
vendored
Normal file
2
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/actual.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import "babel-polyfill";
|
||||
1 ** 2;
|
||||
7
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/expected.js
vendored
Normal file
7
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/expected.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
|
||||
1 ** 2;
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-import/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 55
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
import "babel-polyfill";
|
||||
import "babel-polyfill";
|
||||
1 ** 2;
|
||||
@ -0,0 +1,7 @@
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
|
||||
1 ** 2;
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 55
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
@ -0,0 +1,2 @@
|
||||
import "babel-polyfill";
|
||||
1 ** 2;
|
||||
@ -0,0 +1,89 @@
|
||||
import "core-js/modules/es6.typed.data-view";
|
||||
import "core-js/modules/es6.typed.int8-array";
|
||||
import "core-js/modules/es6.typed.uint8-array";
|
||||
import "core-js/modules/es6.typed.uint8-clamped-array";
|
||||
import "core-js/modules/es6.typed.int16-array";
|
||||
import "core-js/modules/es6.typed.uint16-array";
|
||||
import "core-js/modules/es6.typed.int32-array";
|
||||
import "core-js/modules/es6.typed.uint32-array";
|
||||
import "core-js/modules/es6.typed.float32-array";
|
||||
import "core-js/modules/es6.typed.float64-array";
|
||||
import "core-js/modules/es6.map";
|
||||
import "core-js/modules/es6.set";
|
||||
import "core-js/modules/es6.weak-map";
|
||||
import "core-js/modules/es6.weak-set";
|
||||
import "core-js/modules/es6.reflect.apply";
|
||||
import "core-js/modules/es6.reflect.construct";
|
||||
import "core-js/modules/es6.reflect.define-property";
|
||||
import "core-js/modules/es6.reflect.delete-property";
|
||||
import "core-js/modules/es6.reflect.get";
|
||||
import "core-js/modules/es6.reflect.get-own-property-descriptor";
|
||||
import "core-js/modules/es6.reflect.get-prototype-of";
|
||||
import "core-js/modules/es6.reflect.has";
|
||||
import "core-js/modules/es6.reflect.is-extensible";
|
||||
import "core-js/modules/es6.reflect.own-keys";
|
||||
import "core-js/modules/es6.reflect.prevent-extensions";
|
||||
import "core-js/modules/es6.reflect.set";
|
||||
import "core-js/modules/es6.reflect.set-prototype-of";
|
||||
import "core-js/modules/es6.promise";
|
||||
import "core-js/modules/es6.symbol";
|
||||
import "core-js/modules/es6.object.assign";
|
||||
import "core-js/modules/es6.object.is";
|
||||
import "core-js/modules/es6.object.get-own-property-symbols";
|
||||
import "core-js/modules/es6.object.set-prototype-of";
|
||||
import "core-js/modules/es6.function.name";
|
||||
import "core-js/modules/es6.string.raw";
|
||||
import "core-js/modules/es6.string.from-code-point";
|
||||
import "core-js/modules/es6.string.code-point-at";
|
||||
import "core-js/modules/es6.string.repeat";
|
||||
import "core-js/modules/es6.string.starts-with";
|
||||
import "core-js/modules/es6.string.ends-with";
|
||||
import "core-js/modules/es6.string.includes";
|
||||
import "core-js/modules/es6.regexp.flags";
|
||||
import "core-js/modules/es6.regexp.match";
|
||||
import "core-js/modules/es6.regexp.replace";
|
||||
import "core-js/modules/es6.regexp.split";
|
||||
import "core-js/modules/es6.regexp.search";
|
||||
import "core-js/modules/es6.array.from";
|
||||
import "core-js/modules/es6.array.of";
|
||||
import "core-js/modules/es6.array.copy-within";
|
||||
import "core-js/modules/es6.array.find";
|
||||
import "core-js/modules/es6.array.find-index";
|
||||
import "core-js/modules/es6.array.fill";
|
||||
import "core-js/modules/es6.array.iterator";
|
||||
import "core-js/modules/es6.number.is-finite";
|
||||
import "core-js/modules/es6.number.is-integer";
|
||||
import "core-js/modules/es6.number.is-safe-integer";
|
||||
import "core-js/modules/es6.number.is-nan";
|
||||
import "core-js/modules/es6.number.epsilon";
|
||||
import "core-js/modules/es6.number.min-safe-integer";
|
||||
import "core-js/modules/es6.number.max-safe-integer";
|
||||
import "core-js/modules/es6.math.acosh";
|
||||
import "core-js/modules/es6.math.asinh";
|
||||
import "core-js/modules/es6.math.atanh";
|
||||
import "core-js/modules/es6.math.cbrt";
|
||||
import "core-js/modules/es6.math.clz32";
|
||||
import "core-js/modules/es6.math.cosh";
|
||||
import "core-js/modules/es6.math.expm1";
|
||||
import "core-js/modules/es6.math.fround";
|
||||
import "core-js/modules/es6.math.hypot";
|
||||
import "core-js/modules/es6.math.imul";
|
||||
import "core-js/modules/es6.math.log1p";
|
||||
import "core-js/modules/es6.math.log10";
|
||||
import "core-js/modules/es6.math.log2";
|
||||
import "core-js/modules/es6.math.sign";
|
||||
import "core-js/modules/es6.math.sinh";
|
||||
import "core-js/modules/es6.math.tanh";
|
||||
import "core-js/modules/es6.math.trunc";
|
||||
import "core-js/modules/es7.array.includes.js";
|
||||
import "core-js/modules/es7.object.values";
|
||||
import "core-js/modules/es7.object.entries";
|
||||
import "core-js/modules/es7.object.get-own-property-descriptors";
|
||||
import "core-js/modules/es7.string.pad-start";
|
||||
import "core-js/modules/es7.string.pad-end";
|
||||
import "core-js/modules/web.timers";
|
||||
import "core-js/modules/web.immediate";
|
||||
import "core-js/modules/web.dom.iterable";
|
||||
import "core-js/modules/regenerator-runtime/runtime";
|
||||
|
||||
Math.pow(1, 2);
|
||||
@ -0,0 +1,8 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
3
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/actual.js
vendored
Normal file
3
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/actual.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
require("babel-polyfill");
|
||||
|
||||
1 ** 2;
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/expected.js
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/expected.js
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
require("core-js/modules/es7.string.pad-start");
|
||||
|
||||
require("core-js/modules/es7.string.pad-end");
|
||||
|
||||
require("core-js/modules/web.timers");
|
||||
|
||||
require("core-js/modules/web.immediate");
|
||||
|
||||
require("core-js/modules/web.dom.iterable");
|
||||
|
||||
1 ** 2;
|
||||
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json
vendored
Normal file
11
experimental/babel-preset-env/test/fixtures/preset-options/use-builtins-require/options.json
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"targets": {
|
||||
"chrome": 55
|
||||
},
|
||||
"modules": false,
|
||||
"useBuiltIns": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
@ -4,4 +4,4 @@ var _a = require("a");
|
||||
|
||||
var _a2 = _interopRequireDefault(_a);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
Loading…
x
Reference in New Issue
Block a user