James Beavers 80aa7dc3c6 Add optional-chaining and nullish-coalescing to preset-env (#10811)
* Add support for optional-chaining (stage 4) in present-env

* revert babel-preset-env built-in-modules.json

* add shipped proposal syntax map entry, optional chaining

* update remaining syntax plugin references, proposal description

* Add support for nullish coalescing operator in preset-env

* selectively enable sort-keys rule

* enforce sort-keys on shipped-proposals

* don't use Object.entries()

* Update fixtures
2020-01-10 22:07:43 +01:00

35 lines
1.7 KiB
JavaScript

/* eslint sort-keys: "error" */
import { availablePlugins, registerPlugin } from "@babel/standalone";
import proposalJsonStrings from "@babel/plugin-proposal-json-strings";
import proposalDynamicImport from "@babel/plugin-proposal-dynamic-import";
import proposalNullishCoalescingOperator from "@babel/plugin-proposal-nullish-coalescing-operator";
import proposalOptionalChaining from "@babel/plugin-proposal-optional-chaining";
import syntaxJsonStrings from "@babel/plugin-syntax-json-strings";
import syntaxNullishCoalescingOperator from "@babel/plugin-syntax-nullish-coalescing-operator";
import syntaxOptionalChaining from "@babel/plugin-syntax-nullish-coalescing-operator";
import syntaxTopLevelAwait from "@babel/plugin-syntax-top-level-await";
import transformNamedCapturingGroupsRegex from "@babel/plugin-transform-named-capturing-groups-regex";
import transformNewTarget from "@babel/plugin-transform-new-target";
const notIncludedPlugins = {
"proposal-dynamic-import": proposalDynamicImport,
"proposal-json-strings": proposalJsonStrings,
"proposal-nullish-coalescing-operator": proposalNullishCoalescingOperator,
"proposal-optional-chaining": proposalOptionalChaining,
"syntax-json-strings": syntaxJsonStrings,
"syntax-nullish-coalescing-operator": syntaxNullishCoalescingOperator,
"syntax-optional-chaining": syntaxOptionalChaining,
"syntax-top-level-await": syntaxTopLevelAwait,
"transform-named-capturing-groups-regex": transformNamedCapturingGroupsRegex,
"transform-new-target": transformNewTarget,
};
Object.keys(notIncludedPlugins).forEach(pluginName => {
if (!availablePlugins[pluginName]) {
registerPlugin(pluginName, notIncludedPlugins[pluginName]);
}
});
export default availablePlugins;