add namespaces and better structure transformation
This commit is contained in:
parent
e4a030c916
commit
c49438da60
@ -133,10 +133,10 @@ File.normaliseOptions = function (opts) {
|
||||
opts.experimental = true;
|
||||
}
|
||||
|
||||
transform._ensureTransformerNames("blacklist", opts.blacklist);
|
||||
transform._ensureTransformerNames("whitelist", opts.whitelist);
|
||||
transform._ensureTransformerNames("optional", opts.optional);
|
||||
transform._ensureTransformerNames("loose", opts.loose);
|
||||
opts.blacklist = transform._ensureTransformerNames("blacklist", opts.blacklist);
|
||||
opts.whitelist = transform._ensureTransformerNames("whitelist", opts.whitelist);
|
||||
opts.optional = transform._ensureTransformerNames("optional", opts.optional);
|
||||
opts.loose = transform._ensureTransformerNames("loose", opts.loose);
|
||||
|
||||
return opts;
|
||||
};
|
||||
|
||||
10
lib/6to5/transformation/modules/index.js
Normal file
10
lib/6to5/transformation/modules/index.js
Normal file
@ -0,0 +1,10 @@
|
||||
module.exports = {
|
||||
commonStrict: require("./common-strict"),
|
||||
amdStrict: require("./amd-strict"),
|
||||
umdStrict: require("./umd-strict"),
|
||||
common: require("./common"),
|
||||
system: require("./system"),
|
||||
ignore: require("./ignore"),
|
||||
amd: require("./amd"),
|
||||
umd: require("./umd")
|
||||
};
|
||||
@ -22,18 +22,28 @@ transform.fromAst = function (ast, code, opts) {
|
||||
return file.generate();
|
||||
};
|
||||
|
||||
transform._ensureTransformerNames = function (type, keys) {
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var key = keys[i];
|
||||
transform._ensureTransformerNames = function (type, rawKeys) {
|
||||
var keys = [];
|
||||
|
||||
var newKey = transform.deprecatedTransformerMap[key];
|
||||
if (newKey) {
|
||||
for (var i = 0; i < rawKeys.length; i++) {
|
||||
var key = rawKeys[i];
|
||||
|
||||
var deprecatedKey = transform.deprecatedTransformerMap[key];
|
||||
if (deprecatedKey) {
|
||||
// deprecated key, remap it to the new one
|
||||
console.error(
|
||||
"The transformer " + key + " has been renamed to " + newKey +
|
||||
"The transformer " + key + " has been renamed to " + deprecatedKey +
|
||||
" in v3.0.0 - backwards compatibilty will be removed 4.0.0"
|
||||
);
|
||||
keys[i] = newKey;
|
||||
} else if (!transform.transformers[key]) {
|
||||
rawKeys.push(deprecatedKey);
|
||||
} else if (transform.transformers[key]) {
|
||||
// valid key
|
||||
keys.push(key);
|
||||
} else if (transform.namespaces[key]) {
|
||||
// namespace, append all transformers within this namespace
|
||||
keys = keys.concat(transform.namespaces[key]);
|
||||
} else {
|
||||
// invalid key
|
||||
throw new ReferenceError(
|
||||
"Unknown transformer " + key + " specified in " + type + " - " +
|
||||
"transformer key names have been changed in 3.0.0 see " +
|
||||
@ -42,144 +52,22 @@ transform._ensureTransformerNames = function (type, keys) {
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
transform.deprecatedTransformerMap = {
|
||||
specNoForInOfAssignment: "validation.noForInOfAssignment",
|
||||
specSetters: "validation.setters",
|
||||
specBlockScopedFunctions: "spec.blockScopedFunctions",
|
||||
malletOperator: "playground.malletOperator",
|
||||
methodBinding: "playground.methodBinding",
|
||||
memoizationOperator: "playground.memoizationOperator",
|
||||
objectGetterMemoization: "playground.objectGetterMemoization",
|
||||
modules: "es6.modules",
|
||||
propertyNameShorthand: "es6.properties.shorthand",
|
||||
arrayComprehension: "es7.comprehensions",
|
||||
generatorComprehension: "es7.comprehensions",
|
||||
arrowFunctions: "es6.arrowFunctions",
|
||||
classes: "es6.classes",
|
||||
objectSpread: "es7.objectSpread",
|
||||
exponentiationOperator: "es7.exponentiationOperator",
|
||||
spread: "es6.spread",
|
||||
templateLiterals: "es6.templateLiterals",
|
||||
propertyMethodAssignment: "es6.properties.shorthand",
|
||||
computedPropertyNames: "es6.properties.computed",
|
||||
defaultParameters: "es6.parameters.default",
|
||||
restParameters: "es6.parameters.rest",
|
||||
destructuring: "es6.destructuring",
|
||||
forOf: "es6.forOf",
|
||||
unicodeRegex: "es6.unicodeRegex",
|
||||
abstractReferences: "es7.abstractReferences",
|
||||
constants: "es6.constants",
|
||||
letScoping: "es6.letScoping",
|
||||
blockScopingTDZ: "es6.blockScopingTDZ",
|
||||
generators: "regenerator",
|
||||
protoToAssign: "spec.protoToAssign",
|
||||
typeofSymbol: "spec.typeofSymbol",
|
||||
coreAliasing: "selfContained",
|
||||
undefinedToVoid: "spec.undefinedToVoid",
|
||||
undeclaredVariableCheck: "validation.undeclaredVariableCheck",
|
||||
specPropertyLiterals: "minification.propertyLiterals",
|
||||
specMemberExpressionLiterals: "minification.memberExpressionLiterals",
|
||||
return keys;
|
||||
};
|
||||
|
||||
transform.transformers = object();
|
||||
transform.namespaces = object();
|
||||
|
||||
transform.moduleFormatters = {
|
||||
commonStrict: require("./modules/common-strict"),
|
||||
amdStrict: require("./modules/amd-strict"),
|
||||
umdStrict: require("./modules/umd-strict"),
|
||||
common: require("./modules/common"),
|
||||
system: require("./modules/system"),
|
||||
ignore: require("./modules/ignore"),
|
||||
amd: require("./modules/amd"),
|
||||
umd: require("./modules/umd")
|
||||
};
|
||||
transform.deprecatedTransformerMap = require("./transformers/deprecated");
|
||||
transform.moduleFormatters = require("./modules");
|
||||
|
||||
_.each({
|
||||
useStrict: require("./transformers/other/use-strict"),
|
||||
var rawTransformers = require("./transformers");
|
||||
|
||||
"validation.undeclaredVariableCheck": require("./transformers/validation/undeclared-variable-check"),
|
||||
"validation.noForInOfAssignment": require("./transformers/validation/no-for-in-of-assignment"),
|
||||
"validation.setters": require("./transformers/validation/setters"),
|
||||
"spec.blockScopedFunctions": require("./transformers/spec/block-scoped-functions"),
|
||||
_.each(rawTransformers, function (transformer, key) {
|
||||
var namespace = key.split(".")[0];
|
||||
transform.namespaces[namespace] = transform.namespaces[namespace] || [];
|
||||
transform.namespaces[namespace].push(key);
|
||||
|
||||
"playground.malletOperator": require("./transformers/playground/mallet-operator"),
|
||||
"playground.methodBinding": require("./transformers/playground/method-binding"),
|
||||
"playground.memoizationOperator": require("./transformers/playground/memoization-operator"),
|
||||
"playground.objectGetterMemoization": require("./transformers/playground/object-getter-memoization"),
|
||||
|
||||
react: require("./transformers/other/react"),
|
||||
|
||||
_modulesSplit: require("./transformers/_modules-split"),
|
||||
|
||||
// needs to be before `regenerator` due to generator comprehensions
|
||||
// needs to be before `_aliasFunction`
|
||||
"es7.comprehensions": require("./transformers/es7/comprehensions"),
|
||||
|
||||
// needs to be before `_aliasFunction`
|
||||
"es6.arrowFunctions": require("./transformers/es6/arrow-functions"),
|
||||
|
||||
"es6.classes": require("./transformers/es6/classes"),
|
||||
|
||||
asyncToGenerator: require("./transformers/other/async-to-generator"),
|
||||
bluebirdCoroutines: require("./transformers/other/bluebird-coroutines"),
|
||||
|
||||
"es7.objectSpread": require("./transformers/es7/object-spread"),
|
||||
"es7.exponentiationOperator": require("./transformers/es7/exponentiation-operator"),
|
||||
"es6.spread": require("./transformers/es6/spread"),
|
||||
"es6.templateLiterals": require("./transformers/es6/template-literals"),
|
||||
|
||||
"es5.properties.mutators": require("./transformers/es5/properties.mutators"),
|
||||
"es6.properties.shorthand": require("./transformers/es6/properties.shorthand"),
|
||||
|
||||
// needs to be before `_aliasFunction` due to define property closure
|
||||
"es6.properties.computed": require("./transformers/es6/properties.computed"),
|
||||
|
||||
"es6.forOf": require("./transformers/es6/for-of"),
|
||||
|
||||
"es6.unicodeRegex": require("./transformers/es6/unicode-regex"),
|
||||
"es7.abstractReferences": require("./transformers/es7/abstract-references"),
|
||||
|
||||
"es6.constants": require("./transformers/es6/constants"),
|
||||
|
||||
// needs to be before `_aliasFunction` due to block scopes sometimes being wrapped in a
|
||||
// closure
|
||||
"es6.blockScoping": require("./transformers/es6/block-scoping"),
|
||||
|
||||
// needs to be after `es6.blockScoping` due to needing `letReferences` set on blocks
|
||||
"es6.blockScopingTDZ": require("./transformers/es6/block-scoping-tdz"),
|
||||
|
||||
// needs to be after block scoping since regenerator doesn't support it
|
||||
regenerator: require("./transformers/other/regenerator"),
|
||||
|
||||
"es6.parameters.default": require("./transformers/es6/parameters.default"),
|
||||
"es6.parameters.rest": require("./transformers/es6/parameters.rest"),
|
||||
|
||||
"es6.destructuring": require("./transformers/es6/destructuring"),
|
||||
|
||||
// needs to be after `regenerator` due to needing `regeneratorRuntime` references
|
||||
// needs to be after `es6.forOf` due to needing `Symbol.iterator` references
|
||||
// needs to be before `es6.modules` due to dynamic imports
|
||||
selfContained: require("./transformers/other/self-contained"),
|
||||
|
||||
// needs to be before `_blockHoist` due to function hoisting etc
|
||||
"es6.modules": require("./transformers/es6/modules"),
|
||||
|
||||
_blockHoist: require("./transformers/_block-hoist"),
|
||||
|
||||
"spec.protoToAssign": require("./transformers/spec/proto-to-assign"),
|
||||
|
||||
_declarations: require("./transformers/_declarations"),
|
||||
|
||||
_aliasFunctions: require("./transformers/_alias-functions"),
|
||||
_moduleFormatter: require("./transformers/_module-formatter"),
|
||||
|
||||
"spec.typeofSymbol": require("./transformers/spec/typeof-symbol"),
|
||||
"spec.undefinedToVoid": require("./transformers/spec/undefined-to-void"),
|
||||
|
||||
"minification.propertyLiterals": require("./transformers/minification/property-literals"),
|
||||
"minification.memberExpressionLiterals": require("./transformers/minification/member-expression-literals")
|
||||
}, function (transformer, key) {
|
||||
transform.transformers[key] = new Transformer(key, transformer);
|
||||
});
|
||||
|
||||
38
lib/6to5/transformation/transformers/deprecated.json
Normal file
38
lib/6to5/transformation/transformers/deprecated.json
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"specNoForInOfAssignment": "validation.noForInOfAssignment",
|
||||
"specSetters": "validation.setters",
|
||||
"specBlockScopedFunctions": "spec.blockScopedFunctions",
|
||||
"malletOperator": "playground.malletOperator",
|
||||
"methodBinding": "playground.methodBinding",
|
||||
"memoizationOperator": "playground.memoizationOperator",
|
||||
"objectGetterMemoization": "playground.objectGetterMemoization",
|
||||
"modules": "es6.modules",
|
||||
"propertyNameShorthand": "es6.properties.shorthand",
|
||||
"arrayComprehension": "es7.comprehensions",
|
||||
"generatorComprehension": "es7.comprehensions",
|
||||
"arrowFunctions": "es6.arrowFunctions",
|
||||
"classes": "es6.classes",
|
||||
"objectSpread": "es7.objectSpread",
|
||||
"exponentiationOperator": "es7.exponentiationOperator",
|
||||
"spread": "es6.spread",
|
||||
"templateLiterals": "es6.templateLiterals",
|
||||
"propertyMethodAssignment": "es6.properties.shorthand",
|
||||
"computedPropertyNames": "es6.properties.computed",
|
||||
"defaultParameters": "es6.parameters.default",
|
||||
"restParameters": "es6.parameters.rest",
|
||||
"destructuring": "es6.destructuring",
|
||||
"forOf": "es6.forOf",
|
||||
"unicodeRegex": "es6.unicodeRegex",
|
||||
"abstractReferences": "es7.abstractReferences",
|
||||
"constants": "es6.constants",
|
||||
"letScoping": "es6.letScoping",
|
||||
"blockScopingTDZ": "es6.blockScopingTDZ",
|
||||
"generators": "regenerator",
|
||||
"protoToAssign": "spec.protoToAssign",
|
||||
"typeofSymbol": "spec.typeofSymbol",
|
||||
"coreAliasing": "selfContained",
|
||||
"undefinedToVoid": "spec.undefinedToVoid",
|
||||
"undeclaredVariableCheck": "validation.undeclaredVariableCheck",
|
||||
"specPropertyLiterals": "minification.propertyLiterals",
|
||||
"specMemberExpressionLiterals": "minification.memberExpressionLiterals"
|
||||
}
|
||||
85
lib/6to5/transformation/transformers/index.js
Normal file
85
lib/6to5/transformation/transformers/index.js
Normal file
@ -0,0 +1,85 @@
|
||||
module.exports = {
|
||||
useStrict: require("./other/use-strict"),
|
||||
|
||||
"validation.undeclaredVariableCheck": require("./validation/undeclared-variable-check"),
|
||||
"validation.noForInOfAssignment": require("./validation/no-for-in-of-assignment"),
|
||||
"validation.setters": require("./validation/setters"),
|
||||
"spec.blockScopedFunctions": require("./spec/block-scoped-functions"),
|
||||
|
||||
"playground.malletOperator": require("./playground/mallet-operator"),
|
||||
"playground.methodBinding": require("./playground/method-binding"),
|
||||
"playground.memoizationOperator": require("./playground/memoization-operator"),
|
||||
"playground.objectGetterMemoization": require("./playground/object-getter-memoization"),
|
||||
|
||||
react: require("./other/react"),
|
||||
|
||||
_modulesSplit: require("./internal/modules-split"),
|
||||
|
||||
// needs to be before `regenerator` due to generator comprehensions
|
||||
// needs to be before `_aliasFunction`
|
||||
"es7.comprehensions": require("./es7/comprehensions"),
|
||||
|
||||
// needs to be before `_aliasFunction`
|
||||
"es6.arrowFunctions": require("./es6/arrow-functions"),
|
||||
|
||||
"es6.classes": require("./es6/classes"),
|
||||
|
||||
asyncToGenerator: require("./other/async-to-generator"),
|
||||
bluebirdCoroutines: require("./other/bluebird-coroutines"),
|
||||
|
||||
"es7.objectSpread": require("./es7/object-spread"),
|
||||
"es7.exponentiationOperator": require("./es7/exponentiation-operator"),
|
||||
"es6.spread": require("./es6/spread"),
|
||||
"es6.templateLiterals": require("./es6/template-literals"),
|
||||
|
||||
"es5.properties.mutators": require("./es5/properties.mutators"),
|
||||
"es6.properties.shorthand": require("./es6/properties.shorthand"),
|
||||
|
||||
// needs to be before `_aliasFunction` due to define property closure
|
||||
"es6.properties.computed": require("./es6/properties.computed"),
|
||||
|
||||
"es6.forOf": require("./es6/for-of"),
|
||||
|
||||
"es6.unicodeRegex": require("./es6/unicode-regex"),
|
||||
"es7.abstractReferences": require("./es7/abstract-references"),
|
||||
|
||||
"es6.constants": require("./es6/constants"),
|
||||
|
||||
// needs to be before `_aliasFunction` due to block scopes sometimes being wrapped in a
|
||||
// closure
|
||||
"es6.blockScoping": require("./es6/block-scoping"),
|
||||
|
||||
// needs to be after `es6.blockScoping` due to needing `letReferences` set on blocks
|
||||
"es6.blockScopingTDZ": require("./es6/block-scoping-tdz"),
|
||||
|
||||
// needs to be after block scoping since regenerator doesn't support it
|
||||
regenerator: require("./other/regenerator"),
|
||||
|
||||
"es6.parameters.default": require("./es6/parameters.default"),
|
||||
"es6.parameters.rest": require("./es6/parameters.rest"),
|
||||
|
||||
"es6.destructuring": require("./es6/destructuring"),
|
||||
|
||||
// needs to be after `regenerator` due to needing `regeneratorRuntime` references
|
||||
// needs to be after `es6.forOf` due to needing `Symbol.iterator` references
|
||||
// needs to be before `es6.modules` due to dynamic imports
|
||||
selfContained: require("./other/self-contained"),
|
||||
|
||||
// needs to be before `_blockHoist` due to function hoisting etc
|
||||
"es6.modules": require("./es6/modules"),
|
||||
|
||||
_blockHoist: require("./internal/block-hoist"),
|
||||
|
||||
"spec.protoToAssign": require("./spec/proto-to-assign"),
|
||||
|
||||
_declarations: require("./internal/declarations"),
|
||||
|
||||
_aliasFunctions: require("./internal/alias-functions"),
|
||||
_moduleFormatter: require("./internal/module-formatter"),
|
||||
|
||||
"spec.typeofSymbol": require("./spec/typeof-symbol"),
|
||||
"spec.undefinedToVoid": require("./spec/undefined-to-void"),
|
||||
|
||||
"minification.propertyLiterals": require("./minification/property-literals"),
|
||||
"minification.memberExpressionLiterals": require("./minification/member-expression-literals")
|
||||
};
|
||||
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var traverse = require("../../traverse");
|
||||
var t = require("../../types");
|
||||
var traverse = require("../../../traverse");
|
||||
var t = require("../../../types");
|
||||
|
||||
var functionChildrenVisitor = {
|
||||
enter: function (node, parent, scope, context, state) {
|
||||
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
var useStrict = require("../helpers/use-strict");
|
||||
var useStrict = require("../../helpers/use-strict");
|
||||
var _ = require("lodash");
|
||||
|
||||
// Priority:
|
||||
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var useStrict = require("../helpers/use-strict");
|
||||
var t = require("../../types");
|
||||
var useStrict = require("../../helpers/use-strict");
|
||||
var t = require("../../../types");
|
||||
|
||||
exports.secondPass = true;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var useStrict = require("../helpers/use-strict");
|
||||
var transform = require("../transform");
|
||||
var useStrict = require("../../helpers/use-strict");
|
||||
var transform = require("../../transform");
|
||||
|
||||
exports.ast = {
|
||||
exit: function (ast, file) {
|
||||
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
var t = require("../../types");
|
||||
var t = require("../../../types");
|
||||
|
||||
exports.ExportDeclaration = function (node, parent, scope, context, file) {
|
||||
var declar = node.declaration;
|
||||
Loading…
x
Reference in New Issue
Block a user