restructure transformers into multiple categories
This commit is contained in:
parent
8f52229a86
commit
ba516901af
@ -9,7 +9,7 @@ import transformers from "./transformers";
|
||||
for (var key in transformers) {
|
||||
var transformer = transformers[key];
|
||||
var metadata = transformer.metadata = transformer.metadata || {};
|
||||
metadata.category = metadata.category || "builtin";
|
||||
metadata.category = metadata.category || "builtin-basic";
|
||||
}
|
||||
|
||||
pipeline.addTransformers(transformers);
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import * as t from "../../../types";
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-cleanup"
|
||||
};
|
||||
|
||||
export var MemberExpression = {
|
||||
exit(node) {
|
||||
var prop = node.property;
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import * as t from "../../../types";
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-cleanup"
|
||||
};
|
||||
|
||||
export var Property = {
|
||||
exit(node) {
|
||||
var key = node.key;
|
||||
|
||||
@ -37,6 +37,10 @@ function standardizeLets(declars) {
|
||||
}
|
||||
}
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-advanced"
|
||||
};
|
||||
|
||||
export function VariableDeclaration(node, parent, scope, file) {
|
||||
if (!isLet(node, parent)) return;
|
||||
|
||||
|
||||
@ -8,6 +8,10 @@ function keepBlockHoist(node, nodes) {
|
||||
}
|
||||
}
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-modules"
|
||||
};
|
||||
|
||||
export function ImportDeclaration(node, parent, scope, file) {
|
||||
// flow type
|
||||
if (node.isType) return;
|
||||
|
||||
@ -28,7 +28,8 @@ var visitor = traverse.explode({
|
||||
});
|
||||
|
||||
export var metadata = {
|
||||
optional: true
|
||||
optional: true,
|
||||
category: "builtin-advanced"
|
||||
};
|
||||
|
||||
export var BlockStatement = {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
export default {
|
||||
// builtin-basic
|
||||
"utility.removeDebugger": require("./utility/remove-debugger"),
|
||||
"utility.removeConsole": require("./utility/remove-console"),
|
||||
"utility.inlineEnvironmentVariables": require("./utility/inline-environment-variables"),
|
||||
@ -41,26 +42,32 @@ export default {
|
||||
"es6.spread": require("./es6/spread"),
|
||||
"es6.parameters.default": require("./es6/parameters.default"),
|
||||
"es6.destructuring": require("./es6/destructuring"),
|
||||
"es6.blockScoping": require("./es6/block-scoping"),
|
||||
"es6.spec.blockScoping": require("./es6/spec.block-scoping"),
|
||||
"es6.tailCall": require("./es6/tail-call"),
|
||||
regenerator: require("./other/regenerator"),
|
||||
runtime: require("./other/runtime"),
|
||||
"es7.exportExtensions": require("./es7/export-extensions"),
|
||||
"es6.modules": require("./es6/modules"),
|
||||
"spec.protoToAssign": require("./spec/proto-to-assign"),
|
||||
_shadowFunctions: require("./internal/shadow-functions"),
|
||||
"es7.doExpressions": require("./es7/do-expressions"),
|
||||
"es6.spec.symbols": require("./es6/spec.symbols"),
|
||||
ludicrous: require("./other/ludicrous"),
|
||||
"spec.undefinedToVoid": require("./spec/undefined-to-void"),
|
||||
jscript: require("./other/jscript"),
|
||||
flow: require("./other/flow"),
|
||||
_hoistDirectives: require("./internal/hoist-directives"),
|
||||
|
||||
// builtin-modules
|
||||
"es6.modules": require("./es6/modules"),
|
||||
regenerator: require("./other/regenerator"),
|
||||
runtime: require("./other/runtime"),
|
||||
_moduleFormatter: require("./internal/module-formatter"),
|
||||
|
||||
// builtin-advanced
|
||||
"es6.blockScoping": require("./es6/block-scoping"),
|
||||
"es6.spec.blockScoping": require("./es6/spec.block-scoping"),
|
||||
|
||||
// builtin-cleanup
|
||||
"es3.propertyLiterals": require("./es3/property-literals"),
|
||||
"es3.memberExpressionLiterals": require("./es3/member-expression-literals"),
|
||||
"minification.memberExpressionLiterals": require("./minification/member-expression-literals"),
|
||||
"minification.propertyLiterals": require("./minification/property-literals"),
|
||||
jscript: require("./other/jscript"),
|
||||
flow: require("./other/flow"),
|
||||
_hoistDirectives: require("./internal/hoist-directives"),
|
||||
_blockHoist: require("./internal/block-hoist")
|
||||
_blockHoist: require("./internal/block-hoist"),
|
||||
};
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import sortBy from "lodash/collection/sortBy";
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-cleanup"
|
||||
};
|
||||
|
||||
// Priority:
|
||||
//
|
||||
// - 0 We want this to be at the **very** bottom
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
import * as strict from "../../helpers/strict";
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-modules"
|
||||
};
|
||||
|
||||
export var Program = {
|
||||
exit(program, parent, scope, file) {
|
||||
strict.wrap(program, function () {
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import * as t from "../../../types";
|
||||
|
||||
export var metadata = {
|
||||
optional: true
|
||||
optional: true,
|
||||
category: "builtin-cleanup"
|
||||
};
|
||||
|
||||
export var MemberExpression = {
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
import * as t from "../../../types";
|
||||
|
||||
export var metadata = {
|
||||
optional: true
|
||||
optional: true,
|
||||
category: "builtin-cleanup"
|
||||
};
|
||||
|
||||
export var Property = {
|
||||
|
||||
@ -6,7 +6,6 @@ export function Flow(node) {
|
||||
|
||||
export function ClassProperty(node) {
|
||||
node.typeAnnotation = null;
|
||||
if (!node.value) this.remove();
|
||||
}
|
||||
|
||||
export function Class(node) {
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
import regenerator from "regenerator";
|
||||
import * as t from "../../../types";
|
||||
|
||||
export var metadata = {
|
||||
category: "builtin-modules"
|
||||
};
|
||||
|
||||
export var Program = {
|
||||
exit(ast) {
|
||||
regenerator.transform(ast);
|
||||
|
||||
@ -10,10 +10,11 @@ var isSymbolIterator = t.buildMatchMemberExpression("Symbol.iterator");
|
||||
const RUNTIME_MODULE_NAME = "babel-runtime";
|
||||
|
||||
export var metadata = {
|
||||
optional: true
|
||||
optional: true,
|
||||
category: "builtin-modules"
|
||||
};
|
||||
|
||||
export function pre(file) {
|
||||
export function Program(node, parent, scope, file) {
|
||||
file.set("helperGenerator", function (name) {
|
||||
return file.addImport(`${RUNTIME_MODULE_NAME}/helpers/${name}`, name, "absoluteDefault");
|
||||
});
|
||||
@ -23,8 +24,11 @@ export function pre(file) {
|
||||
});
|
||||
}
|
||||
|
||||
export function Identifier(node, parent, scope, file) {
|
||||
if (!this.isReferenced()) return;
|
||||
export function ReferencedIdentifier(node, parent, scope, file) {
|
||||
if (node.name === "regeneratorRuntime") {
|
||||
return file.get("regeneratorIdentifier");
|
||||
}
|
||||
|
||||
if (t.isMemberExpression(parent)) return;
|
||||
if (!has(definitions.builtins, node.name)) return;
|
||||
if (scope.getBindingIdentifier(node.name)) return;
|
||||
@ -37,14 +41,12 @@ export function Identifier(node, parent, scope, file) {
|
||||
export function CallExpression(node, parent, scope, file) {
|
||||
// arr[Symbol.iterator]() -> _core.$for.getIterator(arr)
|
||||
|
||||
var callee = node.callee;
|
||||
if (node.arguments.length) return;
|
||||
|
||||
var callee = node.callee;
|
||||
if (!t.isMemberExpression(callee)) return;
|
||||
if (!callee.computed) return;
|
||||
|
||||
var prop = callee.property;
|
||||
if (!isSymbolIterator(prop)) return;
|
||||
if (!this.get("callee.property").matchesPattern("Symbol.iterator")) return;
|
||||
|
||||
return t.callExpression(file.addImport(`${RUNTIME_MODULE_NAME}/core-js/get-iterator`, "getIterator", "absoluteDefault"), [callee.object]);
|
||||
}
|
||||
@ -53,9 +55,7 @@ export function BinaryExpression(node, parent, scope, file) {
|
||||
// Symbol.iterator in arr -> core.$for.isIterable(arr)
|
||||
|
||||
if (node.operator !== "in") return;
|
||||
|
||||
var left = node.left;
|
||||
if (!isSymbolIterator(left)) return;
|
||||
if (!this.get("left").matchesPattern("Symbol.iterator")) return;
|
||||
|
||||
return t.callExpression(
|
||||
file.addImport(`${RUNTIME_MODULE_NAME}/core-js/is-iterable`, "isIterable", "absoluteDefault"),
|
||||
@ -103,9 +103,3 @@ export var MemberExpression = {
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
export function Identifier(node, parent, scope, file) {
|
||||
if (this.isReferencedIdentifier({ name: "regeneratorRuntime" })) {
|
||||
return file.get("regeneratorIdentifier");
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user