Skip to content
This repository has been archived by the owner on Feb 1, 2025. It is now read-only.

Commit

Permalink
Adjusted main regenerator package for the refactored runtime/transfor…
Browse files Browse the repository at this point in the history
…m/preset
  • Loading branch information
Andarist committed Aug 3, 2017
1 parent 4f8931e commit 8c46659
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 24 deletions.
8 changes: 4 additions & 4 deletions lib/visit.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ exports.transform = function transform(node, options) {
includeRuntime: false,
presetOptions: {},
});
options.presetOptions.globalRuntimeName = options.includeRuntime === true && "regeneratorRuntime";

var result = require("babel-core").transformFromAst(node, null, {
presets: [["regenerator-preset", options.presetOptions]],
Expand All @@ -39,10 +40,9 @@ function injectRuntime(program) {

// Include the runtime by modifying the AST rather than by concatenating
// strings. This technique will allow for more accurate source mapping.
var runtimePath = require("..").runtime.path;
var runtime = fs.readFileSync(runtimePath, "utf8");
var runtimeBody = recast.parse(runtime, {
sourceFileName: runtimePath
var runtime = require("..").runtime;
var runtimeBody = recast.parse(runtime.getCode(), {
sourceFileName: runtime.path,
}).program.body;

var body = program.body;
Expand Down
51 changes: 38 additions & 13 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@

var fs = require("fs");
var through = require("through");
var babel = require("babel-core");
var babylon = require("babylon");
var traverse = require("babel-traverse").default;
var generate = require("babel-generator").default;
var transform = require("./lib/visit").transform;
var utils = require("./lib/util");
var genOrAsyncFunExp = /\bfunction\s*\*|\basync\b/;
Expand Down Expand Up @@ -40,23 +44,41 @@ function runtime() {
regeneratorRuntime = require("regenerator-runtime");
}
exports.runtime = runtime;
runtime.path = require("regenerator-runtime/path.js").path;
runtime.path = require.resolve("regenerator-runtime")

var cachedRuntimeCode;
function getRuntimeCode() {
return cachedRuntimeCode ||
(cachedRuntimeCode = fs.readFileSync(runtime.path, "utf8"));
if (cachedRuntimeCode) {
return cachedRuntimeCode;
}
var source = fs.readFileSync(runtime.path, "utf8").replace(/^'use strict';/, "'use strict';\nvar exports = {};");
var ast = babylon.parse(source);

traverse(ast, {
Program: function (path) {
path.scope.rename("exports", "regeneratorRuntime");
},
});

return (cachedRuntimeCode = generate(ast).code);
}
runtime.getCode = getRuntimeCode;

var getTransformOptions = function (opts) {
opts = utils.defaults(opts || {}, {
strict: false
});

var transformOptions = {
presets: [["regenerator-preset", { strict: false }]],
parserOpts: {
sourceType: "module",
allowImportExportEverywhere: true,
allowReturnOutsideFunction: true,
allowSuperOutsideMethod: true,
strictMode: false,
plugins: ["*", "jsx", "flow"]
return {
presets: [["regenerator-preset", opts]],
parserOpts: {
sourceType: "module",
allowImportExportEverywhere: true,
allowReturnOutsideFunction: true,
allowSuperOutsideMethod: true,
strictMode: false,
plugins: ["*", "jsx", "flow"]
}
}
};

Expand All @@ -69,7 +91,10 @@ function compile(source, options) {

// Shortcut: Transform only if generators or async functions present.
if (genOrAsyncFunExp.test(source)) {
result = require("babel-core").transform(source, transformOptions);
var globalRuntimeName = options.includeRuntime === true && "regeneratorRuntime";
result = babel.transform(source, getTransformOptions({
globalRuntimeName: globalRuntimeName,
}));
} else {
result = { code: source };
}
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
},
"dependencies": {
"babel-core": "^6.18.2",
"babel-generator": "^6.25.0",
"babel-plugin-syntax-async-functions": "^6.13.0",
"babel-plugin-syntax-async-generators": "^6.13.0",
"babel-plugin-transform-es2015-arrow-functions": "^6.8.0",
Expand All @@ -39,7 +40,9 @@
"babel-plugin-transform-es2015-for-of": "^6.18.0",
"babel-plugin-transform-es2015-modules-commonjs": "^6.24.1",
"babel-runtime": "^6.18.0",
"babel-traverse": "^6.25.0",
"babel-types": "^6.19.0",
"babylon": "^6.14.1",
"commoner": "^0.10.8",
"private": "^0.1.6",
"recast": "^0.11.17",
Expand All @@ -56,7 +59,6 @@
"babel-plugin-transform-es2015-spread": "^6.22.0",
"babel-plugin-transform-runtime": "^6.9.0",
"babel-preset-env": "^1.2.2",
"babylon": "^6.14.1",
"cross-env": "^5.0.1",
"install": "^0.10.1",
"lerna": "^2.0.0",
Expand Down
3 changes: 2 additions & 1 deletion packages/regenerator-preset/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ module.exports = {
var modules = opts.modules !== undefined ? opts.modules : true;
var loose = opts.loose !== undefined ? opts.loose : false;
var strict = opts.strict !== undefined ? opts.strict : true;
var globalRuntimeName = opts.globalRuntimeName !== undefined ? opts.globalRuntimeName : false;

var plugins = [
require("babel-plugin-syntax-async-functions"),
Expand All @@ -12,7 +13,7 @@ module.exports = {
require("babel-plugin-transform-es2015-arrow-functions"),
require("babel-plugin-transform-es2015-block-scoping"),
require("babel-plugin-transform-es2015-for-of"),
require("regenerator-transform").default
["regenerator-transform", { globalRuntimeName: globalRuntimeName }]
];

if (modules) {
Expand Down
4 changes: 0 additions & 4 deletions packages/regenerator-runtime/path.js

This file was deleted.

2 changes: 1 addition & 1 deletion packages/regenerator-transform/src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import * as t from "babel-types";

export function runtimeProperty(state, name) {
return t.memberExpression(
state.get("regeneratorRuntime"),
state.get("globalRuntimeName") || state.get("regeneratorRuntime"),
t.identifier(name),
false
);
Expand Down
4 changes: 4 additions & 0 deletions packages/regenerator-transform/src/visit.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ let getMarkInfo = require("private").makeAccessor();
exports.name = "regenerator-transform";

exports.pre = function (file) {
var globalRuntimeName = this.opts.globalRuntimeName
if (typeof globalRuntimeName === "string") {
this.set("globalRuntimeName", t.identifier(globalRuntimeName));
}
this.setDynamic("regeneratorRuntime", function () {
return file.addImport("regenerator-runtime", "*", "regeneratorRuntime");
})
Expand Down

0 comments on commit 8c46659

Please sign in to comment.