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 dist
.package.json .package.json
packages/babel-runtime/*.js packages/babel-runtime/*.js
packages/babel-runtime/helpers/*.js
packages/babel-runtime/regenerator/*.js packages/babel-runtime/regenerator/*.js
lib lib

View File

View File

@ -1,11 +1,12 @@
"use strict"; "use strict";
var transform = require("../lib/babel/transformation"); var transform = require("../lib/babel/transformation");
var buildHelpers = require("../lib/babel/build-helpers"); var each = require("lodash/collection/each");
var util = require("../lib/babel/util"); var File = require("../lib/babel/transformation/file");
var fs = require("fs"); var util = require("../lib/babel/util");
var t = require("../lib/babel/types"); var fs = require("fs");
var _ = require("lodash"); var t = require("../lib/babel/types");
var _ = require("lodash");
var relative = function (filename) { var relative = function (filename) {
return __dirname + "/babel-runtime/" + filename; return __dirname + "/babel-runtime/" + filename;
@ -39,22 +40,26 @@ var updatePackage = function () {
var selfContainify = function (code) { var selfContainify = function (code) {
return transform(code, { return transform(code, {
optional: ["selfContained"] optional: ["runtime"]
}).code; }).code;
}; };
var buildHelpers2 = function () { var buildHelper = function (helperName) {
var body = util.template("self-contained-helpers-head"); var tree = t.program(
var tree = t.program(body); util.template("self-contained-helpers-head", {
HELPER: util.template(helperName)
buildHelpers(body, t.identifier("helpers")); })
);
return transform.fromAst(tree, null, { return transform.fromAst(tree, null, {
optional: ["selfContained"] optional: ["runtime"]
}).code; }).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("core-js.js", readFile("core-js/library", true));
writeFile("regenerator/index.js", readFile("regenerator-babel/runtime-module", true)); writeFile("regenerator/index.js", readFile("regenerator-babel/runtime-module", true));
writeFile("regenerator/runtime.js", selfContainify(readFile("regenerator-babel/runtime"))); 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 generator from "./generation";
import * as messages from "./messages"; import * as messages from "./messages";
import * as util from "./util"; import * as util from "./util";
import File from "./transformation/file";
import each from "lodash/collection/each";
import t from "./types"; import t from "./types";
function buildGlobal(namespace, builder) { function buildGlobal(namespace, builder) {
@ -49,8 +50,20 @@ function buildVar(namespace, builder) {
return t.program(body); 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") { export default function (whitelist, outputType = "global") {
var namespace = t.identifier("babelHelpers"); var namespace = t.identifier("babelHelpers");
var builder = function (body) { var builder = function (body) {
return buildHelpers(body, namespace, whitelist); 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; this.usedHelpers[name] = true;
var generator = this.get("helperGenerator");
var runtime = this.get("helpersNamespace"); var runtime = this.get("helpersNamespace");
if (runtime) { if (runtime || generator) {
name = t.identifier(t.toIdentifier(name)); var id = t.identifier(t.toIdentifier(name));
return t.memberExpression(runtime, name); if (generator) {
return generator(name, id);
} else {
return t.memberExpression(runtime, id);
}
} else { } else {
var ref = util.template(name); var ref = util.template(name);
ref._compact = true; ref._compact = true;

View File

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

View File

@ -81,8 +81,8 @@ export function Program(node, parent, scope, file) {
} }
export function pre(file) { export function pre(file) {
file.setDynamic("helpersNamespace", function () { file.set("helperGenerator", function (name, id) {
return file.addImport("babel-runtime/helpers", "babelHelpers"); return file.addImport("babel-runtime/helpers/" + name, id);
}); });
file.setDynamic("coreIdentifier", function () { 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 _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() { var giveWord = _regeneratorRuntime.mark(function giveWord() {
return _regeneratorRuntime.wrap(function giveWord$(context$1$0) { return _regeneratorRuntime.wrap(function giveWord$(context$1$0) {
@ -24,9 +24,9 @@ exports.giveWord = giveWord;
var _someModule = require("someModule"); 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"); var myWord = _core.Symbol("abc");
exports.myWord = myWord; 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"; "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"; "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) { System.register(["babel-runtime/helpers/to-consumable-array"], function (_export) {
var _babelHelpers; var _toConsumableArray;
return { return {
setters: [function (_babelRuntimeHelpers) { setters: [function (_babelRuntimeHelpersToConsumableArray) {
_babelHelpers = _babelRuntimeHelpers["default"]; _toConsumableArray = _babelRuntimeHelpersToConsumableArray["default"];
}], }],
execute: function () { execute: function () {
"use strict"; "use strict";
foo.apply(undefined, _babelHelpers.toConsumableArray(bar)); foo.apply(undefined, _toConsumableArray(bar));
} }
}; };
}); });

View File

@ -1,13 +1,13 @@
(function (factory) { (function (factory) {
if (typeof define === "function" && define.amd) { 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") { } 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"; "use strict";
var _babelHelpers = _babelRuntimeHelpers["default"]; var _interopRequire = _babelRuntimeHelpersInteropRequire["default"];
var foo = _babelHelpers.interopRequire(_foo); var foo = _interopRequire(_foo);
}); });