diff --git a/doc/polyfill.md b/doc/polyfill.md index 569d70bcd9..a97e334fb7 100644 --- a/doc/polyfill.md +++ b/doc/polyfill.md @@ -1,12 +1,11 @@ # Polyfill -6to5 includes a polyfill that includes the -[regenerator runtime](https://github.com/facebook/regenerator/blob/master/runtime.js) and the -[es6-shim](https://github.com/paulmillr/es6-shim) and -[es6-symbol](https://github.com/medikoo/es6-symbol) polyfills. +6to5 includes a polyfill that includes a custom +[regenerator runtime](https://github.com/facebook/regenerator/blob/master/runtime.js) and +[core.js](https://github.com/zloirock/core-js). This will emulate a full ES6 environment. This polyfill is automatically loaded -when using [6to5-node](usage.md#node). +when using [6to5-node](usage.md#node) and [6to5/register](usage.md#register-hook). ## Usage diff --git a/lib/6to5/polyfill.js b/lib/6to5/polyfill.js index 56142ab93b..ae3dbbe0e1 100644 --- a/lib/6to5/polyfill.js +++ b/lib/6to5/polyfill.js @@ -1,53 +1,2 @@ -/* jshint newcap: false, freeze: false */ - -var ensureSymbol = function (key) { - Symbol[key] = Symbol[key] || Symbol(key); -}; - -var ensureProto = function (Constructor, key, val) { - var proto = Constructor.prototype; - if (!proto[key]) { - Object.defineProperty(proto, key, { - value: val - }); - } -}; - -// - -if (typeof Symbol === "undefined") { - require("es6-symbol/implement"); - - var globSymbols = {}; - - Symbol.for = function (key) { - return globSymbols[key] = globSymbols[key] || Symbol(key); - }; - - Symbol.keyFor = function (sym) { - return sym.__description__; - }; -} - -require("es6-shim"); -require("regenerator/runtime"); - -ensureSymbol("species"); - -// Abstract references - -ensureSymbol("referenceGet"); -ensureSymbol("referenceSet"); -ensureSymbol("referenceDelete"); - -ensureProto(Function, Symbol.referenceGet, function () { return this; }); - -ensureProto(Map, Symbol.referenceGet, Map.prototype.get); -ensureProto(Map, Symbol.referenceSet, Map.prototype.set); -ensureProto(Map, Symbol.referenceDelete, Map.prototype.delete); - -if (global.WeakMap) { - ensureProto(WeakMap, Symbol.referenceGet, WeakMap.prototype.get); - ensureProto(WeakMap, Symbol.referenceSet, WeakMap.prototype.set); - ensureProto(WeakMap, Symbol.referenceDelete, WeakMap.prototype.delete); -} +require("core-js/shim"); +require("./transformation/transformers/es6-generators/runtime"); diff --git a/package.json b/package.json index 77dcca580e..259877b7a9 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,7 @@ "ast-types": "~0.6.1", "chokidar": "0.11.1", "commander": "2.5.0", - "es6-shim": "0.21.0", - "es6-symbol": "0.1.1", + "core-js": "^0.2.2", "estraverse": "1.8.0", "esutils": "1.1.6", "fs-readdir-recursive": "0.1.0", diff --git a/test/transformation.js b/test/transformation.js index ca03b78af1..8bed3f56c1 100644 --- a/test/transformation.js +++ b/test/transformation.js @@ -7,6 +7,8 @@ var chai = require("chai"); var util = require("../lib/6to5/util"); var _ = require("lodash"); +require("../lib/6to5/polyfill"); + var run = function (task, done) { var actual = task.actual; var expect = task.expect; @@ -26,8 +28,6 @@ var run = function (task, done) { result = transform(execCode, getOpts(exec)); execCode = result.code; - require("../lib/6to5/polyfill"); - try { var fn = new Function("assert", "done", "genHelpers", execCode); fn(assert, done, genHelpers);