From 491dc2cd3f2164e95d9bab24cb9b08b129fa45fd Mon Sep 17 00:00:00 2001 From: Artem Yavorsky Date: Wed, 8 Mar 2017 21:43:09 +0200 Subject: [PATCH] Add typed array methods to built-ins features. --- data/built-in-features.js | 65 ++++++-- data/built-ins.json | 143 ++++++++---------- test/debug-fixtures/builtins/stdout.txt | 10 +- .../specific-targets/stdout.txt | 10 +- .../preset-options/ie-11-built-ins/actual.js | 1 + .../ie-11-built-ins/expected.js | 84 ++++++++++ .../ie-11-built-ins/options.json | 12 ++ .../fixtures/preset-options/ios-6/expected.js | 8 + .../use-builtins-chrome-48/expected.js | 9 ++ .../use-builtins-chrome-49/expected.js | 9 ++ 10 files changed, 260 insertions(+), 91 deletions(-) create mode 100644 test/fixtures/preset-options/ie-11-built-ins/actual.js create mode 100644 test/fixtures/preset-options/ie-11-built-ins/expected.js create mode 100644 test/fixtures/preset-options/ie-11-built-ins/options.json diff --git a/data/built-in-features.js b/data/built-in-features.js index 0ca96d8d..66e05b52 100644 --- a/data/built-in-features.js +++ b/data/built-in-features.js @@ -1,22 +1,69 @@ // https://github.com/zloirock/core-js +const typedArrayMethods = [ + "typed arrays / %TypedArray%.from", + "typed arrays / %TypedArray%.of", + "typed arrays / %TypedArray%.prototype.subarray", + "typed arrays / %TypedArray%.prototype.join", + "typed arrays / %TypedArray%.prototype.indexOf", + "typed arrays / %TypedArray%.prototype.lastIndexOf", + "typed arrays / %TypedArray%.prototype.slice", + "typed arrays / %TypedArray%.prototype.every", + "typed arrays / %TypedArray%.prototype.filter", + "typed arrays / %TypedArray%.prototype.forEach", + "typed arrays / %TypedArray%.prototype.map", + "typed arrays / %TypedArray%.prototype.reduce", + "typed arrays / %TypedArray%.prototype.reduceRight", + "typed arrays / %TypedArray%.prototype.reverse", + "typed arrays / %TypedArray%.prototype.some", + "typed arrays / %TypedArray%.prototype.sort", + "typed arrays / %TypedArray%.prototype.copyWithin", + "typed arrays / %TypedArray%.prototype.find", + "typed arrays / %TypedArray%.prototype.findIndex", + "typed arrays / %TypedArray%.prototype.fill", + "typed arrays / %TypedArray%.prototype.keys", + "typed arrays / %TypedArray%.prototype.values", + "typed arrays / %TypedArray%.prototype.entries", + "typed arrays / %TypedArray%.prototype[Symbol.iterator]", + "typed arrays / %TypedArray%[Symbol.species]" +]; + 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.typed.int8-array": { + features: ["typed arrays / Int8Array"].concat(typedArrayMethods) + }, + "es6.typed.uint8-array": { + features: ["typed arrays / Uint8Array"].concat(typedArrayMethods) + }, + "es6.typed.uint8-clamped-array": { + features: ["typed arrays / Uint8ClampedArray"].concat(typedArrayMethods) + }, + "es6.typed.int16-array": { + features: ["typed arrays / Int16Array"].concat(typedArrayMethods) + }, + "es6.typed.uint16-array": { + features: ["typed arrays / Uint16Array"].concat(typedArrayMethods) + }, + "es6.typed.int32-array": { + features: ["typed arrays / Int32Array"].concat(typedArrayMethods) + }, + "es6.typed.uint32-array": { + features: ["typed arrays / Uint32Array"].concat(typedArrayMethods) + }, + "es6.typed.float32-array": { + features: ["typed arrays / Float32Array"].concat(typedArrayMethods) + }, + "es6.typed.float64-array": { + features: ["typed arrays / Float64Array"].concat(typedArrayMethods) + }, "es6.map": "Map", "es6.set": "Set", "es6.weak-map": "WeakMap", "es6.weak-set": "WeakSet", + // Proxy not implementable "es6.reflect.apply": "Reflect / Reflect.apply", diff --git a/data/built-ins.json b/data/built-ins.json index f2e7f815..37c96bcf 100644 --- a/data/built-ins.json +++ b/data/built-ins.json @@ -11,102 +11,85 @@ "ios": 6 }, "es6.typed.int8-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.uint8-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.uint8-clamped-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 6, - "node": 0.12, - "android": 4.4, - "ios": 7 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.int16-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.uint16-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.int32-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.uint32-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.float32-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.typed.float64-array": { - "chrome": 5, - "opera": 12, - "edge": 12, - "firefox": 4, - "safari": 5, - "node": 0.12, - "ie": 10, - "android": 4.1, - "ios": 6 + "chrome": 51, + "edge": 13, + "firefox": 48, + "safari": 10, + "node": 6.5, + "ios": 10, + "opera": 38 }, "es6.map": { "chrome": 51, diff --git a/test/debug-fixtures/builtins/stdout.txt b/test/debug-fixtures/builtins/stdout.txt index 6c780623..6c5c4d0b 100644 --- a/test/debug-fixtures/builtins/stdout.txt +++ b/test/debug-fixtures/builtins/stdout.txt @@ -35,7 +35,15 @@ Using plugins: syntax-trailing-function-commas {"chrome":54,"ie":10,"node":6} Using polyfills: - es6.typed.uint8-clamped-array {"ie":10} + es6.typed.int8-array {"ie":10,"node":6} + es6.typed.uint8-array {"ie":10,"node":6} + es6.typed.uint8-clamped-array {"ie":10,"node":6} + es6.typed.int16-array {"ie":10,"node":6} + es6.typed.uint16-array {"ie":10,"node":6} + es6.typed.int32-array {"ie":10,"node":6} + es6.typed.uint32-array {"ie":10,"node":6} + es6.typed.float32-array {"ie":10,"node":6} + es6.typed.float64-array {"ie":10,"node":6} es6.map {"ie":10,"node":6} es6.set {"ie":10,"node":6} es6.weak-map {"ie":10,"node":6} diff --git a/test/debug-fixtures/specific-targets/stdout.txt b/test/debug-fixtures/specific-targets/stdout.txt index 0a85010d..27609b54 100644 --- a/test/debug-fixtures/specific-targets/stdout.txt +++ b/test/debug-fixtures/specific-targets/stdout.txt @@ -38,7 +38,15 @@ Using plugins: syntax-trailing-function-commas {"chrome":54,"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} Using polyfills: - es6.typed.uint8-clamped-array {"ie":10} + es6.typed.int8-array {"ie":10,"ios":9,"safari":7} + es6.typed.uint8-array {"ie":10,"ios":9,"safari":7} + es6.typed.uint8-clamped-array {"ie":10,"ios":9,"safari":7} + es6.typed.int16-array {"ie":10,"ios":9,"safari":7} + es6.typed.uint16-array {"ie":10,"ios":9,"safari":7} + es6.typed.int32-array {"ie":10,"ios":9,"safari":7} + es6.typed.uint32-array {"ie":10,"ios":9,"safari":7} + es6.typed.float32-array {"ie":10,"ios":9,"safari":7} + es6.typed.float64-array {"ie":10,"ios":9,"safari":7} es6.map {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} es6.set {"edge":13,"firefox":49,"ie":10,"ios":9,"safari":7} es6.weak-map {"edge":13,"firefox":49,"ie":10,"safari":7} diff --git a/test/fixtures/preset-options/ie-11-built-ins/actual.js b/test/fixtures/preset-options/ie-11-built-ins/actual.js new file mode 100644 index 00000000..d3984c50 --- /dev/null +++ b/test/fixtures/preset-options/ie-11-built-ins/actual.js @@ -0,0 +1 @@ +import "babel-polyfill"; diff --git a/test/fixtures/preset-options/ie-11-built-ins/expected.js b/test/fixtures/preset-options/ie-11-built-ins/expected.js new file mode 100644 index 00000000..c0102226 --- /dev/null +++ b/test/fixtures/preset-options/ie-11-built-ins/expected.js @@ -0,0 +1,84 @@ +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.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"; +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 "regenerator-runtime/runtime"; diff --git a/test/fixtures/preset-options/ie-11-built-ins/options.json b/test/fixtures/preset-options/ie-11-built-ins/options.json new file mode 100644 index 00000000..593a23c5 --- /dev/null +++ b/test/fixtures/preset-options/ie-11-built-ins/options.json @@ -0,0 +1,12 @@ +{ + "presets": [ + ["../../../../lib", { + "targets": { + "ie": 11 + }, + "modules": false, + "useBuiltIns": true, + "modules": false + }] + ] +} diff --git a/test/fixtures/preset-options/ios-6/expected.js b/test/fixtures/preset-options/ios-6/expected.js index 3312288a..1e0710e1 100644 --- a/test/fixtures/preset-options/ios-6/expected.js +++ b/test/fixtures/preset-options/ios-6/expected.js @@ -1,4 +1,12 @@ +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"; diff --git a/test/fixtures/preset-options/use-builtins-chrome-48/expected.js b/test/fixtures/preset-options/use-builtins-chrome-48/expected.js index d05a5f07..a999f888 100644 --- a/test/fixtures/preset-options/use-builtins-chrome-48/expected.js +++ b/test/fixtures/preset-options/use-builtins-chrome-48/expected.js @@ -1,3 +1,12 @@ +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"; diff --git a/test/fixtures/preset-options/use-builtins-chrome-49/expected.js b/test/fixtures/preset-options/use-builtins-chrome-49/expected.js index 9f8a019a..f68f7468 100644 --- a/test/fixtures/preset-options/use-builtins-chrome-49/expected.js +++ b/test/fixtures/preset-options/use-builtins-chrome-49/expected.js @@ -1,3 +1,12 @@ +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";