move runtime helpers to separate modules - babel/ember-cli-babel#24

This commit is contained in:
Sebastian McKenzie 2015-03-08 04:04:40 +11:00
parent 958fa282f4
commit 6f53980bfc
13 changed files with 63 additions and 54 deletions

1
.gitignore vendored
View File

@ -12,5 +12,6 @@ coverage
dist
.package.json
packages/babel-runtime/*.js
packages/babel-runtime/helpers/*.js
packages/babel-runtime/regenerator/*.js
lib

View File

View File

@ -1,11 +1,12 @@
"use strict";
var transform = require("../lib/babel/transformation");
var buildHelpers = require("../lib/babel/build-helpers");
var util = require("../lib/babel/util");
var fs = require("fs");
var t = require("../lib/babel/types");
var _ = require("lodash");
var transform = require("../lib/babel/transformation");
var each = require("lodash/collection/each");
var File = require("../lib/babel/transformation/file");
var util = require("../lib/babel/util");
var fs = require("fs");
var t = require("../lib/babel/types");
var _ = require("lodash");
var relative = function (filename) {
return __dirname + "/babel-runtime/" + filename;
@ -39,22 +40,26 @@ var updatePackage = function () {
var selfContainify = function (code) {
return transform(code, {
optional: ["selfContained"]
optional: ["runtime"]
}).code;
};
var buildHelpers2 = function () {
var body = util.template("self-contained-helpers-head");
var tree = t.program(body);
buildHelpers(body, t.identifier("helpers"));
var buildHelper = function (helperName) {
var tree = t.program(
util.template("self-contained-helpers-head", {
HELPER: util.template(helperName)
})
);
return transform.fromAst(tree, null, {
optional: ["selfContained"]
optional: ["runtime"]
}).code;
};
writeFile("helpers.js", buildHelpers2());
each(File.helpers, function (helperName) {
writeFile("helpers/" + helperName + ".js", buildHelper(helperName));
});
writeFile("core-js.js", readFile("core-js/library", true));
writeFile("regenerator/index.js", readFile("regenerator-babel/runtime-module", true));
writeFile("regenerator/runtime.js", selfContainify(readFile("regenerator-babel/runtime")));

View File

@ -1,7 +1,8 @@
import buildHelpers from "./build-helpers";
import generator from "./generation";
import * as messages from "./messages";
import * as util from "./util";
import File from "./transformation/file";
import each from "lodash/collection/each";
import t from "./types";
function buildGlobal(namespace, builder) {
@ -49,8 +50,20 @@ function buildVar(namespace, builder) {
return t.program(body);
}
function buildHelpers(body, namespace, whitelist = []) {
each(File.helpers, function (name) {
if (whitelist.length && whitelist.indexOf(name) === -1) return;
var key = t.identifier(t.toIdentifier(name));
body.push(t.expressionStatement(
t.assignmentExpression("=", t.memberExpression(namespace, key), util.template(name))
));
});
}
export default function (whitelist, outputType = "global") {
var namespace = t.identifier("babelHelpers");
var builder = function (body) {
return buildHelpers(body, namespace, whitelist);
};

View File

@ -1,15 +0,0 @@
import File from "./transformation/file";
import * as util from "./util";
import each from "lodash/collection/each";
import t from "./types";
export default function (body, namespace, whitelist = []) {
each(File.helpers, function (name) {
if (whitelist.length && whitelist.indexOf(name) === -1) return;
var key = t.identifier(t.toIdentifier(name));
body.push(t.expressionStatement(
t.assignmentExpression("=", t.memberExpression(namespace, key), util.template(name))
));
});
};

View File

@ -377,10 +377,15 @@ export default class File {
this.usedHelpers[name] = true;
var generator = this.get("helperGenerator");
var runtime = this.get("helpersNamespace");
if (runtime) {
name = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, name);
if (runtime || generator) {
var id = t.identifier(t.toIdentifier(name));
if (generator) {
return generator(name, id);
} else {
return t.memberExpression(runtime, id);
}
} else {
var ref = util.template(name);
ref._compact = true;

View File

@ -1,2 +1,2 @@
var helpers = exports.default = {};
exports.default = HELPER;
exports.__esModule = true;

View File

@ -81,8 +81,8 @@ export function Program(node, parent, scope, file) {
}
export function pre(file) {
file.setDynamic("helpersNamespace", function () {
return file.addImport("babel-runtime/helpers", "babelHelpers");
file.set("helperGenerator", function (name, id) {
return file.addImport("babel-runtime/helpers/" + name, id);
});
file.setDynamic("coreIdentifier", function () {

View File

@ -4,7 +4,7 @@ var _core = require("babel-runtime/core-js")["default"];
var _regeneratorRuntime = require("babel-runtime/regenerator")["default"];
var _babelHelpers = require("babel-runtime/helpers")["default"];
var _interopRequire = require("babel-runtime/helpers/interop-require")["default"];
var giveWord = _regeneratorRuntime.mark(function giveWord() {
return _regeneratorRuntime.wrap(function giveWord$(context$1$0) {
@ -24,9 +24,9 @@ exports.giveWord = giveWord;
var _someModule = require("someModule");
var foo = _babelHelpers.interopRequire(_someModule);
var foo = _interopRequire(_someModule);
var bar = _babelHelpers.interopRequireWildcard(_someModule);
var bar = _interopRequire(_someModule);
var myWord = _core.Symbol("abc");
exports.myWord = myWord;

View File

@ -1,7 +1,7 @@
define(["exports", "foo", "babel-runtime/helpers"], function (exports, _foo, _babelRuntimeHelpers) {
define(["exports", "foo", "babel-runtime/helpers/interop-require"], function (exports, _foo, _babelRuntimeHelpersInteropRequire) {
"use strict";
var _babelHelpers = _babelRuntimeHelpers["default"];
var _interopRequire = _babelRuntimeHelpersInteropRequire["default"];
var foo = _babelHelpers.interopRequire(_foo);
var foo = _interopRequire(_foo);
});

View File

@ -1,5 +1,5 @@
"use strict";
var _babelHelpers = require("babel-runtime/helpers")["default"];
var _interopRequire = require("babel-runtime/helpers/interop-require")["default"];
var foo = _babelHelpers.interopRequire(require("foo"));
var foo = _interopRequire(require("foo"));

View File

@ -1,14 +1,14 @@
System.register(["babel-runtime/helpers"], function (_export) {
var _babelHelpers;
System.register(["babel-runtime/helpers/to-consumable-array"], function (_export) {
var _toConsumableArray;
return {
setters: [function (_babelRuntimeHelpers) {
_babelHelpers = _babelRuntimeHelpers["default"];
setters: [function (_babelRuntimeHelpersToConsumableArray) {
_toConsumableArray = _babelRuntimeHelpersToConsumableArray["default"];
}],
execute: function () {
"use strict";
foo.apply(undefined, _babelHelpers.toConsumableArray(bar));
foo.apply(undefined, _toConsumableArray(bar));
}
};
});

View File

@ -1,13 +1,13 @@
(function (factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "foo", "babel-runtime/helpers"], factory);
define(["exports", "foo", "babel-runtime/helpers/interop-require"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("foo"), require("babel-runtime/helpers"));
factory(exports, require("foo"), require("babel-runtime/helpers/interop-require"));
}
})(function (exports, _foo, _babelRuntimeHelpers) {
})(function (exports, _foo, _babelRuntimeHelpersInteropRequire) {
"use strict";
var _babelHelpers = _babelRuntimeHelpers["default"];
var _interopRequire = _babelRuntimeHelpersInteropRequire["default"];
var foo = _babelHelpers.interopRequire(_foo);
var foo = _interopRequire(_foo);
});