diff --git a/packages/babel-plugin-async-to-bluebird-coroutines/README.md b/packages/babel-plugin-async-to-bluebird-coroutines/README.md deleted file mode 100644 index 5f91ef8045..0000000000 --- a/packages/babel-plugin-async-to-bluebird-coroutines/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-async-to-bluebird-coroutines - -Turn async functions into a Bluebird coroutine - -## Installation - -```sh -$ npm install babel-plugin-async-to-bluebird-coroutines -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["async-to-bluebird-coroutines"] -} -``` - -### Via CLI - -```sh -$ babel --plugins async-to-bluebird-coroutines script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["async-to-bluebird-coroutines"] -}); -``` diff --git a/packages/babel-plugin-builder-react-jsx/README.md b/packages/babel-plugin-builder-react-jsx/README.md new file mode 100644 index 0000000000..41fa28bf58 --- /dev/null +++ b/packages/babel-plugin-builder-react-jsx/README.md @@ -0,0 +1,22 @@ +# babel-plugin-builder-react-jsx + +## Usage + +```javascript +type ElementState = { + tagExpr: Object; // tag node + tagName: string; // raw string tag name + args: Array; // array of call arguments + call?: Object; // optional call property that can be set to override the call expression returned +}; + +require("babel-plugin-builder-react-jsx")({ + pre: function (state: ElementState) { + // called before building the element + }, + + post: function (state: ElementState) { + // called after building the element + } +}); +``` diff --git a/packages/babel-plugin-builder-react-jsx/package.json b/packages/babel-plugin-builder-react-jsx/package.json new file mode 100644 index 0000000000..2ff46f80bc --- /dev/null +++ b/packages/babel-plugin-builder-react-jsx/package.json @@ -0,0 +1,13 @@ +{ + "name": "babel-plugin-builder-react-jsx", + "version": "1.0.0", + "description": "", + "repository": "babel/babel", + "license": "MIT", + "main": "lib/index.js", + "dependencies": { + "babel-runtime": "^5.8.20", + "esutils": "^2.0.0", + "lodash": "^3.10.0" + } +} diff --git a/packages/babel-plugin-builder-react-jsx/src/index.js b/packages/babel-plugin-builder-react-jsx/src/index.js new file mode 100644 index 0000000000..7eb9f43691 --- /dev/null +++ b/packages/babel-plugin-builder-react-jsx/src/index.js @@ -0,0 +1,153 @@ +import isString from "lodash/lang/isString"; +import esutils from "esutils"; + +export default function (t, opts) { + var visitor = {}; + + visitor.JSXNamespacedName = function (path) { + throw path.buildCodeFrameError("Namespace tags are not supported. ReactJSX is not XML."); + }; + + visitor.JSXElement = { + exit(path, file) { + var callExpr = buildElementCall(path.get("openingElement"), file); + + callExpr.arguments = callExpr.arguments.concat(path.node.children); + + if (callExpr.arguments.length >= 3) { + callExpr._prettyCall = true; + } + + return t.inherits(callExpr, path.node); + } + }; + + return visitor; + + function convertFunctionName(path) { + var { node } = path; + + if (path.isJSXIdentifier()) { + if (node.name === "this" && path.isReferenced()) { + return t.thisExpression(); + } else if (esutils.keyword.isIdentifierNameES6(node.name)) { + node.type = "Identifier"; + } else { + return t.stringLiteral(node.name); + } + } else if (path.isJSXMemberExpression()) { + node.computed = t.isLiteral(node.property); + node.type = "MemberExpression"; + } + + return node; + } + + function convertAttributeValue(node) { + if (t.isJSXExpressionContainer(node)) { + return node.expression; + } else { + return node; + } + } + + function convertAttribute(node) { + var value = convertAttributeValue(node.value || t.booleanLiteral(true)); + + if (t.isLiteral(value) && isString(value.value)) { + value.value = value.value.replace(/\n\s+/g, " "); + } + + node.name.type = "Identifier"; + + return t.inherits(t.property("init", node.name, value), node); + } + + function buildElementCall(path, file) { + path.parent.children = t.react.buildChildren(path.parent); + + var tagExpr = convertFunctionName(path.get("name")); + var args = []; + + var tagName; + if (t.isIdentifier(tagExpr)) { + tagName = tagExpr.name; + } else if (t.isLiteral(tagExpr)) { + tagName = tagExpr.value; + } + + var state = { + tagExpr: tagExpr, + tagName: tagName, + args: args + }; + + if (opts.pre) { + opts.pre(state, file); + } + + var attribs = path.node.attributes; + if (attribs.length) { + attribs = buildOpeningElementAttributes(attribs, file); + } else { + attribs = t.nullLiteral(); + } + + args.push(attribs); + + if (opts.post) { + opts.post(state, file); + } + + return state.call || t.callExpression(state.callee, args); + } + + /** + * The logic for this is quite terse. It's because we need to + * support spread elements. We loop over all attributes, + * breaking on spreads, we then push a new object containg + * all prior attributes to an array for later processing. + */ + + function buildOpeningElementAttributes(attribs, file) { + var _props = []; + var objs = []; + + function pushProps() { + if (!_props.length) return; + + objs.push(t.objectExpression(_props)); + _props = []; + } + + while (attribs.length) { + var prop = attribs.shift(); + if (t.isJSXSpreadAttribute(prop)) { + pushProps(); + objs.push(prop.argument); + } else { + _props.push(convertAttribute(prop)); + } + } + + pushProps(); + + if (objs.length === 1) { + // only one object + attribs = objs[0]; + } else { + // looks like we have multiple objects + if (!t.isObjectExpression(objs[0])) { + objs.unshift(t.objectExpression([])); + } + + // spread it + attribs = t.callExpression( + file.addHelper("extends"), + objs + ); + } + + return attribs; + } +} diff --git a/packages/babel-plugin-class-properties/.gitignore b/packages/babel-plugin-class-properties/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-class-properties/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-comprehensions/.gitignore b/packages/babel-plugin-comprehensions/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-comprehensions/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-comprehensions/src/index.js b/packages/babel-plugin-comprehensions/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-comprehensions/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-dead-code-elimination/README.md b/packages/babel-plugin-dead-code-elimination/README.md deleted file mode 100644 index af182e81e8..0000000000 --- a/packages/babel-plugin-dead-code-elimination/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-dead-code-elimination - -Eliminate dead code - -## Installation - -```sh -$ npm install babel-plugin-dead-code-elimination -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["dead-code-elimination"] -} -``` - -### Via CLI - -```sh -$ babel --plugins dead-code-elimination script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["dead-code-elimination"] -}); -``` diff --git a/packages/babel-plugin-decorators/.gitignore b/packages/babel-plugin-decorators/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-decorators/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-decorators/src/index.js b/packages/babel-plugin-decorators/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-decorators/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-do-expressions/.gitignore b/packages/babel-plugin-do-expressions/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-do-expressions/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-do-expressions/src/index.js b/packages/babel-plugin-do-expressions/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-do-expressions/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-arrow-functions/.gitignore b/packages/babel-plugin-es2015-arrow-functions/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-arrow-functions/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-arrow-functions/README.md b/packages/babel-plugin-es2015-arrow-functions/README.md deleted file mode 100644 index 8acd5de1b1..0000000000 --- a/packages/babel-plugin-es2015-arrow-functions/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-arrow-functions - -Compile ES2015 arrow functions to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-arrow-functions -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-arrow-functions"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-arrow-functions script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-arrow-functions"] -}); -``` diff --git a/packages/babel-plugin-es2015-arrow-functions/src/index.js b/packages/babel-plugin-es2015-arrow-functions/src/index.js deleted file mode 100644 index 369977afe9..0000000000 --- a/packages/babel-plugin-es2015-arrow-functions/src/index.js +++ /dev/null @@ -1,12 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - ArrowFunctionExpression(node) { - this.ensureBlock(); - node.expression = false; - node.type = "FunctionExpression"; - node.shadow = node.shadow || true; - } - } - }; -} diff --git a/packages/babel-plugin-es2015-block-scoped-functions/README.md b/packages/babel-plugin-es2015-block-scoped-functions/README.md deleted file mode 100644 index 494c432297..0000000000 --- a/packages/babel-plugin-es2015-block-scoped-functions/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-block-scoped-functions - -Babel plugin to ensure function declarations at the block level are block scoped. - -## Installation - -```sh -$ npm install babel-plugin-es2015-block-scoped-functions -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-block-scoped-functions"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-block-scoped-functions script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-block-scoped-functions"] -}); -``` diff --git a/packages/babel-plugin-es2015-block-scoping/.gitignore b/packages/babel-plugin-es2015-block-scoping/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-block-scoping/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-block-scoping/src/index.js b/packages/babel-plugin-es2015-block-scoping/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-block-scoping/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-classes/.gitignore b/packages/babel-plugin-es2015-classes/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-classes/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-classes/src/index.js b/packages/babel-plugin-es2015-classes/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-classes/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-computed-properties/.gitignore b/packages/babel-plugin-es2015-computed-properties/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-computed-properties/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-computed-properties/README.md b/packages/babel-plugin-es2015-computed-properties/README.md deleted file mode 100644 index a26309d67e..0000000000 --- a/packages/babel-plugin-es2015-computed-properties/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-computed-properties - -Compile ES2015 computed properties to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-computed-properties -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-computed-properties"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-computed-properties script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-computed-properties"] -}); -``` diff --git a/packages/babel-plugin-es2015-constants/.gitignore b/packages/babel-plugin-es2015-constants/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-constants/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-destructuring/README.md b/packages/babel-plugin-es2015-destructuring/README.md deleted file mode 100644 index 4813d210af..0000000000 --- a/packages/babel-plugin-es2015-destructuring/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-destructuring - -Compile ES2015 destructuring to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-destructuring -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-destructuring"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-destructuring script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-destructuring"] -}); -``` diff --git a/packages/babel-plugin-es2015-for-of/.gitignore b/packages/babel-plugin-es2015-for-of/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-for-of/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-for-of/src/index.js b/packages/babel-plugin-es2015-for-of/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-for-of/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-function-name/.gitignore b/packages/babel-plugin-es2015-function-name/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-function-name/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-function-name/src/index.js b/packages/babel-plugin-es2015-function-name/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-function-name/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-literals/.gitignore b/packages/babel-plugin-es2015-literals/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-literals/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-object-super/.gitignore b/packages/babel-plugin-es2015-object-super/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-object-super/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-object-super/README.md b/packages/babel-plugin-es2015-object-super/README.md deleted file mode 100644 index 6e351e407e..0000000000 --- a/packages/babel-plugin-es2015-object-super/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-object-super - -Compile ES2015 object super to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-object-super -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-object-super"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-object-super script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-object-super"] -}); -``` diff --git a/packages/babel-plugin-es2015-object-super/src/index.js b/packages/babel-plugin-es2015-object-super/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-object-super/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-parameters/.gitignore b/packages/babel-plugin-es2015-parameters/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-parameters/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-parameters/src/index.js b/packages/babel-plugin-es2015-parameters/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-parameters/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-shorthand-properties/.gitignore b/packages/babel-plugin-es2015-shorthand-properties/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-shorthand-properties/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-shorthand-properties/README.md b/packages/babel-plugin-es2015-shorthand-properties/README.md deleted file mode 100644 index 6712c94a83..0000000000 --- a/packages/babel-plugin-es2015-shorthand-properties/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-shorthand-properties - -Compile ES2015 shorthand properties to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-shorthand-properties -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-shorthand-properties"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-shorthand-properties script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-shorthand-properties"] -}); -``` diff --git a/packages/babel-plugin-es2015-spread/.gitignore b/packages/babel-plugin-es2015-spread/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-spread/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-sticky-regex/.gitignore b/packages/babel-plugin-es2015-sticky-regex/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-sticky-regex/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-sticky-regex/src/index.js b/packages/babel-plugin-es2015-sticky-regex/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-sticky-regex/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-tail-call/.gitignore b/packages/babel-plugin-es2015-tail-call/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-tail-call/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-tail-call/src/index.js b/packages/babel-plugin-es2015-tail-call/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-tail-call/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es2015-template-literals/.gitignore b/packages/babel-plugin-es2015-template-literals/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-template-literals/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-template-literals/README.md b/packages/babel-plugin-es2015-template-literals/README.md deleted file mode 100644 index f8d5f93194..0000000000 --- a/packages/babel-plugin-es2015-template-literals/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-template-literals - -Compile ES2015 template literals to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-template-literals -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-template-literals"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-template-literals script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-template-literals"] -}); -``` diff --git a/packages/babel-plugin-es2015-unicode-regex/.gitignore b/packages/babel-plugin-es2015-unicode-regex/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es2015-unicode-regex/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es2015-unicode-regex/README.md b/packages/babel-plugin-es2015-unicode-regex/README.md deleted file mode 100644 index 5e5fd22db0..0000000000 --- a/packages/babel-plugin-es2015-unicode-regex/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es2015-unicode-regex - -Compile ES2015 unicode regex to ES5 - -## Installation - -```sh -$ npm install babel-plugin-es2015-unicode-regex -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es2015-unicode-regex"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es2015-unicode-regex script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es2015-unicode-regex"] -}); -``` diff --git a/packages/babel-plugin-es2015-unicode-regex/src/index.js b/packages/babel-plugin-es2015-unicode-regex/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es2015-unicode-regex/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-es3-member-expression-literals/.gitignore b/packages/babel-plugin-es3-member-expression-literals/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es3-member-expression-literals/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es3-member-expression-literals/README.md b/packages/babel-plugin-es3-member-expression-literals/README.md deleted file mode 100644 index 588911bf08..0000000000 --- a/packages/babel-plugin-es3-member-expression-literals/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-es3-member-expression-literals - -Ensure that reserved words are quoted in property accesses - -## Installation - -```sh -$ npm install babel-plugin-es3-member-expression-literals -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["es3-member-expression-literals"] -} -``` - -### Via CLI - -```sh -$ babel --plugins es3-member-expression-literals script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["es3-member-expression-literals"] -}); -``` diff --git a/packages/babel-plugin-es3-property-literals/.gitignore b/packages/babel-plugin-es3-property-literals/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es3-property-literals/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es5-property-mutators/.gitignore b/packages/babel-plugin-es5-property-mutators/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-es5-property-mutators/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-es5-property-mutators/src/index.js b/packages/babel-plugin-es5-property-mutators/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-es5-property-mutators/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-exponentiation-operator/.gitignore b/packages/babel-plugin-exponentiation-operator/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-exponentiation-operator/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-exponentiation-operator/README.md b/packages/babel-plugin-exponentiation-operator/README.md deleted file mode 100644 index 39eeb12ed5..0000000000 --- a/packages/babel-plugin-exponentiation-operator/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-exponentiation-operator - -Compile exponentiation operator to ES5 - -## Installation - -```sh -$ npm install babel-plugin-exponentiation-operator -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["exponentiation-operator"] -} -``` - -### Via CLI - -```sh -$ babel --plugins exponentiation-operator script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["exponentiation-operator"] -}); -``` diff --git a/packages/babel-plugin-exponentiation-operator/src/index.js b/packages/babel-plugin-exponentiation-operator/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-exponentiation-operator/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-export-extensions/.gitignore b/packages/babel-plugin-export-extensions/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-export-extensions/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-export-extensions/src/index.js b/packages/babel-plugin-export-extensions/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-export-extensions/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-async-functions/.npmignore b/packages/babel-plugin-external-helpers/.npmignore similarity index 100% rename from packages/babel-plugin-async-functions/.npmignore rename to packages/babel-plugin-external-helpers/.npmignore diff --git a/packages/babel-plugin-external-helpers/README.md b/packages/babel-plugin-external-helpers/README.md new file mode 100644 index 0000000000..d7e0860bf8 --- /dev/null +++ b/packages/babel-plugin-external-helpers/README.md @@ -0,0 +1,33 @@ +# babel-plugin-external-helpers + +## Installation + +```sh +$ npm install babel-plugin-external-helpers +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["external-helpers"] +} +``` + +### Via CLI + +```sh +$ babel --plugins external-helpers script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["external-helpers"] +}); +``` diff --git a/packages/babel-plugin-class-properties/package.json b/packages/babel-plugin-external-helpers/package.json similarity index 79% rename from packages/babel-plugin-class-properties/package.json rename to packages/babel-plugin-external-helpers/package.json index 7563a01b87..61bc719e42 100644 --- a/packages/babel-plugin-class-properties/package.json +++ b/packages/babel-plugin-external-helpers/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-class-properties", + "name": "babel-plugin-external-helpers", "version": "1.0.0", "description": "", "repository": "babel/babel", diff --git a/packages/babel-plugin-external-helpers/src/index.js b/packages/babel-plugin-external-helpers/src/index.js new file mode 100644 index 0000000000..2103ae9131 --- /dev/null +++ b/packages/babel-plugin-external-helpers/src/index.js @@ -0,0 +1,7 @@ +export default function ({ types: t }) { + return { + pre(file) { + file.set("helpersNamespace", t.identifier("babelHelpers")); + } + }; +} diff --git a/packages/babel-plugin-function-bind/.gitignore b/packages/babel-plugin-function-bind/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-function-bind/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-function-bind/src/index.js b/packages/babel-plugin-function-bind/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-function-bind/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-inline-environment-variables/README.md b/packages/babel-plugin-inline-environment-variables/README.md deleted file mode 100644 index 8e4a154852..0000000000 --- a/packages/babel-plugin-inline-environment-variables/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-inline-environment-variables - -Inline environment variables - -## Installation - -```sh -$ npm install babel-plugin-inline-environment-variables -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["inline-environment-variables"] -} -``` - -### Via CLI - -```sh -$ babel --plugins inline-environment-variables script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["inline-environment-variables"] -}); -``` diff --git a/packages/babel-plugin-inline-environment-variables/src/index.js b/packages/babel-plugin-inline-environment-variables/src/index.js deleted file mode 100644 index 1f37d9afa6..0000000000 --- a/packages/babel-plugin-inline-environment-variables/src/index.js +++ /dev/null @@ -1,18 +0,0 @@ -export default function ({ Plugin, types: t }) { - return { - metadata: { - group: "builtin-pre" - }, - - visitor: { - MemberExpression() { - if (this.get("object").matchesPattern("process.env")) { - var key = this.toComputedKey(); - if (t.isStringLiteral(key)) { - return t.valueToNode(process.env[key.value]); - } - } - } - } - }; -} diff --git a/packages/babel-plugin-node-env-inline/src/index.js b/packages/babel-plugin-node-env-inline/src/index.js deleted file mode 100644 index 3dadb8cf28..0000000000 --- a/packages/babel-plugin-node-env-inline/src/index.js +++ /dev/null @@ -1,22 +0,0 @@ -export default function ({ types: t }) { - return { - metadata: { - group: "builtin-pre" - }, - - visitor: { - MemberExpression() { - if (this.matchesPattern("process.env.NODE_ENV")) { - this.replaceWith(t.valueToNode(process.env.NODE_ENV)); - - if (this.parentPath.isBinaryExpression()) { - var evaluated = this.parentPath.evaluate(); - if (evaluated.confident) { - this.parentPath.replaceWith(t.valueToNode(evaluated.value)); - } - } - } - } - } - }; -} diff --git a/packages/babel-plugin-object-assign/src/index.js b/packages/babel-plugin-object-assign/src/index.js deleted file mode 100644 index 10581931af..0000000000 --- a/packages/babel-plugin-object-assign/src/index.js +++ /dev/null @@ -1,15 +0,0 @@ -export default function () { - return { - metadata: { - group: "builtin-pre" - }, - - visitor: { - CallExpression: function (node, parent, scope, file) { - if (this.get("callee").matchesPattern("Object.assign")) { - node.callee = file.addHelper("extends"); - } - } - } - }; -} diff --git a/packages/babel-plugin-object-rest-spread/.gitignore b/packages/babel-plugin-object-rest-spread/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-object-rest-spread/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-object-rest-spread/src/index.js b/packages/babel-plugin-object-rest-spread/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-object-rest-spread/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-object-set-prototype-of-to-assign/src/index.js b/packages/babel-plugin-object-set-prototype-of-to-assign/src/index.js deleted file mode 100644 index db03a93c67..0000000000 --- a/packages/babel-plugin-object-set-prototype-of-to-assign/src/index.js +++ /dev/null @@ -1,11 +0,0 @@ -export default function () { - return { - visitor: { - CallExpression(node, parent, scope, file) { - if (this.get("callee").matchesPattern("Object.setPrototypeOf")) { - node.callee = file.addHelper("defaults"); - } - } - } - }; -} diff --git a/packages/babel-plugin-react-compat-jsx/.gitignore b/packages/babel-plugin-react-compat-jsx/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-react-compat-jsx/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-react-compat-jsx/src/index.js b/packages/babel-plugin-react-compat-jsx/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-react-compat-jsx/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-react-constant-elements/src/index.js b/packages/babel-plugin-react-constant-elements/src/index.js deleted file mode 100644 index e6b2505f78..0000000000 --- a/packages/babel-plugin-react-constant-elements/src/index.js +++ /dev/null @@ -1,46 +0,0 @@ -export default function () { - var immutabilityVisitor = { - enter(node, parent, scope, state) { - var stop = () => { - state.isImmutable = false; - this.stop(); - }; - - if (this.isJSXClosingElement()) { - this.skip(); - return; - } - - if (this.isJSXIdentifier({ name: "ref" }) && this.parentPath.isJSXAttribute({ name: node })) { - return stop(); - } - - if (this.isJSXIdentifier() || this.isIdentifier() || this.isJSXMemberExpression()) { - return; - } - - if (!this.isImmutable()) stop(); - } - }; - - return { - metadata: { - group: "builtin-basic" - }, - - visitor: { - JSXElement(node) { - if (node._hoisted) return; - - var state = { isImmutable: true }; - this.traverse(immutabilityVisitor, state); - - if (state.isImmutable) { - this.hoist(); - } else { - node._hoisted = true; - } - } - } - }; -} diff --git a/packages/babel-plugin-react-inline-elements/.gitignore b/packages/babel-plugin-react-inline-elements/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-react-inline-elements/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-react-inline-elements/README.md b/packages/babel-plugin-react-inline-elements/README.md deleted file mode 100644 index 150e2ff60e..0000000000 --- a/packages/babel-plugin-react-inline-elements/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-react-inline-elements - -Turn JSX elements into exploded React objects - -## Installation - -```sh -$ npm install babel-plugin-react-inline-elements -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["react-inline-elements"] -} -``` - -### Via CLI - -```sh -$ babel --plugins react-inline-elements script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["react-inline-elements"] -}); -``` diff --git a/packages/babel-plugin-react-inline-elements/src/index.js b/packages/babel-plugin-react-inline-elements/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-react-inline-elements/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-react-jsx/.gitignore b/packages/babel-plugin-react-jsx/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-react-jsx/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-react-jsx/src/index.js b/packages/babel-plugin-react-jsx/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-react-jsx/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-remove-console/src/index.js b/packages/babel-plugin-remove-console/src/index.js deleted file mode 100644 index 60a934e8db..0000000000 --- a/packages/babel-plugin-remove-console/src/index.js +++ /dev/null @@ -1,15 +0,0 @@ -export default function () { - return { - metadata: { - group: "builtin-pre" - }, - - visitor: { - CallExpression() { - if (this.get("callee").matchesPattern("console", true)) { - this.dangerouslyRemove(); - } - } - } - }; -} diff --git a/packages/babel-plugin-remove-debugger/src/index.js b/packages/babel-plugin-remove-debugger/src/index.js deleted file mode 100644 index c3ba51604d..0000000000 --- a/packages/babel-plugin-remove-debugger/src/index.js +++ /dev/null @@ -1,13 +0,0 @@ -export default function () { - return { - metadata: { - group: "builtin-pre" - }, - - visitor: { - DebuggerStatement() { - this.dangerouslyRemove(); - } - } - }; -} diff --git a/packages/babel-plugin-async-to-bluebird-coroutines/.npmignore b/packages/babel-plugin-syntax-flow/.npmignore similarity index 100% rename from packages/babel-plugin-async-to-bluebird-coroutines/.npmignore rename to packages/babel-plugin-syntax-flow/.npmignore diff --git a/packages/babel-plugin-class-properties/README.md b/packages/babel-plugin-syntax-flow/README.md similarity index 53% rename from packages/babel-plugin-class-properties/README.md rename to packages/babel-plugin-syntax-flow/README.md index 02487c6f48..0e4691f553 100644 --- a/packages/babel-plugin-class-properties/README.md +++ b/packages/babel-plugin-syntax-flow/README.md @@ -1,11 +1,11 @@ -# babel-plugin-class-properties +# babel-plugin-syntax-flow ## Installation ```sh -$ npm install babel-plugin-class-properties +$ npm install babel-plugin-syntax-flow ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-class-properties ```json { - "plugins": ["class-properties"] + "plugins": ["syntax-flow"] } ``` ### Via CLI ```sh -$ babel --plugins class-properties script.js +$ babel --plugins syntax-flow script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["class-properties"] + plugins: ["syntax-flow"] }); ``` diff --git a/packages/babel-plugin-syntax-flow/package.json b/packages/babel-plugin-syntax-flow/package.json new file mode 100644 index 0000000000..ce8a7e48a3 --- /dev/null +++ b/packages/babel-plugin-syntax-flow/package.json @@ -0,0 +1,11 @@ +{ + "name": "babel-plugin-syntax-flow", + "version": "1.0.0", + "description": "", + "repository": "babel/babel", + "license": "MIT", + "main": "lib/index.js", + "keywords": [ + "babel-plugin" + ] +} diff --git a/packages/babel-plugin-syntax-flow/src/index.js b/packages/babel-plugin-syntax-flow/src/index.js new file mode 100644 index 0000000000..499d12a023 --- /dev/null +++ b/packages/babel-plugin-syntax-flow/src/index.js @@ -0,0 +1,11 @@ +export default function () { + return { + manipulateOptions(opts, parserOpts) { + var jsx = parserOpts.plugins.jsx; + delete parserOpts.plugins.jsx; + + parserOpts.plugins.flow = true; + if (jsx) parserOpts.plugins.jsx = true; + } + }; +} diff --git a/packages/babel-plugin-async-to-generator/.npmignore b/packages/babel-plugin-syntax-jsx/.npmignore similarity index 100% rename from packages/babel-plugin-async-to-generator/.npmignore rename to packages/babel-plugin-syntax-jsx/.npmignore diff --git a/packages/babel-plugin-remove-console/README.md b/packages/babel-plugin-syntax-jsx/README.md similarity index 51% rename from packages/babel-plugin-remove-console/README.md rename to packages/babel-plugin-syntax-jsx/README.md index 5518aa1532..e8c7e6b5fc 100644 --- a/packages/babel-plugin-remove-console/README.md +++ b/packages/babel-plugin-syntax-jsx/README.md @@ -1,11 +1,11 @@ -# babel-plugin-remove-console +# babel-plugin-syntax-jsx + -Remove console.* calls ## Installation ```sh -$ npm install babel-plugin-remove-console +$ npm install babel-plugin-syntax-jsx ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-remove-console ```json { - "plugins": ["remove-console"] + "plugins": ["syntax-jsx"] } ``` ### Via CLI ```sh -$ babel --plugins remove-console script.js +$ babel --plugins syntax-jsx script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["remove-console"] + plugins: ["syntax-jsx"] }); ``` diff --git a/packages/babel-plugin-syntax-jsx/package.json b/packages/babel-plugin-syntax-jsx/package.json new file mode 100644 index 0000000000..144fe23dcd --- /dev/null +++ b/packages/babel-plugin-syntax-jsx/package.json @@ -0,0 +1,11 @@ +{ + "name": "babel-plugin-syntax-jsx", + "version": "1.0.0", + "description": "", + "repository": "babel/babel", + "license": "MIT", + "main": "lib/index.js", + "keywords": [ + "babel-plugin" + ] +} diff --git a/packages/babel-plugin-syntax-jsx/src/index.js b/packages/babel-plugin-syntax-jsx/src/index.js new file mode 100644 index 0000000000..2c2767cdf9 --- /dev/null +++ b/packages/babel-plugin-syntax-jsx/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + manipulateOptions(opts, parserOpts) { + parserOpts.plugins.jsx = true; + } + }; +} diff --git a/packages/babel-plugin-class-properties/.npmignore b/packages/babel-plugin-syntax-trailing-function-commas/.npmignore similarity index 100% rename from packages/babel-plugin-class-properties/.npmignore rename to packages/babel-plugin-syntax-trailing-function-commas/.npmignore diff --git a/packages/babel-plugin-syntax-trailing-function-commas/README.md b/packages/babel-plugin-syntax-trailing-function-commas/README.md new file mode 100644 index 0000000000..61e15051e0 --- /dev/null +++ b/packages/babel-plugin-syntax-trailing-function-commas/README.md @@ -0,0 +1,35 @@ +# babel-plugin-syntax-trailing-function-commas + +Compile trailing function commas to ES5 + +## Installation + +```sh +$ npm install babel-plugin-syntax-trailing-function-commas +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["syntax-trailing-function-commas"] +} +``` + +### Via CLI + +```sh +$ babel --plugins syntax-trailing-function-commas script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["syntax-trailing-function-commas"] +}); +``` diff --git a/packages/babel-plugin-trailing-function-commas/package.json b/packages/babel-plugin-syntax-trailing-function-commas/package.json similarity index 77% rename from packages/babel-plugin-trailing-function-commas/package.json rename to packages/babel-plugin-syntax-trailing-function-commas/package.json index f6217f7423..a97ab921e0 100644 --- a/packages/babel-plugin-trailing-function-commas/package.json +++ b/packages/babel-plugin-syntax-trailing-function-commas/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-trailing-function-commas", + "name": "babel-plugin-syntax-trailing-function-commas", "version": "1.0.0", "description": "Compile trailing function commas to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-syntax-trailing-function-commas/src/index.js b/packages/babel-plugin-syntax-trailing-function-commas/src/index.js new file mode 100644 index 0000000000..a22832bd31 --- /dev/null +++ b/packages/babel-plugin-syntax-trailing-function-commas/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + manipulateOptions(opts, parserOpts) { + parserOpts.features["es7.trailingFunctionCommas"] = true; + } + }; +} diff --git a/packages/babel-plugin-trailing-function-commas/.gitignore b/packages/babel-plugin-trailing-function-commas/.gitignore deleted file mode 100644 index 45f7222308..0000000000 --- a/packages/babel-plugin-trailing-function-commas/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -lib diff --git a/packages/babel-plugin-trailing-function-commas/README.md b/packages/babel-plugin-trailing-function-commas/README.md deleted file mode 100644 index e66d11c783..0000000000 --- a/packages/babel-plugin-trailing-function-commas/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-trailing-function-commas - -Compile trailing function commas to ES5 - -## Installation - -```sh -$ npm install babel-plugin-trailing-function-commas -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["trailing-function-commas"] -} -``` - -### Via CLI - -```sh -$ babel --plugins trailing-function-commas script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["trailing-function-commas"] -}); -``` diff --git a/packages/babel-plugin-trailing-function-commas/src/index.js b/packages/babel-plugin-trailing-function-commas/src/index.js deleted file mode 100644 index 9e1abb71bf..0000000000 --- a/packages/babel-plugin-trailing-function-commas/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function ({ types: t }) { - return { - visitor: { - // your visitor methods go here - } - }; -} diff --git a/packages/babel-plugin-comprehensions/.npmignore b/packages/babel-plugin-transform-async-functions/.npmignore similarity index 100% rename from packages/babel-plugin-comprehensions/.npmignore rename to packages/babel-plugin-transform-async-functions/.npmignore diff --git a/packages/babel-plugin-async-functions/README.md b/packages/babel-plugin-transform-async-functions/README.md similarity index 51% rename from packages/babel-plugin-async-functions/README.md rename to packages/babel-plugin-transform-async-functions/README.md index 2afc6fa67f..204eabd515 100644 --- a/packages/babel-plugin-async-functions/README.md +++ b/packages/babel-plugin-transform-async-functions/README.md @@ -1,11 +1,11 @@ -# babel-plugin-async-functions +# babel-plugin-transform-async-functions Compile async functions to ES5 ## Installation ```sh -$ npm install babel-plugin-async-functions +$ npm install babel-plugin-transform-async-functions ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-async-functions ```json { - "plugins": ["async-functions"] + "plugins": ["transform-async-functions"] } ``` ### Via CLI ```sh -$ babel --plugins async-functions script.js +$ babel --plugins transform-async-functions script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["async-functions"] + plugins: ["transform-async-functions"] }); ``` diff --git a/packages/babel-plugin-async-functions/package.json b/packages/babel-plugin-transform-async-functions/package.json similarity index 78% rename from packages/babel-plugin-async-functions/package.json rename to packages/babel-plugin-transform-async-functions/package.json index cbf78e07d2..c78d4154f7 100644 --- a/packages/babel-plugin-async-functions/package.json +++ b/packages/babel-plugin-transform-async-functions/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-async-functions", + "name": "babel-plugin-transform-async-functions", "version": "1.0.0", "description": "Compile async functions to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-async-to-bluebird-coroutines/src/index.js b/packages/babel-plugin-transform-async-functions/src/index.js similarity index 65% rename from packages/babel-plugin-async-to-bluebird-coroutines/src/index.js rename to packages/babel-plugin-transform-async-functions/src/index.js index 9e1abb71bf..6845446a11 100644 --- a/packages/babel-plugin-async-to-bluebird-coroutines/src/index.js +++ b/packages/babel-plugin-transform-async-functions/src/index.js @@ -1,4 +1,4 @@ -export default function ({ types: t }) { +export default function () { return { visitor: { // your visitor methods go here diff --git a/packages/babel-plugin-constant-folding/.npmignore b/packages/babel-plugin-transform-async-to-bluebird-coroutines/.npmignore similarity index 100% rename from packages/babel-plugin-constant-folding/.npmignore rename to packages/babel-plugin-transform-async-to-bluebird-coroutines/.npmignore diff --git a/packages/babel-plugin-transform-async-to-bluebird-coroutines/README.md b/packages/babel-plugin-transform-async-to-bluebird-coroutines/README.md new file mode 100644 index 0000000000..6cf96b4373 --- /dev/null +++ b/packages/babel-plugin-transform-async-to-bluebird-coroutines/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-async-to-bluebird-coroutines + +Turn async functions into a Bluebird coroutine + +## Installation + +```sh +$ npm install babel-plugin-transform-async-to-bluebird-coroutines +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-async-to-bluebird-coroutines"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-async-to-bluebird-coroutines script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-async-to-bluebird-coroutines"] +}); +``` diff --git a/packages/babel-plugin-async-to-bluebird-coroutines/package.json b/packages/babel-plugin-transform-async-to-bluebird-coroutines/package.json similarity index 76% rename from packages/babel-plugin-async-to-bluebird-coroutines/package.json rename to packages/babel-plugin-transform-async-to-bluebird-coroutines/package.json index 827967e422..8ed13dc485 100644 --- a/packages/babel-plugin-async-to-bluebird-coroutines/package.json +++ b/packages/babel-plugin-transform-async-to-bluebird-coroutines/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-async-to-bluebird-coroutines", + "name": "babel-plugin-transform-async-to-bluebird-coroutines", "version": "1.0.0", "description": "Turn async functions into a Bluebird coroutine", "repository": "babel/babel", diff --git a/packages/babel-plugin-async-to-generator/src/index.js b/packages/babel-plugin-transform-async-to-bluebird-coroutines/src/index.js similarity index 65% rename from packages/babel-plugin-async-to-generator/src/index.js rename to packages/babel-plugin-transform-async-to-bluebird-coroutines/src/index.js index 9e1abb71bf..6845446a11 100644 --- a/packages/babel-plugin-async-to-generator/src/index.js +++ b/packages/babel-plugin-transform-async-to-bluebird-coroutines/src/index.js @@ -1,4 +1,4 @@ -export default function ({ types: t }) { +export default function () { return { visitor: { // your visitor methods go here diff --git a/packages/babel-plugin-dead-code-elimination/.npmignore b/packages/babel-plugin-transform-async-to-generator/.npmignore similarity index 100% rename from packages/babel-plugin-dead-code-elimination/.npmignore rename to packages/babel-plugin-transform-async-to-generator/.npmignore diff --git a/packages/babel-plugin-async-to-generator/README.md b/packages/babel-plugin-transform-async-to-generator/README.md similarity index 50% rename from packages/babel-plugin-async-to-generator/README.md rename to packages/babel-plugin-transform-async-to-generator/README.md index c5a76edbff..b9b6f1d1af 100644 --- a/packages/babel-plugin-async-to-generator/README.md +++ b/packages/babel-plugin-transform-async-to-generator/README.md @@ -1,11 +1,11 @@ -# babel-plugin-async-to-generator +# babel-plugin-transform-async-to-generator Turn async functions into ES2015 generators ## Installation ```sh -$ npm install babel-plugin-async-to-generator +$ npm install babel-plugin-transform-async-to-generator ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-async-to-generator ```json { - "plugins": ["async-to-generator"] + "plugins": ["transform-async-to-generator"] } ``` ### Via CLI ```sh -$ babel --plugins async-to-generator script.js +$ babel --plugins transform-async-to-generator script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["async-to-generator"] + plugins: ["transform-async-to-generator"] }); ``` diff --git a/packages/babel-plugin-async-to-generator/package.json b/packages/babel-plugin-transform-async-to-generator/package.json similarity index 78% rename from packages/babel-plugin-async-to-generator/package.json rename to packages/babel-plugin-transform-async-to-generator/package.json index 2b306cb4c6..1f6dcf377a 100644 --- a/packages/babel-plugin-async-to-generator/package.json +++ b/packages/babel-plugin-transform-async-to-generator/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-async-to-generator", + "name": "babel-plugin-transform-async-to-generator", "version": "1.0.0", "description": "Turn async functions into ES2015 generators", "repository": "babel/babel", diff --git a/packages/babel-plugin-class-properties/src/index.js b/packages/babel-plugin-transform-async-to-generator/src/index.js similarity index 65% rename from packages/babel-plugin-class-properties/src/index.js rename to packages/babel-plugin-transform-async-to-generator/src/index.js index 9e1abb71bf..6845446a11 100644 --- a/packages/babel-plugin-class-properties/src/index.js +++ b/packages/babel-plugin-transform-async-to-generator/src/index.js @@ -1,4 +1,4 @@ -export default function ({ types: t }) { +export default function () { return { visitor: { // your visitor methods go here diff --git a/packages/babel-plugin-decorators/.npmignore b/packages/babel-plugin-transform-class-properties/.npmignore similarity index 100% rename from packages/babel-plugin-decorators/.npmignore rename to packages/babel-plugin-transform-class-properties/.npmignore diff --git a/packages/babel-plugin-transform-class-properties/README.md b/packages/babel-plugin-transform-class-properties/README.md new file mode 100644 index 0000000000..6b66fcc4f8 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/README.md @@ -0,0 +1,33 @@ +# babel-plugin-transform-class-properties + +## Installation + +```sh +$ npm install babel-plugin-transform-class-properties +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-class-properties"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-class-properties script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-class-properties"] +}); +``` diff --git a/packages/babel-plugin-transform-class-properties/package.json b/packages/babel-plugin-transform-class-properties/package.json new file mode 100644 index 0000000000..3fd49e2d99 --- /dev/null +++ b/packages/babel-plugin-transform-class-properties/package.json @@ -0,0 +1,11 @@ +{ + "name": "babel-plugin-transform-class-properties", + "version": "1.0.0", + "description": "", + "repository": "babel/babel", + "license": "MIT", + "main": "lib/index.js", + "keywords": [ + "babel-plugin" + ] +} diff --git a/packages/babel-plugin-async-functions/src/index.js b/packages/babel-plugin-transform-class-properties/src/index.js similarity index 65% rename from packages/babel-plugin-async-functions/src/index.js rename to packages/babel-plugin-transform-class-properties/src/index.js index 9e1abb71bf..6845446a11 100644 --- a/packages/babel-plugin-async-functions/src/index.js +++ b/packages/babel-plugin-transform-class-properties/src/index.js @@ -1,4 +1,4 @@ -export default function ({ types: t }) { +export default function () { return { visitor: { // your visitor methods go here diff --git a/packages/babel-plugin-do-expressions/.npmignore b/packages/babel-plugin-transform-comprehensions/.npmignore similarity index 100% rename from packages/babel-plugin-do-expressions/.npmignore rename to packages/babel-plugin-transform-comprehensions/.npmignore diff --git a/packages/babel-plugin-comprehensions/README.md b/packages/babel-plugin-transform-comprehensions/README.md similarity index 53% rename from packages/babel-plugin-comprehensions/README.md rename to packages/babel-plugin-transform-comprehensions/README.md index 53d1f3e140..96577a2e44 100644 --- a/packages/babel-plugin-comprehensions/README.md +++ b/packages/babel-plugin-transform-comprehensions/README.md @@ -1,11 +1,11 @@ -# babel-plugin-comprehensions +# babel-plugin-transform-comprehensions Compile array and generator comprehensions to ES5 ## Installation ```sh -$ npm install babel-plugin-comprehensions +$ npm install babel-plugin-transform-comprehensions ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-comprehensions ```json { - "plugins": ["comprehensions"] + "plugins": ["transform-comprehensions"] } ``` ### Via CLI ```sh -$ babel --plugins comprehensions script.js +$ babel --plugins transform-comprehensions script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["comprehensions"] + plugins: ["transform-comprehensions"] }); ``` diff --git a/packages/babel-plugin-comprehensions/package.json b/packages/babel-plugin-transform-comprehensions/package.json similarity index 80% rename from packages/babel-plugin-comprehensions/package.json rename to packages/babel-plugin-transform-comprehensions/package.json index 870755f3c0..65d8471a42 100644 --- a/packages/babel-plugin-comprehensions/package.json +++ b/packages/babel-plugin-transform-comprehensions/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-comprehensions", + "name": "babel-plugin-transform-comprehensions", "version": "1.0.0", "description": "Compile array and generator comprehensions to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-comprehensions/src/index.js b/packages/babel-plugin-transform-comprehensions/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-comprehensions/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-arrow-functions/.npmignore b/packages/babel-plugin-transform-constant-folding/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-arrow-functions/.npmignore rename to packages/babel-plugin-transform-constant-folding/.npmignore diff --git a/packages/babel-plugin-constant-folding/README.md b/packages/babel-plugin-transform-constant-folding/README.md similarity index 56% rename from packages/babel-plugin-constant-folding/README.md rename to packages/babel-plugin-transform-constant-folding/README.md index ea3628c133..4e54697dd5 100644 --- a/packages/babel-plugin-constant-folding/README.md +++ b/packages/babel-plugin-transform-constant-folding/README.md @@ -1,11 +1,11 @@ -# babel-plugin-constant-folding +# babel-plugin-transform-constant-folding Compile static constants (ie. code that we can statically determine to be constant at runtime) ## Installation ```sh -$ npm install babel-plugin-constant-folding +$ npm install babel-plugin-transform-constant-folding ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-constant-folding ```json { - "plugins": ["constant-folding"] + "plugins": ["transform-constant-folding"] } ``` ### Via CLI ```sh -$ babel --plugins constant-folding script.js +$ babel --plugins transform-constant-folding script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["constant-folding"] + plugins: ["transform-constant-folding"] }); ``` diff --git a/packages/babel-plugin-constant-folding/package.json b/packages/babel-plugin-transform-constant-folding/package.json similarity index 68% rename from packages/babel-plugin-constant-folding/package.json rename to packages/babel-plugin-transform-constant-folding/package.json index 583b981b9e..c0a30610ec 100644 --- a/packages/babel-plugin-constant-folding/package.json +++ b/packages/babel-plugin-transform-constant-folding/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-constant-folding", + "name": "babel-plugin-transform-constant-folding", "version": "1.0.1", "description": "Compile static constants (ie. code that we can statically determine to be constant at runtime)", - "repository": "babel/babelbabel-plugin-constant-folding", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-constant-folding/src/index.js b/packages/babel-plugin-transform-constant-folding/src/index.js similarity index 61% rename from packages/babel-plugin-constant-folding/src/index.js rename to packages/babel-plugin-transform-constant-folding/src/index.js index 32f26caa9a..885f285ac8 100644 --- a/packages/babel-plugin-constant-folding/src/index.js +++ b/packages/babel-plugin-transform-constant-folding/src/index.js @@ -1,10 +1,5 @@ -export default function ({ Plugin, types: t }) { +export default function ({ types: t }) { return { - metadata: { - group: "builtin-prepass", - experimental: true - }, - visitor: { AssignmentExpression() { var left = this.get("left"); @@ -21,29 +16,29 @@ export default function ({ Plugin, types: t }) { } }, - IfStatement() { - var evaluated = this.get("test").evaluate(); + IfStatement(path) { + var evaluated = path.get("test").evaluate(); if (!evaluated.confident) { // todo: deopt binding values for constant violations inside - return this.skip(); + return path.skip(); } if (evaluated.value) { - this.skipKey("alternate"); + path.skipKey("alternate"); } else { - this.skipKey("consequent"); + path.skipKey("consequent"); } }, Scopable: { - enter() { - var funcScope = this.scope.getFunctionParent(); + enter(path) { + var funcScope = path.scope.getFunctionParent(); - for (var name in this.scope.bindings) { - var binding = this.scope.bindings[name]; + for (var name in path.scope.bindings) { + var binding = path.scope.bindings[name]; var deopt = false; - for (var path of (binding.constantViolations: Array)) { + for (let path of (binding.constantViolations: Array)) { var funcViolationScope = path.scope.getFunctionParent(); if (funcViolationScope !== funcScope) { deopt = true; @@ -55,17 +50,17 @@ export default function ({ Plugin, types: t }) { } }, - exit() { - for (var name in this.scope.bindings) { - var binding = this.scope.bindings[name]; + exit(path) { + for (var name in path.scope.bindings) { + var binding = path.scope.bindings[name]; binding.clearValue(); } } }, Expression: { - exit() { - var res = this.evaluate(); + exit(path) { + var res = path.evaluate(); if (res.confident) return t.valueToNode(res.value); } } diff --git a/packages/babel-plugin-es2015-block-scoped-functions/.npmignore b/packages/babel-plugin-transform-dead-code-elimination/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-block-scoped-functions/.npmignore rename to packages/babel-plugin-transform-dead-code-elimination/.npmignore diff --git a/packages/babel-plugin-transform-dead-code-elimination/README.md b/packages/babel-plugin-transform-dead-code-elimination/README.md new file mode 100644 index 0000000000..d5c9c10eb8 --- /dev/null +++ b/packages/babel-plugin-transform-dead-code-elimination/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-dead-code-elimination + +Eliminate dead code + +## Installation + +```sh +$ npm install babel-plugin-transform-dead-code-elimination +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-dead-code-elimination"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-dead-code-elimination script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-dead-code-elimination"] +}); +``` diff --git a/packages/babel-plugin-dead-code-elimination/package.json b/packages/babel-plugin-transform-dead-code-elimination/package.json similarity index 57% rename from packages/babel-plugin-dead-code-elimination/package.json rename to packages/babel-plugin-transform-dead-code-elimination/package.json index ece753b8c7..ccae3de84f 100644 --- a/packages/babel-plugin-dead-code-elimination/package.json +++ b/packages/babel-plugin-transform-dead-code-elimination/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-dead-code-elimination", + "name": "babel-plugin-transform-dead-code-elimination", "version": "1.0.2", "description": "Eliminate dead code", - "repository": "babel/babelbabel-plugin-dead-code-elimination", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-dead-code-elimination/src/index.js b/packages/babel-plugin-transform-dead-code-elimination/src/index.js similarity index 78% rename from packages/babel-plugin-dead-code-elimination/src/index.js rename to packages/babel-plugin-transform-dead-code-elimination/src/index.js index 98d0eb4d02..ea219b213d 100644 --- a/packages/babel-plugin-dead-code-elimination/src/index.js +++ b/packages/babel-plugin-transform-dead-code-elimination/src/index.js @@ -1,4 +1,4 @@ -export default function ({ Plugin, types: t }) { +export default function ({ types: t }) { function toStatements(node) { if (t.isBlockStatement(node)) { var hasBlockScoped = false; @@ -17,7 +17,9 @@ export default function ({ Plugin, types: t }) { } var visitor = { - ReferencedIdentifier(node, parent, scope) { + ReferencedIdentifier(path) { + var { node, scope } = path; + var binding = scope.getBinding(node.name); if (!binding || binding.references > 1 || !binding.constant) return; if (binding.kind === "param" || binding.kind === "module") return; @@ -38,63 +40,62 @@ export default function ({ Plugin, types: t }) { if (binding.path.scope.parent !== scope) return; } - if (this.findParent((path) => path.node === replacement)) { + if (path.findParent((path) => path.node === replacement)) { return; } t.toExpression(replacement); scope.removeBinding(node.name); - binding.path.dangerouslyRemove(); + binding.path.remove(); return replacement; }, - "ClassDeclaration|FunctionDeclaration"(node, parent, scope) { - var binding = scope.getBinding(node.id.name); + "ClassDeclaration|FunctionDeclaration"(path) { + var binding = path.scope.getBinding(path.node.id.name); if (binding && !binding.referenced) { - this.dangerouslyRemove(); + path.remove(); } }, - VariableDeclarator(node, parent, scope) { + VariableDeclarator({ node, scope }) { if (!t.isIdentifier(node.id) || !scope.isPure(node.init, true)) return; visitor["ClassDeclaration|FunctionDeclaration"].apply(this, arguments); }, - ConditionalExpression(node) { - var evaluateTest = this.get("test").evaluateTruthy(); + ConditionalExpression(path) { + var evaluateTest = path.get("test").evaluateTruthy(); if (evaluateTest === true) { - return node.consequent; + return path.node.consequent; } else if (evaluateTest === false) { - return node.alternate; + return path.node.alternate; } }, - BlockStatement() { - var paths = this.get("body"); + BlockStatement(path) { + var paths: Array = path.get("body"); var purge = false; - for (var i = 0; i < paths.length; i++) { - let path = paths[i]; - + for (let path of paths) { if (!purge && path.isCompletionStatement()) { purge = true; continue; } if (purge && !path.isFunctionDeclaration()) { - path.dangerouslyRemove(); + path.remove(); } } }, IfStatement: { - exit(node) { + exit(path) { + var { node } = path; var consequent = node.consequent; var alternate = node.alternate; var test = node.test; - var evaluateTest = this.get("test").evaluateTruthy(); + var evaluateTest = path.get("test").evaluateTruthy(); // we can check if a test will be truthy 100% and if so then we can inline // the consequent and completely ignore the alternate @@ -118,7 +119,7 @@ export default function ({ Plugin, types: t }) { if (alternate) { return toStatements(alternate); } else { - return this.dangerouslyRemove(); + return path.remove(); } } @@ -146,12 +147,5 @@ export default function ({ Plugin, types: t }) { } }; - return { - metadata: { - group: "builtin-pre", - experimental: true - }, - - visitor - }; + return { visitor }; } diff --git a/packages/babel-plugin-es2015-block-scoping/.npmignore b/packages/babel-plugin-transform-decorators/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-block-scoping/.npmignore rename to packages/babel-plugin-transform-decorators/.npmignore diff --git a/packages/babel-plugin-decorators/README.md b/packages/babel-plugin-transform-decorators/README.md similarity index 55% rename from packages/babel-plugin-decorators/README.md rename to packages/babel-plugin-transform-decorators/README.md index c06fd0b75b..7a0d76196d 100644 --- a/packages/babel-plugin-decorators/README.md +++ b/packages/babel-plugin-transform-decorators/README.md @@ -1,11 +1,11 @@ -# babel-plugin-decorators +# babel-plugin-transform-decorators Compile class and object decorators to ES5 ## Installation ```sh -$ npm install babel-plugin-decorators +$ npm install babel-plugin-transform-decorators ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-decorators ```json { - "plugins": ["decorators"] + "plugins": ["transform-decorators"] } ``` ### Via CLI ```sh -$ babel --plugins decorators script.js +$ babel --plugins transform-decorators script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["decorators"] + plugins: ["transform-decorators"] }); ``` diff --git a/packages/babel-plugin-decorators/package.json b/packages/babel-plugin-transform-decorators/package.json similarity index 81% rename from packages/babel-plugin-decorators/package.json rename to packages/babel-plugin-transform-decorators/package.json index fbf71128a6..d42435aa62 100644 --- a/packages/babel-plugin-decorators/package.json +++ b/packages/babel-plugin-transform-decorators/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-decorators", + "name": "babel-plugin-transform-decorators", "version": "1.0.0", "description": "Compile class and object decorators to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-decorators/src/index.js b/packages/babel-plugin-transform-decorators/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-decorators/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-classes/.npmignore b/packages/babel-plugin-transform-do-expressions/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-classes/.npmignore rename to packages/babel-plugin-transform-do-expressions/.npmignore diff --git a/packages/babel-plugin-do-expressions/README.md b/packages/babel-plugin-transform-do-expressions/README.md similarity index 51% rename from packages/babel-plugin-do-expressions/README.md rename to packages/babel-plugin-transform-do-expressions/README.md index 62dd32cf8b..bdf303c85d 100644 --- a/packages/babel-plugin-do-expressions/README.md +++ b/packages/babel-plugin-transform-do-expressions/README.md @@ -1,11 +1,11 @@ -# babel-plugin-do-expressions +# babel-plugin-transform-do-expressions Compile do expressions to ES5 ## Installation ```sh -$ npm install babel-plugin-do-expressions +$ npm install babel-plugin-transform-do-expressions ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-do-expressions ```json { - "plugins": ["do-expressions"] + "plugins": ["transform-do-expressions"] } ``` ### Via CLI ```sh -$ babel --plugins do-expressions script.js +$ babel --plugins transform-do-expressions script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["do-expressions"] + plugins: ["transform-do-expressions"] }); ``` diff --git a/packages/babel-plugin-do-expressions/package.json b/packages/babel-plugin-transform-do-expressions/package.json similarity index 79% rename from packages/babel-plugin-do-expressions/package.json rename to packages/babel-plugin-transform-do-expressions/package.json index 8572ad3331..a9bd561141 100644 --- a/packages/babel-plugin-do-expressions/package.json +++ b/packages/babel-plugin-transform-do-expressions/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-do-expressions", + "name": "babel-plugin-transform-do-expressions", "version": "1.0.0", "description": "Compile do expressions to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-do-expressions/src/index.js b/packages/babel-plugin-transform-do-expressions/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-do-expressions/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-computed-properties/.npmignore b/packages/babel-plugin-transform-es2015-arrow-functions/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-computed-properties/.npmignore rename to packages/babel-plugin-transform-es2015-arrow-functions/.npmignore diff --git a/packages/babel-plugin-transform-es2015-arrow-functions/README.md b/packages/babel-plugin-transform-es2015-arrow-functions/README.md new file mode 100644 index 0000000000..4ae0a29cde --- /dev/null +++ b/packages/babel-plugin-transform-es2015-arrow-functions/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-arrow-functions + +Compile ES2015 arrow functions to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-arrow-functions +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-arrow-functions"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-arrow-functions script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-arrow-functions"] +}); +``` diff --git a/packages/babel-plugin-es2015-arrow-functions/package.json b/packages/babel-plugin-transform-es2015-arrow-functions/package.json similarity index 77% rename from packages/babel-plugin-es2015-arrow-functions/package.json rename to packages/babel-plugin-transform-es2015-arrow-functions/package.json index 9fe2dfcc8a..42eabb2309 100644 --- a/packages/babel-plugin-es2015-arrow-functions/package.json +++ b/packages/babel-plugin-transform-es2015-arrow-functions/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-arrow-functions", + "name": "babel-plugin-transform-es2015-arrow-functions", "version": "1.0.0", "description": "Compile ES2015 arrow functions to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-arrow-functions/src/index.js b/packages/babel-plugin-transform-es2015-arrow-functions/src/index.js new file mode 100644 index 0000000000..017853c983 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-arrow-functions/src/index.js @@ -0,0 +1,32 @@ +export default function ({ types: t }) { + return { + visitor: { + ArrowFunctionExpression(path, state) { + if (state.opts.spec) { + if (path.node.shadow) return; + path.node.shadow = { this: false }; + + var boundThis = t.thisExpression(); + boundThis._forceShadow = path; + + // make sure that arrow function won't be instantiated + path.ensureBlock(); + path.get("body").unshiftContainer( + "body", + t.expressionStatement(t.callExpression(state.addHelper("new-arrow-check"), [ + t.thisExpression(), + boundThis + ])) + ); + + path.replaceWith(t.callExpression( + t.memberExpression(path.node, t.identifier("bind")), + [t.thisExpression()] + )); + } else { + path.arrowFunctionToShadowed(); + } + } + } + }; +} diff --git a/packages/babel-plugin-es2015-constants/.npmignore b/packages/babel-plugin-transform-es2015-block-scoped-functions/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-constants/.npmignore rename to packages/babel-plugin-transform-es2015-block-scoped-functions/.npmignore diff --git a/packages/babel-plugin-transform-es2015-block-scoped-functions/README.md b/packages/babel-plugin-transform-es2015-block-scoped-functions/README.md new file mode 100644 index 0000000000..fa4eb2de1f --- /dev/null +++ b/packages/babel-plugin-transform-es2015-block-scoped-functions/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-block-scoped-functions + +Babel plugin to ensure function declarations at the block level are block scoped. + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-block-scoped-functions +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-block-scoped-functions"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-block-scoped-functions script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-block-scoped-functions"] +}); +``` diff --git a/packages/babel-plugin-es2015-block-scoped-functions/package.json b/packages/babel-plugin-transform-es2015-block-scoped-functions/package.json similarity index 66% rename from packages/babel-plugin-es2015-block-scoped-functions/package.json rename to packages/babel-plugin-transform-es2015-block-scoped-functions/package.json index 8f6bd76583..b23f5f3ff4 100644 --- a/packages/babel-plugin-es2015-block-scoped-functions/package.json +++ b/packages/babel-plugin-transform-es2015-block-scoped-functions/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-es2015-block-scoped-functions", + "name": "babel-plugin-transform-es2015-block-scoped-functions", "version": "1.0.4", "description": "Babel plugin to ensure function declarations at the block level are block scoped", - "repository": "babel/babelbabel-plugin-jscript", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-es2015-block-scoped-functions/src/index.js b/packages/babel-plugin-transform-es2015-block-scoped-functions/src/index.js similarity index 76% rename from packages/babel-plugin-es2015-block-scoped-functions/src/index.js rename to packages/babel-plugin-transform-es2015-block-scoped-functions/src/index.js index a9b862b2e2..192df08324 100644 --- a/packages/babel-plugin-es2015-block-scoped-functions/src/index.js +++ b/packages/babel-plugin-transform-es2015-block-scoped-functions/src/index.js @@ -1,12 +1,11 @@ -export default function ({ Plugin, types: t }) { +export default function ({ types: t }) { function statementList(key, path) { - var paths = path.get(key); - - for (var i = 0; i < paths.length; i++) { - let path = paths[i]; + var paths: Array = path.get(key); + for (let path of paths) { var func = path.node; - if (!t.isFunctionDeclaration(func)) continue; + + if (!path.isFunctionDeclaration()) continue; var declar = t.variableDeclaration("let", [ t.variableDeclarator(func.id, t.toExpression(func)) diff --git a/packages/babel-plugin-es2015-destructuring/.npmignore b/packages/babel-plugin-transform-es2015-block-scoping/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-destructuring/.npmignore rename to packages/babel-plugin-transform-es2015-block-scoping/.npmignore diff --git a/packages/babel-plugin-es2015-block-scoping/README.md b/packages/babel-plugin-transform-es2015-block-scoping/README.md similarity index 50% rename from packages/babel-plugin-es2015-block-scoping/README.md rename to packages/babel-plugin-transform-es2015-block-scoping/README.md index b93242e191..06884df4f9 100644 --- a/packages/babel-plugin-es2015-block-scoping/README.md +++ b/packages/babel-plugin-transform-es2015-block-scoping/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-block-scoping +# babel-plugin-transform-es2015-block-scoping Compile ES2015 block scoping (const and let) to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-block-scoping +$ npm install babel-plugin-transform-es2015-block-scoping ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-block-scoping ```json { - "plugins": ["es2015-block-scoping"] + "plugins": ["transform-es2015-block-scoping"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-block-scoping script.js +$ babel --plugins transform-es2015-block-scoping script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-block-scoping"] + plugins: ["transform-es2015-block-scoping"] }); ``` diff --git a/packages/babel-plugin-es2015-block-scoping/package.json b/packages/babel-plugin-transform-es2015-block-scoping/package.json similarity index 78% rename from packages/babel-plugin-es2015-block-scoping/package.json rename to packages/babel-plugin-transform-es2015-block-scoping/package.json index 1d52749a03..86ab3ac07a 100644 --- a/packages/babel-plugin-es2015-block-scoping/package.json +++ b/packages/babel-plugin-transform-es2015-block-scoping/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-block-scoping", + "name": "babel-plugin-transform-es2015-block-scoping", "version": "1.0.0", "description": "Compile ES2015 block scoping (const and let) to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-block-scoping/src/index.js b/packages/babel-plugin-transform-es2015-block-scoping/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-block-scoping/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-for-of/.npmignore b/packages/babel-plugin-transform-es2015-classes/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-for-of/.npmignore rename to packages/babel-plugin-transform-es2015-classes/.npmignore diff --git a/packages/babel-plugin-es2015-classes/README.md b/packages/babel-plugin-transform-es2015-classes/README.md similarity index 51% rename from packages/babel-plugin-es2015-classes/README.md rename to packages/babel-plugin-transform-es2015-classes/README.md index 57b98364cf..34d465b11e 100644 --- a/packages/babel-plugin-es2015-classes/README.md +++ b/packages/babel-plugin-transform-es2015-classes/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-classes +# babel-plugin-transform-es2015-classes Compile ES2015 classes to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-classes +$ npm install babel-plugin-transform-es2015-classes ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-classes ```json { - "plugins": ["es2015-classes"] + "plugins": ["transform-es2015-classes"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-classes script.js +$ babel --plugins transform-es2015-classes script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-classes"] + plugins: ["transform-es2015-classes"] }); ``` diff --git a/packages/babel-plugin-es2015-classes/package.json b/packages/babel-plugin-transform-es2015-classes/package.json similarity index 79% rename from packages/babel-plugin-es2015-classes/package.json rename to packages/babel-plugin-transform-es2015-classes/package.json index cf2e8e3b0a..e67c9f019e 100644 --- a/packages/babel-plugin-es2015-classes/package.json +++ b/packages/babel-plugin-transform-es2015-classes/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-classes", + "name": "babel-plugin-transform-es2015-classes", "version": "1.0.0", "description": "Compile ES2015 classes to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-classes/src/index.js b/packages/babel-plugin-transform-es2015-classes/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-classes/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-function-name/.npmignore b/packages/babel-plugin-transform-es2015-computed-properties/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-function-name/.npmignore rename to packages/babel-plugin-transform-es2015-computed-properties/.npmignore diff --git a/packages/babel-plugin-transform-es2015-computed-properties/README.md b/packages/babel-plugin-transform-es2015-computed-properties/README.md new file mode 100644 index 0000000000..830b35204b --- /dev/null +++ b/packages/babel-plugin-transform-es2015-computed-properties/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-computed-properties + +Compile ES2015 computed properties to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-computed-properties +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-computed-properties"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-computed-properties script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-computed-properties"] +}); +``` diff --git a/packages/babel-plugin-es2015-computed-properties/package.json b/packages/babel-plugin-transform-es2015-computed-properties/package.json similarity index 76% rename from packages/babel-plugin-es2015-computed-properties/package.json rename to packages/babel-plugin-transform-es2015-computed-properties/package.json index 0732a5f5b4..7525216cca 100644 --- a/packages/babel-plugin-es2015-computed-properties/package.json +++ b/packages/babel-plugin-transform-es2015-computed-properties/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-computed-properties", + "name": "babel-plugin-transform-es2015-computed-properties", "version": "1.0.0", "description": "Compile ES2015 computed properties to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-computed-properties/src/index.js b/packages/babel-plugin-transform-es2015-computed-properties/src/index.js similarity index 96% rename from packages/babel-plugin-es2015-computed-properties/src/index.js rename to packages/babel-plugin-transform-es2015-computed-properties/src/index.js index 52e34fae11..c6c33b61f2 100644 --- a/packages/babel-plugin-es2015-computed-properties/src/index.js +++ b/packages/babel-plugin-transform-es2015-computed-properties/src/index.js @@ -47,7 +47,7 @@ export default function ({ types: t }) { return { visitor: { ObjectExpression: { - exit(node, parent, scope, file) { + exit({ node, scope, parent }, file) { var hasComputed = false; for (let prop of (node.properties: Array)) { @@ -76,24 +76,15 @@ export default function ({ types: t }) { } }); - // - var objId = scope.generateUidIdentifierBasedOnNode(parent); - - // - var body = []; - // - var callback = spec; if (file.isLoose("es6.properties.computed")) callback = loose; var result = callback(node, body, objId, initProps, file); if (result) return result; - // - body.unshift(t.variableDeclaration("var", [ t.variableDeclarator(objId, t.objectExpression(initProps)) ])); diff --git a/packages/babel-plugin-es2015-literals/.npmignore b/packages/babel-plugin-transform-es2015-constants/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-literals/.npmignore rename to packages/babel-plugin-transform-es2015-constants/.npmignore diff --git a/packages/babel-plugin-es2015-constants/README.md b/packages/babel-plugin-transform-es2015-constants/README.md similarity index 50% rename from packages/babel-plugin-es2015-constants/README.md rename to packages/babel-plugin-transform-es2015-constants/README.md index d4b4666807..f3e5376c17 100644 --- a/packages/babel-plugin-es2015-constants/README.md +++ b/packages/babel-plugin-transform-es2015-constants/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-constants +# babel-plugin-transform-es2015-constants Compile ES2015 constants to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-constants +$ npm install babel-plugin-transform-es2015-constants ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-constants ```json { - "plugins": ["es2015-constants"] + "plugins": ["transform-es2015-constants"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-constants script.js +$ babel --plugins transform-es2015-constants script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-constants"] + plugins: ["transform-es2015-constants"] }); ``` diff --git a/packages/babel-plugin-es2015-constants/package.json b/packages/babel-plugin-transform-es2015-constants/package.json similarity index 78% rename from packages/babel-plugin-es2015-constants/package.json rename to packages/babel-plugin-transform-es2015-constants/package.json index d27fbd4410..3f1b5910e5 100644 --- a/packages/babel-plugin-es2015-constants/package.json +++ b/packages/babel-plugin-transform-es2015-constants/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-constants", + "name": "babel-plugin-transform-es2015-constants", "version": "1.0.0", "description": "Compile ES2015 constants to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-constants/src/index.js b/packages/babel-plugin-transform-es2015-constants/src/index.js similarity index 70% rename from packages/babel-plugin-es2015-constants/src/index.js rename to packages/babel-plugin-transform-es2015-constants/src/index.js index 0a6b65c15c..a6a094ca65 100644 --- a/packages/babel-plugin-es2015-constants/src/index.js +++ b/packages/babel-plugin-transform-es2015-constants/src/index.js @@ -1,20 +1,18 @@ export default function ({ messages }) { return { visitor: { - Scope(node, parent, scope) { + Scope({ scope }) { for (var name in scope.bindings) { var binding = scope.bindings[name]; - - // not a constant if (binding.kind !== "const" && binding.kind !== "module") continue; for (var violation of (binding.constantViolations: Array)) { - throw violation.errorWithNode(messages.get("readOnly", name)); + throw violation.buildCodeFrameError(messages.get("readOnly", name)); } } }, - VariableDeclaration(node) { + VariableDeclaration({ node }) { if (node.kind === "const") node.kind = "let"; } } diff --git a/packages/babel-plugin-es2015-object-super/.npmignore b/packages/babel-plugin-transform-es2015-destructuring/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-object-super/.npmignore rename to packages/babel-plugin-transform-es2015-destructuring/.npmignore diff --git a/packages/babel-plugin-transform-es2015-destructuring/README.md b/packages/babel-plugin-transform-es2015-destructuring/README.md new file mode 100644 index 0000000000..77e3e48f16 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-destructuring/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-destructuring + +Compile ES2015 destructuring to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-destructuring +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-destructuring"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-destructuring script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-destructuring"] +}); +``` diff --git a/packages/babel-plugin-es2015-destructuring/package.json b/packages/babel-plugin-transform-es2015-destructuring/package.json similarity index 77% rename from packages/babel-plugin-es2015-destructuring/package.json rename to packages/babel-plugin-transform-es2015-destructuring/package.json index a1be68e609..ce18916fa7 100644 --- a/packages/babel-plugin-es2015-destructuring/package.json +++ b/packages/babel-plugin-transform-es2015-destructuring/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-destructuring", + "name": "babel-plugin-transform-es2015-destructuring", "version": "1.0.0", "description": "Compile ES2015 destructuring to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-destructuring/src/index.js b/packages/babel-plugin-transform-es2015-destructuring/src/index.js similarity index 84% rename from packages/babel-plugin-es2015-destructuring/src/index.js rename to packages/babel-plugin-transform-es2015-destructuring/src/index.js index bcdb2113af..895f2b9f39 100644 --- a/packages/babel-plugin-es2015-destructuring/src/index.js +++ b/packages/babel-plugin-transform-es2015-destructuring/src/index.js @@ -5,8 +5,8 @@ export default function ({ types: t, messages }) { */ function variableDeclarationHasPattern(node) { - for (var i = 0; i < node.declarations.length; i++) { - if (t.isPattern(node.declarations[i].id)) { + for (var declar of (node.declarations: Array)) { + if (t.isPattern(declar.id)) { return true; } } @@ -18,8 +18,8 @@ export default function ({ types: t, messages }) { */ function hasRest(pattern) { - for (var i = 0; i < pattern.elements.length; i++) { - if (t.isRestElement(pattern.elements[i])) { + for (var elem of (pattern.elements: Array)) { + if (t.isRestElement(elem)) { return true; } } @@ -27,10 +27,10 @@ export default function ({ types: t, messages }) { } var arrayUnpackVisitor = { - ReferencedIdentifier(node, parent, scope, state) { - if (state.bindings[node.name]) { + ReferencedIdentifier(path, state) { + if (state.bindings[path.node.name]) { state.deopt = true; - this.stop(); + path.stop(); } } }; @@ -86,7 +86,7 @@ export default function ({ types: t, messages }) { } toArray(node, count) { - if (this.file.isLoose("es6.destructuring") || (t.isIdentifier(node) && this.arrays[node.name])) { + if (this.file.opts.loose || (t.isIdentifier(node) && this.arrays[node.name])) { return node; } else { return this.scope.toArray(node, count); @@ -127,7 +127,7 @@ export default function ({ types: t, messages }) { } } - pushObjectSpread(pattern, objRef, spreadProp, spreadPropIndex) { + pushObjectRest(pattern, objRef, spreadProp, spreadPropIndex) { // get all the keys that appear in this object before the current spread var keys = []; @@ -140,7 +140,7 @@ export default function ({ types: t, messages }) { if (i >= spreadPropIndex) break; // ignore other spread properties - if (t.isSpreadProperty(prop)) continue; + if (t.isRestProperty(prop)) continue; var key = prop.key; if (t.isIdentifier(key) && !prop.computed) key = t.stringLiteral(prop.key.name); @@ -191,8 +191,8 @@ export default function ({ types: t, messages }) { for (var i = 0; i < pattern.properties.length; i++) { var prop = pattern.properties[i]; - if (t.isSpreadProperty(prop)) { - this.pushObjectSpread(pattern, objRef, prop, i); + if (t.isRestProperty(prop)) { + this.pushObjectRest(pattern, objRef, prop, i); } else { this.pushObjectProperty(prop, objRef); } @@ -324,12 +324,9 @@ export default function ({ types: t, messages }) { return { - metadata: { - group: "builtin-advanced" - }, - visitor: { - ForXStatement(node, parent, scope, file) { + ForXStatement(path, file) { + var { node, scope } = path; var left = node.left; if (t.isPattern(left)) { @@ -341,7 +338,7 @@ export default function ({ types: t, messages }) { t.variableDeclarator(temp) ]); - this.ensureBlock(); + path.ensureBlock(); node.body.body.unshift(t.variableDeclaration("var", [ t.variableDeclarator(left, temp) @@ -371,57 +368,13 @@ export default function ({ types: t, messages }) { destructuring.init(pattern, key); - this.ensureBlock(); + path.ensureBlock(); var block = node.body; block.body = nodes.concat(block.body); }, - Function(node, parent, scope, file) { - var hasDestructuring = false; - for (let pattern of (node.params: Array)) { - if (t.isPattern(pattern)) { - hasDestructuring = true; - break; - } - } - if (!hasDestructuring) return; - - var nodes = []; - - for (var i = 0; i < node.params.length; i++) { - let pattern = node.params[i]; - if (!t.isPattern(pattern)) continue; - - var ref = scope.generateUidIdentifier("ref"); - if (t.isAssignmentPattern(pattern)) { - var _pattern = pattern; - pattern = pattern.left; - _pattern.left = ref; - } else { - node.params[i] = ref; - } - - t.inherits(ref, pattern); - - var destructuring = new DestructuringTransformer({ - blockHoist: node.params.length - i + 1, - nodes: nodes, - scope: scope, - file: file, - kind: "let" - }); - - destructuring.init(pattern, ref); - } - - this.ensureBlock(); - - var block = node.body; - block.body = nodes.concat(block.body); - }, - - CatchClause(node, parent, scope, file) { + CatchClause({ node, scope }, file) { var pattern = node.param; if (!t.isPattern(pattern)) return; @@ -441,7 +394,8 @@ export default function ({ types: t, messages }) { node.body.body = nodes.concat(node.body.body); }, - AssignmentExpression(node, parent, scope, file) { + AssignmentExpression(path, file) { + var { node, scope } = path; if (!t.isPattern(node.left)) return; var nodes = []; @@ -454,7 +408,7 @@ export default function ({ types: t, messages }) { }); var ref; - if (this.isCompletionRecord() || !this.parentPath.isExpressionStatement()) { + if (path.isCompletionRecord() || !path.parentPath.isExpressionStatement()) { ref = scope.generateUidIdentifierBasedOnNode(node.right, "ref"); nodes.push(t.variableDeclaration("var", [ @@ -475,7 +429,7 @@ export default function ({ types: t, messages }) { return nodes; }, - VariableDeclaration(node, parent, scope, file) { + VariableDeclaration({ node, scope, parent }, file) { if (t.isForXStatement(parent)) return; if (!variableDeclarationHasPattern(node)) return; @@ -519,7 +473,7 @@ export default function ({ types: t, messages }) { declar = declar || t.variableDeclaration(node.kind, []); if (!t.isVariableDeclaration(node) && declar.kind !== node.kind) { - throw file.errorWithNode(node, messages.get("invalidParentForThisNode")); + throw file.buildCodeFrameError(node, messages.get("invalidParentForThisNode")); } declar.declarations = declar.declarations.concat(node.declarations); diff --git a/packages/babel-plugin-es2015-parameters/.npmignore b/packages/babel-plugin-transform-es2015-for-of/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-parameters/.npmignore rename to packages/babel-plugin-transform-es2015-for-of/.npmignore diff --git a/packages/babel-plugin-es2015-for-of/README.md b/packages/babel-plugin-transform-es2015-for-of/README.md similarity index 52% rename from packages/babel-plugin-es2015-for-of/README.md rename to packages/babel-plugin-transform-es2015-for-of/README.md index 8fbbc0fbce..e0300c7e63 100644 --- a/packages/babel-plugin-es2015-for-of/README.md +++ b/packages/babel-plugin-transform-es2015-for-of/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-for-of +# babel-plugin-transform-es2015-for-of Compile ES2015 for...of to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-for-of +$ npm install babel-plugin-transform-es2015-for-of ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-for-of ```json { - "plugins": ["es2015-for-of"] + "plugins": ["transform-es2015-for-of"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-for-of script.js +$ babel --plugins transform-es2015-for-of script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-for-of"] + plugins: ["transform-es2015-for-of"] }); ``` diff --git a/packages/babel-plugin-es2015-for-of/package.json b/packages/babel-plugin-transform-es2015-for-of/package.json similarity index 79% rename from packages/babel-plugin-es2015-for-of/package.json rename to packages/babel-plugin-transform-es2015-for-of/package.json index d668bd5617..2940ab9616 100644 --- a/packages/babel-plugin-es2015-for-of/package.json +++ b/packages/babel-plugin-transform-es2015-for-of/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-for-of", + "name": "babel-plugin-transform-es2015-for-of", "version": "1.0.0", "description": "Compile ES2015 for...of to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-for-of/src/index.js b/packages/babel-plugin-transform-es2015-for-of/src/index.js new file mode 100644 index 0000000000..85f2b73c65 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-for-of/src/index.js @@ -0,0 +1,227 @@ +export default function ({ messages, template, types: t }) { + var buildForOfArray = template(` + for (var KEY = 0; KEY < ARR.length; KEY++) BODY; + `); + + var buildForOfLoose = template(` + for (var LOOP_OBJECT = OBJECT, + IS_ARRAY = Array.isArray(LOOP_OBJECT), + INDEX = 0, + LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) { + var ID; + if (IS_ARRAY) { + if (INDEX >= LOOP_OBJECT.length) break; + ID = LOOP_OBJECT[INDEX++]; + } else { + INDEX = LOOP_OBJECT.next(); + if (INDEX.done) break; + ID = INDEX.value; + } + } + `); + + var buildForOf = template(` + var ITERATOR_COMPLETION = true; + var ITERATOR_HAD_ERROR_KEY = false; + var ITERATOR_ERROR_KEY = undefined; + try { + for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) { + } + } catch (err) { + ITERATOR_HAD_ERROR_KEY = true; + ITERATOR_ERROR_KEY = err; + } finally { + try { + if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) { + ITERATOR_KEY.return(); + } + } finally { + if (ITERATOR_HAD_ERROR_KEY) { + throw ITERATOR_ERROR_KEY; + } + } + } + `); + + function _ForOfStatementArray(path) { + var { node, scope } = path; + var nodes = []; + var right = node.right; + + if (!t.isIdentifier(right) || !scope.hasBinding(right.name)) { + var uid = scope.generateUidIdentifier("arr"); + nodes.push(t.variableDeclaration("var", [ + t.variableDeclarator(uid, right) + ])); + right = uid; + } + + var iterationKey = scope.generateUidIdentifier("i"); + + var loop = buildForOfArray({ + BODY: node.body, + KEY: iterationKey, + ARR: right + }); + + t.inherits(loop, node); + t.ensureBlock(loop); + + var iterationValue = t.memberExpression(right, iterationKey, true); + + var left = node.left; + if (t.isVariableDeclaration(left)) { + left.declarations[0].init = iterationValue; + loop.body.body.unshift(left); + } else { + loop.body.body.unshift(t.expressionStatement(t.assignmentExpression("=", left, iterationValue))); + } + + if (path.parentPath.isLabeledStatement()) { + loop = t.labeledStatement(path.parentPath.node.label, loop); + } + + nodes.push(loop); + + return nodes; + } + + + return { + visitor: { + ForOfStatement(path, state) { + if (path.get("right").isArrayExpression()) { + return _ForOfStatementArray.call(this, path, state); + } + + var callback = spec; + if (state.opts.loose) callback = loose; + + var { node } = path; + var build = callback(path, state); + var declar = build.declar; + var loop = build.loop; + var block = loop.body; + + // ensure that it's a block so we can take all its statements + path.ensureBlock(); + + // add the value declaration to the new loop body + if (declar) { + block.body.push(declar); + } + + // push the rest of the original loop body onto our new body + block.body = block.body.concat(node.body.body); + + t.inherits(loop, node); + t.inherits(loop.body, node.body); + + if (build.replaceParent) { + path.parentPath.replaceWithMultiple(build.node); + path.remove(); + } else { + path.replaceWithMultiple(build.node); + } + } + } + }; + + function loose(path, file) { + var { node, scope } = path; + + var left = node.left; + var declar, id; + + if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) { + // for (i of test), for ({ i } of test) + id = left; + } else if (t.isVariableDeclaration(left)) { + // for (var i of test) + id = scope.generateUidIdentifier("ref"); + declar = t.variableDeclaration(left.kind, [ + t.variableDeclarator(left.declarations[0].id, id) + ]); + } else { + throw file.buildCodeFrameError(left, messages.get("unknownForHead", left.type)); + } + + var iteratorKey = scope.generateUidIdentifier("iterator"); + var isArrayKey = scope.generateUidIdentifier("isArray"); + + var loop = buildForOfLoose({ + LOOP_OBJECT: iteratorKey, + IS_ARRAY: isArrayKey, + OBJECT: node.right, + INDEX: scope.generateUidIdentifier("i"), + ID: id + }); + + if (!declar) { + // no declaration so we need to remove the variable declaration at the top of + // the for-of-loose template + loop.body.body.shift(); + } + + // + + return { + declar: declar, + node: loop, + loop: loop + }; + } + + function spec(path, file) { + var { node, scope, parent } = path; + var left = node.left; + var declar; + + var stepKey = scope.generateUidIdentifier("step"); + var stepValue = t.memberExpression(stepKey, t.identifier("value")); + + if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) { + // for (i of test), for ({ i } of test) + declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue)); + } else if (t.isVariableDeclaration(left)) { + // for (var i of test) + declar = t.variableDeclaration(left.kind, [ + t.variableDeclarator(left.declarations[0].id, stepValue) + ]); + } else { + throw file.buildCodeFrameError(left, messages.get("unknownForHead", left.type)); + } + + // + + var iteratorKey = scope.generateUidIdentifier("iterator"); + + var template = buildForOf({ + ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"), + ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"), + ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"), + ITERATOR_KEY: iteratorKey, + STEP_KEY: stepKey, + OBJECT: node.right, + BODY: null + }); + + var isLabeledParent = t.isLabeledStatement(parent); + + var tryBody = template[3].block.body; + var loop = tryBody[0]; + + if (isLabeledParent) { + tryBody[0] = t.labeledStatement(parent.label, loop); + } + + // + + return { + replaceParent: isLabeledParent, + declar: declar, + loop: loop, + node: template + }; + } +} diff --git a/packages/babel-plugin-es2015-shorthand-properties/.npmignore b/packages/babel-plugin-transform-es2015-function-name/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-shorthand-properties/.npmignore rename to packages/babel-plugin-transform-es2015-function-name/.npmignore diff --git a/packages/babel-plugin-es2015-function-name/README.md b/packages/babel-plugin-transform-es2015-function-name/README.md similarity index 50% rename from packages/babel-plugin-es2015-function-name/README.md rename to packages/babel-plugin-transform-es2015-function-name/README.md index 83d7843ade..57b690f928 100644 --- a/packages/babel-plugin-es2015-function-name/README.md +++ b/packages/babel-plugin-transform-es2015-function-name/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-function-name +# babel-plugin-transform-es2015-function-name Apply ES2015 function.name semantics to all functions ## Installation ```sh -$ npm install babel-plugin-es2015-function-name +$ npm install babel-plugin-transform-es2015-function-name ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-function-name ```json { - "plugins": ["es2015-function-name"] + "plugins": ["transform-es2015-function-name"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-function-name script.js +$ babel --plugins transform-es2015-function-name script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-function-name"] + plugins: ["transform-es2015-function-name"] }); ``` diff --git a/packages/babel-plugin-es2015-function-name/package.json b/packages/babel-plugin-transform-es2015-function-name/package.json similarity index 79% rename from packages/babel-plugin-es2015-function-name/package.json rename to packages/babel-plugin-transform-es2015-function-name/package.json index 81137d3fca..f1c6273b60 100644 --- a/packages/babel-plugin-es2015-function-name/package.json +++ b/packages/babel-plugin-transform-es2015-function-name/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-function-name", + "name": "babel-plugin-transform-es2015-function-name", "version": "1.0.0", "description": "Apply ES2015 function.name semantics to all functions", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-function-name/src/index.js b/packages/babel-plugin-transform-es2015-function-name/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-function-name/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-spread/.npmignore b/packages/babel-plugin-transform-es2015-literals/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-spread/.npmignore rename to packages/babel-plugin-transform-es2015-literals/.npmignore diff --git a/packages/babel-plugin-es2015-literals/README.md b/packages/babel-plugin-transform-es2015-literals/README.md similarity index 53% rename from packages/babel-plugin-es2015-literals/README.md rename to packages/babel-plugin-transform-es2015-literals/README.md index 3023552546..ec81710e37 100644 --- a/packages/babel-plugin-es2015-literals/README.md +++ b/packages/babel-plugin-transform-es2015-literals/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-literals +# babel-plugin-transform-es2015-literals Compile ES2015 unicode string and number literals to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-literals +$ npm install babel-plugin-transform-es2015-literals ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-literals ```json { - "plugins": ["es2015-literals"] + "plugins": ["transform-es2015-literals"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-literals script.js +$ babel --plugins transform-es2015-literals script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-literals"] + plugins: ["transform-es2015-literals"] }); ``` diff --git a/packages/babel-plugin-es2015-literals/package.json b/packages/babel-plugin-transform-es2015-literals/package.json similarity index 80% rename from packages/babel-plugin-es2015-literals/package.json rename to packages/babel-plugin-transform-es2015-literals/package.json index 9bfc8c64e8..dcbe537ea0 100644 --- a/packages/babel-plugin-es2015-literals/package.json +++ b/packages/babel-plugin-transform-es2015-literals/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-literals", + "name": "babel-plugin-transform-es2015-literals", "version": "1.0.0", "description": "Compile ES2015 unicode string and number literals to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-literals/src/index.js b/packages/babel-plugin-transform-es2015-literals/src/index.js similarity index 88% rename from packages/babel-plugin-es2015-literals/src/index.js rename to packages/babel-plugin-transform-es2015-literals/src/index.js index c848756657..4904fe01ff 100644 --- a/packages/babel-plugin-es2015-literals/src/index.js +++ b/packages/babel-plugin-transform-es2015-literals/src/index.js @@ -1,9 +1,5 @@ export default function () { return { - metadata: { - group: "builtin-pre" - }, - visitor: { NumberLiteral(node) { // number octal like 0b10 or 0o70 diff --git a/packages/babel-plugin-es2015-sticky-regex/.npmignore b/packages/babel-plugin-transform-es2015-object-super/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-sticky-regex/.npmignore rename to packages/babel-plugin-transform-es2015-object-super/.npmignore diff --git a/packages/babel-plugin-transform-es2015-object-super/README.md b/packages/babel-plugin-transform-es2015-object-super/README.md new file mode 100644 index 0000000000..ea5bf50c7f --- /dev/null +++ b/packages/babel-plugin-transform-es2015-object-super/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-object-super + +Compile ES2015 object super to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-object-super +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-object-super"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-object-super script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-object-super"] +}); +``` diff --git a/packages/babel-plugin-es2015-object-super/package.json b/packages/babel-plugin-transform-es2015-object-super/package.json similarity index 77% rename from packages/babel-plugin-es2015-object-super/package.json rename to packages/babel-plugin-transform-es2015-object-super/package.json index f035e06c25..00dae90f9b 100644 --- a/packages/babel-plugin-es2015-object-super/package.json +++ b/packages/babel-plugin-transform-es2015-object-super/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-object-super", + "name": "babel-plugin-transform-es2015-object-super", "version": "1.0.0", "description": "Compile ES2015 object super to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-object-super/src/index.js b/packages/babel-plugin-transform-es2015-object-super/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-object-super/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-tail-call/.npmignore b/packages/babel-plugin-transform-es2015-parameters/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-tail-call/.npmignore rename to packages/babel-plugin-transform-es2015-parameters/.npmignore diff --git a/packages/babel-plugin-es2015-parameters/README.md b/packages/babel-plugin-transform-es2015-parameters/README.md similarity index 51% rename from packages/babel-plugin-es2015-parameters/README.md rename to packages/babel-plugin-transform-es2015-parameters/README.md index 3e397f46eb..e443bbba37 100644 --- a/packages/babel-plugin-es2015-parameters/README.md +++ b/packages/babel-plugin-transform-es2015-parameters/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-parameters +# babel-plugin-transform-es2015-parameters Compile ES2015 default and rest parameters to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-parameters +$ npm install babel-plugin-transform-es2015-parameters ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-parameters ```json { - "plugins": ["es2015-parameters"] + "plugins": ["transform-es2015-parameters"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-parameters script.js +$ babel --plugins transform-es2015-parameters script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-parameters"] + plugins: ["transform-es2015-parameters"] }); ``` diff --git a/packages/babel-plugin-es2015-parameters/package.json b/packages/babel-plugin-transform-es2015-parameters/package.json similarity index 79% rename from packages/babel-plugin-es2015-parameters/package.json rename to packages/babel-plugin-transform-es2015-parameters/package.json index fa7eb2b45b..3c8e296966 100644 --- a/packages/babel-plugin-es2015-parameters/package.json +++ b/packages/babel-plugin-transform-es2015-parameters/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-parameters", + "name": "babel-plugin-transform-es2015-parameters", "version": "1.0.0", "description": "Compile ES2015 default and rest parameters to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-parameters/src/index.js b/packages/babel-plugin-transform-es2015-parameters/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-parameters/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es2015-template-literals/.npmignore b/packages/babel-plugin-transform-es2015-shorthand-properties/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-template-literals/.npmignore rename to packages/babel-plugin-transform-es2015-shorthand-properties/.npmignore diff --git a/packages/babel-plugin-transform-es2015-shorthand-properties/README.md b/packages/babel-plugin-transform-es2015-shorthand-properties/README.md new file mode 100644 index 0000000000..8fc11b00b2 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-shorthand-properties/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-shorthand-properties + +Compile ES2015 shorthand properties to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-shorthand-properties +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-shorthand-properties"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-shorthand-properties script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-shorthand-properties"] +}); +``` diff --git a/packages/babel-plugin-es2015-shorthand-properties/package.json b/packages/babel-plugin-transform-es2015-shorthand-properties/package.json similarity index 76% rename from packages/babel-plugin-es2015-shorthand-properties/package.json rename to packages/babel-plugin-transform-es2015-shorthand-properties/package.json index eea932732c..2ef556d43a 100644 --- a/packages/babel-plugin-es2015-shorthand-properties/package.json +++ b/packages/babel-plugin-transform-es2015-shorthand-properties/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-shorthand-properties", + "name": "babel-plugin-transform-es2015-shorthand-properties", "version": "1.0.0", "description": "Compile ES2015 shorthand properties to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-shorthand-properties/src/index.js b/packages/babel-plugin-transform-es2015-shorthand-properties/src/index.js similarity index 74% rename from packages/babel-plugin-es2015-shorthand-properties/src/index.js rename to packages/babel-plugin-transform-es2015-shorthand-properties/src/index.js index d5b50326de..abd0e3ac26 100644 --- a/packages/babel-plugin-es2015-shorthand-properties/src/index.js +++ b/packages/babel-plugin-transform-es2015-shorthand-properties/src/index.js @@ -1,7 +1,7 @@ -export default function ({ types: t }) { +export default function () { return { visitor: { - Property(node) { + Property({ node }) { if (node.method) { node.method = false; } diff --git a/packages/babel-plugin-es2015-unicode-regex/.npmignore b/packages/babel-plugin-transform-es2015-spread/.npmignore similarity index 100% rename from packages/babel-plugin-es2015-unicode-regex/.npmignore rename to packages/babel-plugin-transform-es2015-spread/.npmignore diff --git a/packages/babel-plugin-es2015-spread/README.md b/packages/babel-plugin-transform-es2015-spread/README.md similarity index 51% rename from packages/babel-plugin-es2015-spread/README.md rename to packages/babel-plugin-transform-es2015-spread/README.md index 0f27269443..f5bdfc0c0a 100644 --- a/packages/babel-plugin-es2015-spread/README.md +++ b/packages/babel-plugin-transform-es2015-spread/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-spread +# babel-plugin-transform-es2015-spread Compile ES2015 spread to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-spread +$ npm install babel-plugin-transform-es2015-spread ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-spread ```json { - "plugins": ["es2015-spread"] + "plugins": ["transform-es2015-spread"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-spread script.js +$ babel --plugins transform-es2015-spread script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-spread"] + plugins: ["transform-es2015-spread"] }); ``` diff --git a/packages/babel-plugin-es2015-spread/package.json b/packages/babel-plugin-transform-es2015-spread/package.json similarity index 79% rename from packages/babel-plugin-es2015-spread/package.json rename to packages/babel-plugin-transform-es2015-spread/package.json index e405f07f7e..a5538bd3cf 100644 --- a/packages/babel-plugin-es2015-spread/package.json +++ b/packages/babel-plugin-transform-es2015-spread/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-spread", + "name": "babel-plugin-transform-es2015-spread", "version": "1.0.0", "description": "Compile ES2015 spread to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-spread/src/index.js b/packages/babel-plugin-transform-es2015-spread/src/index.js similarity index 88% rename from packages/babel-plugin-es2015-spread/src/index.js rename to packages/babel-plugin-transform-es2015-spread/src/index.js index eb3e26463e..a43cbd85d0 100644 --- a/packages/babel-plugin-es2015-spread/src/index.js +++ b/packages/babel-plugin-transform-es2015-spread/src/index.js @@ -16,19 +16,18 @@ export default function ({ types: t }) { return false; } - function build(props, scope) { + function build(props: Array, scope) { var nodes = []; var _props = []; - var push = function () { + function push() { if (!_props.length) return; nodes.push(t.arrayExpression(_props)); _props = []; - }; + } - for (var i = 0; i < props.length; i++) { - var prop = props[i]; + for (var prop of props) { if (t.isSpreadElement(prop)) { push(); nodes.push(getSpreadLiteral(prop, scope)); @@ -43,12 +42,8 @@ export default function ({ types: t }) { } return { - metadata: { - group: "builtin-advanced" - }, - visitor: { - ArrayExpression(node, parent, scope) { + ArrayExpression({ node, scope }) { var elements = node.elements; if (!hasSpread(elements)) return; @@ -63,7 +58,9 @@ export default function ({ types: t }) { return t.callExpression(t.memberExpression(first, t.identifier("concat")), nodes); }, - CallExpression(node, parent, scope) { + CallExpression(path) { + var { node, scope } = path; + var args = node.arguments; if (!hasSpread(args)) return; @@ -87,7 +84,7 @@ export default function ({ types: t }) { var callee = node.callee; - if (this.get("callee").isMemberExpression()) { + if (path.get("callee").isMemberExpression()) { var temp = scope.maybeGenerateMemoised(callee.object); if (temp) { callee.object = t.assignmentExpression("=", temp, callee.object); @@ -103,7 +100,7 @@ export default function ({ types: t }) { node.arguments.unshift(contextLiteral); }, - NewExpression(node, parent, scope, file) { + NewExpression({ node, scope }, file) { var args = node.arguments; if (!hasSpread(args)) return; diff --git a/packages/babel-plugin-es3-member-expression-literals/.npmignore b/packages/babel-plugin-transform-es2015-sticky-regex/.npmignore similarity index 100% rename from packages/babel-plugin-es3-member-expression-literals/.npmignore rename to packages/babel-plugin-transform-es2015-sticky-regex/.npmignore diff --git a/packages/babel-plugin-es2015-sticky-regex/README.md b/packages/babel-plugin-transform-es2015-sticky-regex/README.md similarity index 51% rename from packages/babel-plugin-es2015-sticky-regex/README.md rename to packages/babel-plugin-transform-es2015-sticky-regex/README.md index e06bef84f6..61d17b58b5 100644 --- a/packages/babel-plugin-es2015-sticky-regex/README.md +++ b/packages/babel-plugin-transform-es2015-sticky-regex/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-sticky-regex +# babel-plugin-transform-es2015-sticky-regex Compile ES2015 sticky regex to an ES5 RegExp constructor ## Installation ```sh -$ npm install babel-plugin-es2015-sticky-regex +$ npm install babel-plugin-transform-es2015-sticky-regex ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-sticky-regex ```json { - "plugins": ["es2015-sticky-regex"] + "plugins": ["transform-es2015-sticky-regex"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-sticky-regex script.js +$ babel --plugins transform-es2015-sticky-regex script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-sticky-regex"] + plugins: ["transform-es2015-sticky-regex"] }); ``` diff --git a/packages/babel-plugin-es2015-sticky-regex/package.json b/packages/babel-plugin-transform-es2015-sticky-regex/package.json similarity index 79% rename from packages/babel-plugin-es2015-sticky-regex/package.json rename to packages/babel-plugin-transform-es2015-sticky-regex/package.json index 462fb00a2a..acbe54f9a8 100644 --- a/packages/babel-plugin-es2015-sticky-regex/package.json +++ b/packages/babel-plugin-transform-es2015-sticky-regex/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-sticky-regex", + "name": "babel-plugin-transform-es2015-sticky-regex", "version": "1.0.0", "description": "Compile ES2015 sticky regex to an ES5 RegExp constructor", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-sticky-regex/src/index.js b/packages/babel-plugin-transform-es2015-sticky-regex/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-sticky-regex/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es3-property-literals/.npmignore b/packages/babel-plugin-transform-es2015-tail-call/.npmignore similarity index 100% rename from packages/babel-plugin-es3-property-literals/.npmignore rename to packages/babel-plugin-transform-es2015-tail-call/.npmignore diff --git a/packages/babel-plugin-es2015-tail-call/README.md b/packages/babel-plugin-transform-es2015-tail-call/README.md similarity index 50% rename from packages/babel-plugin-es2015-tail-call/README.md rename to packages/babel-plugin-transform-es2015-tail-call/README.md index fa13bff71e..c54782c407 100644 --- a/packages/babel-plugin-es2015-tail-call/README.md +++ b/packages/babel-plugin-transform-es2015-tail-call/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es2015-tail-call +# babel-plugin-transform-es2015-tail-call Compile ES2015 tail call to ES5 ## Installation ```sh -$ npm install babel-plugin-es2015-tail-call +$ npm install babel-plugin-transform-es2015-tail-call ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es2015-tail-call ```json { - "plugins": ["es2015-tail-call"] + "plugins": ["transform-es2015-tail-call"] } ``` ### Via CLI ```sh -$ babel --plugins es2015-tail-call script.js +$ babel --plugins transform-es2015-tail-call script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es2015-tail-call"] + plugins: ["transform-es2015-tail-call"] }); ``` diff --git a/packages/babel-plugin-es2015-tail-call/package.json b/packages/babel-plugin-transform-es2015-tail-call/package.json similarity index 78% rename from packages/babel-plugin-es2015-tail-call/package.json rename to packages/babel-plugin-transform-es2015-tail-call/package.json index 9e5d9acba9..bcb93e9efd 100644 --- a/packages/babel-plugin-es2015-tail-call/package.json +++ b/packages/babel-plugin-transform-es2015-tail-call/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-tail-call", + "name": "babel-plugin-transform-es2015-tail-call", "version": "1.0.0", "description": "Compile ES2015 tail call to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-tail-call/src/index.js b/packages/babel-plugin-transform-es2015-tail-call/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-tail-call/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-es5-property-mutators/.npmignore b/packages/babel-plugin-transform-es2015-template-literals/.npmignore similarity index 100% rename from packages/babel-plugin-es5-property-mutators/.npmignore rename to packages/babel-plugin-transform-es2015-template-literals/.npmignore diff --git a/packages/babel-plugin-transform-es2015-template-literals/README.md b/packages/babel-plugin-transform-es2015-template-literals/README.md new file mode 100644 index 0000000000..07eccbc9ad --- /dev/null +++ b/packages/babel-plugin-transform-es2015-template-literals/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-template-literals + +Compile ES2015 template literals to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-template-literals +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-template-literals"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-template-literals script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-template-literals"] +}); +``` diff --git a/packages/babel-plugin-es2015-template-literals/package.json b/packages/babel-plugin-transform-es2015-template-literals/package.json similarity index 76% rename from packages/babel-plugin-es2015-template-literals/package.json rename to packages/babel-plugin-transform-es2015-template-literals/package.json index a79bd53657..c3d8774956 100644 --- a/packages/babel-plugin-es2015-template-literals/package.json +++ b/packages/babel-plugin-transform-es2015-template-literals/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-template-literals", + "name": "babel-plugin-transform-es2015-template-literals", "version": "1.0.0", "description": "Compile ES2015 template literals to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-es2015-template-literals/src/index.js b/packages/babel-plugin-transform-es2015-template-literals/src/index.js similarity index 85% rename from packages/babel-plugin-es2015-template-literals/src/index.js rename to packages/babel-plugin-transform-es2015-template-literals/src/index.js index bd5692dc9a..8e1b8fc0c9 100644 --- a/packages/babel-plugin-es2015-template-literals/src/index.js +++ b/packages/babel-plugin-transform-es2015-template-literals/src/index.js @@ -9,22 +9,18 @@ export default function ({ types: t }) { return node; } - function crawl(path) { + /*function crawl(path) { if (path.is("_templateLiteralProduced")) { crawl(path.get("left")); crawl(path.get("right")); } else if (!path.isBaseType("string") && !path.isBaseType("number")) { path.replaceWith(t.callExpression(t.identifier("String"), [path.node])); } - } + }*/ return { - metadata: { - group: "builtin-pre" - }, - visitor: { - TaggedTemplateExpression(node, parent, scope, file) { + TaggedTemplateExpression({ node }, file) { var quasi = node.quasi; var args = []; @@ -50,13 +46,13 @@ export default function ({ types: t }) { return t.callExpression(node.tag, args); }, - TemplateLiteral(node, parent, scope, file) { + TemplateLiteral(path) { var nodes = []; - for (let elem of (node.quasis: Array)) { + for (let elem of (path.node.quasis: Array)) { nodes.push(t.stringLiteral(elem.value.cooked)); - var expr = node.expressions.shift(); + var expr = path.node.expressions.shift(); if (expr) nodes.push(expr); } @@ -76,8 +72,8 @@ export default function ({ types: t }) { root = buildBinaryExpression(root, node); } - this.replaceWith(root); - crawl(this); + path.replaceWith(root); + //crawl(path); } else { return nodes[0]; } diff --git a/packages/babel-plugin-eval/.npmignore b/packages/babel-plugin-transform-es2015-unicode-regex/.npmignore similarity index 100% rename from packages/babel-plugin-eval/.npmignore rename to packages/babel-plugin-transform-es2015-unicode-regex/.npmignore diff --git a/packages/babel-plugin-transform-es2015-unicode-regex/README.md b/packages/babel-plugin-transform-es2015-unicode-regex/README.md new file mode 100644 index 0000000000..99a694cfa5 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-unicode-regex/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es2015-unicode-regex + +Compile ES2015 unicode regex to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-es2015-unicode-regex +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es2015-unicode-regex"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es2015-unicode-regex script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-unicode-regex"] +}); +``` diff --git a/packages/babel-plugin-es2015-unicode-regex/package.json b/packages/babel-plugin-transform-es2015-unicode-regex/package.json similarity index 77% rename from packages/babel-plugin-es2015-unicode-regex/package.json rename to packages/babel-plugin-transform-es2015-unicode-regex/package.json index f1e8e8416a..6d93ddef01 100644 --- a/packages/babel-plugin-es2015-unicode-regex/package.json +++ b/packages/babel-plugin-transform-es2015-unicode-regex/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es2015-unicode-regex", + "name": "babel-plugin-transform-es2015-unicode-regex", "version": "1.0.0", "description": "Compile ES2015 unicode regex to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es2015-unicode-regex/src/index.js b/packages/babel-plugin-transform-es2015-unicode-regex/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es2015-unicode-regex/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-exponentiation-operator/.npmignore b/packages/babel-plugin-transform-es3-member-expression-literals/.npmignore similarity index 100% rename from packages/babel-plugin-exponentiation-operator/.npmignore rename to packages/babel-plugin-transform-es3-member-expression-literals/.npmignore diff --git a/packages/babel-plugin-transform-es3-member-expression-literals/README.md b/packages/babel-plugin-transform-es3-member-expression-literals/README.md new file mode 100644 index 0000000000..9a1ec5842e --- /dev/null +++ b/packages/babel-plugin-transform-es3-member-expression-literals/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-es3-member-expression-literals + +Ensure that reserved words are quoted in property accesses + +## Installation + +```sh +$ npm install babel-plugin-transform-es3-member-expression-literals +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-es3-member-expression-literals"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-es3-member-expression-literals script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es3-member-expression-literals"] +}); +``` diff --git a/packages/babel-plugin-es3-member-expression-literals/package.json b/packages/babel-plugin-transform-es3-member-expression-literals/package.json similarity index 76% rename from packages/babel-plugin-es3-member-expression-literals/package.json rename to packages/babel-plugin-transform-es3-member-expression-literals/package.json index 81afa24aa2..e838ee89e7 100644 --- a/packages/babel-plugin-es3-member-expression-literals/package.json +++ b/packages/babel-plugin-transform-es3-member-expression-literals/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es3-member-expression-literals", + "name": "babel-plugin-transform-es3-member-expression-literals", "version": "1.0.0", "description": "Ensure that reserved words are quoted in property accesses", "repository": "babel/babel", diff --git a/packages/babel-plugin-es3-member-expression-literals/src/index.js b/packages/babel-plugin-transform-es3-member-expression-literals/src/index.js similarity index 88% rename from packages/babel-plugin-es3-member-expression-literals/src/index.js rename to packages/babel-plugin-transform-es3-member-expression-literals/src/index.js index 759e274ccf..efc1f6566c 100644 --- a/packages/babel-plugin-es3-member-expression-literals/src/index.js +++ b/packages/babel-plugin-transform-es3-member-expression-literals/src/index.js @@ -1,9 +1,5 @@ export default function ({ types: t }) { return { - metadata: { - group: "builtin-trailing" - }, - visitor: { MemberExpression: { exit(node) { diff --git a/packages/babel-plugin-export-extensions/.npmignore b/packages/babel-plugin-transform-es3-property-literals/.npmignore similarity index 100% rename from packages/babel-plugin-export-extensions/.npmignore rename to packages/babel-plugin-transform-es3-property-literals/.npmignore diff --git a/packages/babel-plugin-es3-property-literals/README.md b/packages/babel-plugin-transform-es3-property-literals/README.md similarity index 51% rename from packages/babel-plugin-es3-property-literals/README.md rename to packages/babel-plugin-transform-es3-property-literals/README.md index d8b916529d..308825865d 100644 --- a/packages/babel-plugin-es3-property-literals/README.md +++ b/packages/babel-plugin-transform-es3-property-literals/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es3-property-literals +# babel-plugin-transform-es3-property-literals Ensure that reserved words are quoted in object property keys ## Installation ```sh -$ npm install babel-plugin-es3-property-literals +$ npm install babel-plugin-transform-es3-property-literals ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es3-property-literals ```json { - "plugins": ["es3-property-literals"] + "plugins": ["transform-es3-property-literals"] } ``` ### Via CLI ```sh -$ babel --plugins es3-property-literals script.js +$ babel --plugins transform-es3-property-literals script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es3-property-literals"] + plugins: ["transform-es3-property-literals"] }); ``` diff --git a/packages/babel-plugin-es3-property-literals/package.json b/packages/babel-plugin-transform-es3-property-literals/package.json similarity index 79% rename from packages/babel-plugin-es3-property-literals/package.json rename to packages/babel-plugin-transform-es3-property-literals/package.json index c02edaaf9f..7175b0e583 100644 --- a/packages/babel-plugin-es3-property-literals/package.json +++ b/packages/babel-plugin-transform-es3-property-literals/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es3-property-literals", + "name": "babel-plugin-transform-es3-property-literals", "version": "1.0.0", "description": "Ensure that reserved words are quoted in object property keys", "repository": "babel/babel", diff --git a/packages/babel-plugin-es3-property-literals/src/index.js b/packages/babel-plugin-transform-es3-property-literals/src/index.js similarity index 86% rename from packages/babel-plugin-es3-property-literals/src/index.js rename to packages/babel-plugin-transform-es3-property-literals/src/index.js index d4b85f97f3..a20b07e95c 100644 --- a/packages/babel-plugin-es3-property-literals/src/index.js +++ b/packages/babel-plugin-transform-es3-property-literals/src/index.js @@ -1,11 +1,6 @@ export default function ({ types: t }) { return { - metadata: { - group: "builtin-trailing" - }, - visitor: { - Property: { exit(node) { var key = node.key; diff --git a/packages/babel-plugin-flow-strip-types/.npmignore b/packages/babel-plugin-transform-es5-property-mutators/.npmignore similarity index 100% rename from packages/babel-plugin-flow-strip-types/.npmignore rename to packages/babel-plugin-transform-es5-property-mutators/.npmignore diff --git a/packages/babel-plugin-es5-property-mutators/README.md b/packages/babel-plugin-transform-es5-property-mutators/README.md similarity index 51% rename from packages/babel-plugin-es5-property-mutators/README.md rename to packages/babel-plugin-transform-es5-property-mutators/README.md index 62612bc6ea..4b40bbfeae 100644 --- a/packages/babel-plugin-es5-property-mutators/README.md +++ b/packages/babel-plugin-transform-es5-property-mutators/README.md @@ -1,11 +1,11 @@ -# babel-plugin-es5-property-mutators +# babel-plugin-transform-es5-property-mutators Compile ES5 property mutator shorthand syntax to Object.defineProperty ## Installation ```sh -$ npm install babel-plugin-es5-property-mutators +$ npm install babel-plugin-transform-es5-property-mutators ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-es5-property-mutators ```json { - "plugins": ["es5-property-mutators"] + "plugins": ["transform-es5-property-mutators"] } ``` ### Via CLI ```sh -$ babel --plugins es5-property-mutators script.js +$ babel --plugins transform-es5-property-mutators script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["es5-property-mutators"] + plugins: ["transform-es5-property-mutators"] }); ``` diff --git a/packages/babel-plugin-es5-property-mutators/package.json b/packages/babel-plugin-transform-es5-property-mutators/package.json similarity index 80% rename from packages/babel-plugin-es5-property-mutators/package.json rename to packages/babel-plugin-transform-es5-property-mutators/package.json index ac2d197138..e9ec584e5a 100644 --- a/packages/babel-plugin-es5-property-mutators/package.json +++ b/packages/babel-plugin-transform-es5-property-mutators/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-es5-property-mutators", + "name": "babel-plugin-transform-es5-property-mutators", "version": "1.0.0", "description": "Compile ES5 property mutator shorthand syntax to Object.defineProperty", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-es5-property-mutators/src/index.js b/packages/babel-plugin-transform-es5-property-mutators/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-es5-property-mutators/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-function-bind/.npmignore b/packages/babel-plugin-transform-eval/.npmignore similarity index 100% rename from packages/babel-plugin-function-bind/.npmignore rename to packages/babel-plugin-transform-eval/.npmignore diff --git a/packages/babel-plugin-eval/README.md b/packages/babel-plugin-transform-eval/README.md similarity index 68% rename from packages/babel-plugin-eval/README.md rename to packages/babel-plugin-transform-eval/README.md index cae0be25d5..3c57bb5147 100644 --- a/packages/babel-plugin-eval/README.md +++ b/packages/babel-plugin-transform-eval/README.md @@ -1,4 +1,4 @@ -# babel-plugin-eval +# babel-plugin-transform-eval Compile eval calls with string literals @@ -19,7 +19,7 @@ eval("(function () { return 'foo'; })"); ## Installation ```sh -$ npm install babel-plugin-eval +$ npm install babel-plugin-transform-eval ``` ## Usage @@ -30,20 +30,20 @@ $ npm install babel-plugin-eval ```json { - "plugins": ["eval"] + "plugins": ["transform-eval"] } ``` ### Via CLI ```sh -$ babel --plugins eval script.js +$ babel --plugins transform-eval script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["eval"] + plugins: ["transform-eval"] }); ``` diff --git a/packages/babel-plugin-eval/package.json b/packages/babel-plugin-transform-eval/package.json similarity index 68% rename from packages/babel-plugin-eval/package.json rename to packages/babel-plugin-transform-eval/package.json index e24ef75019..243280fd4f 100644 --- a/packages/babel-plugin-eval/package.json +++ b/packages/babel-plugin-transform-eval/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-eval", + "name": "babel-plugin-transform-eval", "version": "1.0.1", "description": "Compile eval calls with string literals", - "repository": "babel/babelbabel-plugin-eval", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-eval/src/index.js b/packages/babel-plugin-transform-eval/src/index.js similarity index 58% rename from packages/babel-plugin-eval/src/index.js rename to packages/babel-plugin-transform-eval/src/index.js index a4a4c116ca..596ec54a8a 100644 --- a/packages/babel-plugin-eval/src/index.js +++ b/packages/babel-plugin-transform-eval/src/index.js @@ -1,13 +1,9 @@ export default function ({ parse, traverse }) { return { - metadata: { - group: "builtin-pre", - }, - visitor: { - CallExpression(node) { - if (this.get("callee").isIdentifier({ name: "eval" }) && node.arguments.length === 1) { - var evaluate = this.get("arguments")[0].evaluate(); + CallExpression(path) { + if (path.get("callee").isIdentifier({ name: "eval" }) && path.node.arguments.length === 1) { + var evaluate = path.get("arguments")[0].evaluate(); if (!evaluate.confident) return; var code = evaluate.value; diff --git a/packages/babel-plugin-inline-environment-variables/.npmignore b/packages/babel-plugin-transform-exponentiation-operator/.npmignore similarity index 100% rename from packages/babel-plugin-inline-environment-variables/.npmignore rename to packages/babel-plugin-transform-exponentiation-operator/.npmignore diff --git a/packages/babel-plugin-transform-exponentiation-operator/README.md b/packages/babel-plugin-transform-exponentiation-operator/README.md new file mode 100644 index 0000000000..0851d321f1 --- /dev/null +++ b/packages/babel-plugin-transform-exponentiation-operator/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-exponentiation-operator + +Compile exponentiation operator to ES5 + +## Installation + +```sh +$ npm install babel-plugin-transform-exponentiation-operator +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-exponentiation-operator"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-exponentiation-operator script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-exponentiation-operator"] +}); +``` diff --git a/packages/babel-plugin-exponentiation-operator/package.json b/packages/babel-plugin-transform-exponentiation-operator/package.json similarity index 77% rename from packages/babel-plugin-exponentiation-operator/package.json rename to packages/babel-plugin-transform-exponentiation-operator/package.json index 113c3a5f34..ffff10a320 100644 --- a/packages/babel-plugin-exponentiation-operator/package.json +++ b/packages/babel-plugin-transform-exponentiation-operator/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-exponentiation-operator", + "name": "babel-plugin-transform-exponentiation-operator", "version": "1.0.0", "description": "Compile exponentiation operator to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-exponentiation-operator/src/index.js b/packages/babel-plugin-transform-exponentiation-operator/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-exponentiation-operator/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-jscript/.npmignore b/packages/babel-plugin-transform-export-extensions/.npmignore similarity index 100% rename from packages/babel-plugin-jscript/.npmignore rename to packages/babel-plugin-transform-export-extensions/.npmignore diff --git a/packages/babel-plugin-export-extensions/README.md b/packages/babel-plugin-transform-export-extensions/README.md similarity index 50% rename from packages/babel-plugin-export-extensions/README.md rename to packages/babel-plugin-transform-export-extensions/README.md index ab4ed89da8..13a8489fb8 100644 --- a/packages/babel-plugin-export-extensions/README.md +++ b/packages/babel-plugin-transform-export-extensions/README.md @@ -1,11 +1,11 @@ -# babel-plugin-export-extensions +# babel-plugin-transform-export-extensions Compile export extensions to ES2015 ## Installation ```sh -$ npm install babel-plugin-export-extensions +$ npm install babel-plugin-transform-export-extensions ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-export-extensions ```json { - "plugins": ["export-extensions"] + "plugins": ["transform-export-extensions"] } ``` ### Via CLI ```sh -$ babel --plugins export-extensions script.js +$ babel --plugins transform-export-extensions script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["export-extensions"] + plugins: ["transform-export-extensions"] }); ``` diff --git a/packages/babel-plugin-export-extensions/package.json b/packages/babel-plugin-transform-export-extensions/package.json similarity index 78% rename from packages/babel-plugin-export-extensions/package.json rename to packages/babel-plugin-transform-export-extensions/package.json index df986a074d..d37ea9d06b 100644 --- a/packages/babel-plugin-export-extensions/package.json +++ b/packages/babel-plugin-transform-export-extensions/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-export-extensions", + "name": "babel-plugin-transform-export-extensions", "version": "1.0.0", "description": "Compile export extensions to ES2015", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-export-extensions/src/index.js b/packages/babel-plugin-transform-export-extensions/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-export-extensions/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-member-expression-literals/.npmignore b/packages/babel-plugin-transform-flow-strip-types/.npmignore similarity index 100% rename from packages/babel-plugin-member-expression-literals/.npmignore rename to packages/babel-plugin-transform-flow-strip-types/.npmignore diff --git a/packages/babel-plugin-flow-strip-types/README.md b/packages/babel-plugin-transform-flow-strip-types/README.md similarity index 52% rename from packages/babel-plugin-flow-strip-types/README.md rename to packages/babel-plugin-transform-flow-strip-types/README.md index b4770bb4b4..f846bd24d7 100644 --- a/packages/babel-plugin-flow-strip-types/README.md +++ b/packages/babel-plugin-transform-flow-strip-types/README.md @@ -1,11 +1,11 @@ -# babel-plugin-flow-strip-types +# babel-plugin-transform-flow-strip-types Strip flow type annotations from your output code. ## Installation ```sh -$ npm install babel-plugin-flow-strip-types +$ npm install babel-plugin-transform-flow-strip-types ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-flow-strip-types ```json { - "plugins": ["flow-strip-types"] + "plugins": ["transform-flow-strip-types"] } ``` ### Via CLI ```sh -$ babel --plugins flow-strip-types script.js +$ babel --plugins transform-flow-strip-types script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["flow-strip-types"] + plugins: ["transform-flow-strip-types"] }); ``` diff --git a/packages/babel-plugin-flow-strip-types/package.json b/packages/babel-plugin-transform-flow-strip-types/package.json similarity index 80% rename from packages/babel-plugin-flow-strip-types/package.json rename to packages/babel-plugin-transform-flow-strip-types/package.json index dce4c09171..8d11a720d4 100644 --- a/packages/babel-plugin-flow-strip-types/package.json +++ b/packages/babel-plugin-transform-flow-strip-types/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-flow-strip-types", + "name": "babel-plugin-transform-flow-strip-types", "version": "1.0.4", "description": "Strip flow type annotations from your output code.", "repository": "babel/babel", diff --git a/packages/babel-plugin-flow-strip-types/src/index.js b/packages/babel-plugin-transform-flow-strip-types/src/index.js similarity index 66% rename from packages/babel-plugin-flow-strip-types/src/index.js rename to packages/babel-plugin-transform-flow-strip-types/src/index.js index a4b906d516..ff3380333a 100644 --- a/packages/babel-plugin-flow-strip-types/src/index.js +++ b/packages/babel-plugin-transform-flow-strip-types/src/index.js @@ -1,13 +1,9 @@ -export default function ({ Plugin, types: t }) { +export default function ({ types: t }) { const FLOW_DIRECTIVE = "@flow"; return { - metadata: { - group: "builtin-trailing" - }, - visitor: { - Program(node, parent, scope, file) { + Program(path, file) { for (var comment of (file.ast.comments: Array)) { if (comment.value.indexOf(FLOW_DIRECTIVE) >= 0) { // remove flow directive @@ -19,31 +15,32 @@ export default function ({ Plugin, types: t }) { } }, - Flow() { - this.dangerouslyRemove(); + Flow(path) { + path.remove(); }, - ClassProperty(node) { - node.typeAnnotation = null; - if (!node.value) this.dangerouslyRemove(); + ClassProperty(path) { + path.node.typeAnnotation = null; + if (!path.node.value) path.remove(); }, - Class(node) { + Class({ node }) { node.implements = null; }, - Function(node) { + Function({ node }) { for (var i = 0; i < node.params.length; i++) { var param = node.params[i]; param.optional = false; } }, - TypeCastExpression(node) { + TypeCastExpression(path) { + var { node } = path; do { node = node.expression; } while(t.isTypeCastExpression(node)); - return node; + path.replaceWith(node); } } }; diff --git a/packages/babel-plugin-merge-sibling-variables/.npmignore b/packages/babel-plugin-transform-function-bind/.npmignore similarity index 100% rename from packages/babel-plugin-merge-sibling-variables/.npmignore rename to packages/babel-plugin-transform-function-bind/.npmignore diff --git a/packages/babel-plugin-function-bind/README.md b/packages/babel-plugin-transform-function-bind/README.md similarity index 52% rename from packages/babel-plugin-function-bind/README.md rename to packages/babel-plugin-transform-function-bind/README.md index fc015c8c19..8f496c5fd9 100644 --- a/packages/babel-plugin-function-bind/README.md +++ b/packages/babel-plugin-transform-function-bind/README.md @@ -1,11 +1,11 @@ -# babel-plugin-function-bind +# babel-plugin-transform-function-bind Compile function bind operator to ES5 ## Installation ```sh -$ npm install babel-plugin-function-bind +$ npm install babel-plugin-transform-function-bind ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-function-bind ```json { - "plugins": ["function-bind"] + "plugins": ["transform-function-bind"] } ``` ### Via CLI ```sh -$ babel --plugins function-bind script.js +$ babel --plugins transform-function-bind script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["function-bind"] + plugins: ["transform-function-bind"] }); ``` diff --git a/packages/babel-plugin-function-bind/package.json b/packages/babel-plugin-transform-function-bind/package.json similarity index 80% rename from packages/babel-plugin-function-bind/package.json rename to packages/babel-plugin-transform-function-bind/package.json index 23f0656cad..3cbb64bdfd 100644 --- a/packages/babel-plugin-function-bind/package.json +++ b/packages/babel-plugin-transform-function-bind/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-function-bind", + "name": "babel-plugin-transform-function-bind", "version": "1.0.0", "description": "Compile function bind operator to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-function-bind/src/index.js b/packages/babel-plugin-transform-function-bind/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-function-bind/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-minify-booleans/.npmignore b/packages/babel-plugin-transform-inline-environment-variables/.npmignore similarity index 100% rename from packages/babel-plugin-minify-booleans/.npmignore rename to packages/babel-plugin-transform-inline-environment-variables/.npmignore diff --git a/packages/babel-plugin-transform-inline-environment-variables/README.md b/packages/babel-plugin-transform-inline-environment-variables/README.md new file mode 100644 index 0000000000..72a315f7c3 --- /dev/null +++ b/packages/babel-plugin-transform-inline-environment-variables/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-inline-environment-variables + +Inline environment variables + +## Installation + +```sh +$ npm install babel-plugin-transform-inline-environment-variables +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-inline-environment-variables"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-inline-environment-variables script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-inline-environment-variables"] +}); +``` diff --git a/packages/babel-plugin-inline-environment-variables/package.json b/packages/babel-plugin-transform-inline-environment-variables/package.json similarity index 55% rename from packages/babel-plugin-inline-environment-variables/package.json rename to packages/babel-plugin-transform-inline-environment-variables/package.json index da3dc6af2a..8c8f191798 100644 --- a/packages/babel-plugin-inline-environment-variables/package.json +++ b/packages/babel-plugin-transform-inline-environment-variables/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-inline-environment-variables", + "name": "babel-plugin-transform-inline-environment-variables", "version": "1.0.1", "description": "Inline environment variables", - "repository": "babel/babelbabel-plugin-inline-environment-variables", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-transform-inline-environment-variables/src/index.js b/packages/babel-plugin-transform-inline-environment-variables/src/index.js new file mode 100644 index 0000000000..28a2eae941 --- /dev/null +++ b/packages/babel-plugin-transform-inline-environment-variables/src/index.js @@ -0,0 +1,14 @@ +export default function ({ types: t }) { + return { + visitor: { + MemberExpression(path) { + if (path.get("object").matchesPattern("process.env")) { + var key = path.toComputedKey(); + if (t.isStringLiteral(key)) { + return t.valueToNode(process.env[key.value]); + } + } + } + } + }; +} diff --git a/packages/babel-plugin-node-env-inline/.npmignore b/packages/babel-plugin-transform-jscript/.npmignore similarity index 100% rename from packages/babel-plugin-node-env-inline/.npmignore rename to packages/babel-plugin-transform-jscript/.npmignore diff --git a/packages/babel-plugin-jscript/README.md b/packages/babel-plugin-transform-jscript/README.md similarity index 58% rename from packages/babel-plugin-jscript/README.md rename to packages/babel-plugin-transform-jscript/README.md index 7c508422eb..948344bac5 100644 --- a/packages/babel-plugin-jscript/README.md +++ b/packages/babel-plugin-transform-jscript/README.md @@ -1,11 +1,11 @@ -# babel-plugin-jscript +# babel-plugin-transform-jscript Babel plugin to fix buggy JScript named function expressions ## Installation ```sh -$ npm install babel-plugin-jscript +$ npm install babel-plugin-transform-jscript ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-jscript ```json { - "plugins": ["jscript"] + "plugins": ["transform-jscript"] } ``` ### Via CLI ```sh -$ babel --plugins jscript script.js +$ babel --plugins transform-jscript script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["jscript"] + plugins: ["transform-jscript"] }); ``` diff --git a/packages/babel-plugin-jscript/package.json b/packages/babel-plugin-transform-jscript/package.json similarity index 69% rename from packages/babel-plugin-jscript/package.json rename to packages/babel-plugin-transform-jscript/package.json index 9cab71d607..90d25dfe01 100644 --- a/packages/babel-plugin-jscript/package.json +++ b/packages/babel-plugin-transform-jscript/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-jscript", + "name": "babel-plugin-transform-jscript", "version": "1.0.4", "description": "Babel plugin to fix buggy JScript named function expressions", - "repository": "babel/babelbabel-plugin-jscript", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-jscript/src/index.js b/packages/babel-plugin-transform-jscript/src/index.js similarity index 79% rename from packages/babel-plugin-jscript/src/index.js rename to packages/babel-plugin-transform-jscript/src/index.js index 27512fb761..e572ad6fc8 100644 --- a/packages/babel-plugin-jscript/src/index.js +++ b/packages/babel-plugin-transform-jscript/src/index.js @@ -1,9 +1,5 @@ -export default function ({ Plugin, types: t }) { +export default function ({ types: t }) { return { - metadata: { - group: "builtin-trailing" - }, - visitor: { FunctionExpression: { exit(node) { diff --git a/packages/babel-plugin-object-assign/.npmignore b/packages/babel-plugin-transform-member-expression-literals/.npmignore similarity index 100% rename from packages/babel-plugin-object-assign/.npmignore rename to packages/babel-plugin-transform-member-expression-literals/.npmignore diff --git a/packages/babel-plugin-member-expression-literals/README.md b/packages/babel-plugin-transform-member-expression-literals/README.md similarity index 63% rename from packages/babel-plugin-member-expression-literals/README.md rename to packages/babel-plugin-transform-member-expression-literals/README.md index 0785c2549f..f8a11a0a84 100644 --- a/packages/babel-plugin-member-expression-literals/README.md +++ b/packages/babel-plugin-transform-member-expression-literals/README.md @@ -1,4 +1,4 @@ -# babel-plugin-member-expression-literals +# babel-plugin-transform-member-expression-literals Turn valid member expression property literals into plain identifiers @@ -25,7 +25,7 @@ obj["var"] = "isKeyword"; ## Installation ```sh -$ npm install babel-plugin-member-expression-literals +$ npm install babel-plugin-transform-member-expression-literals ``` ## Usage @@ -36,20 +36,20 @@ $ npm install babel-plugin-member-expression-literals ```json { - "plugins": ["member-expression-literals"] + "plugins": ["transform-member-expression-literals"] } ``` ### Via CLI ```sh -$ babel --plugins member-expression-literals script.js +$ babel --plugins transform-member-expression-literals script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["member-expression-literals"] + plugins: ["transform-member-expression-literals"] }); ``` diff --git a/packages/babel-plugin-member-expression-literals/package.json b/packages/babel-plugin-transform-member-expression-literals/package.json similarity index 62% rename from packages/babel-plugin-member-expression-literals/package.json rename to packages/babel-plugin-transform-member-expression-literals/package.json index c468e0d967..0785a4aba4 100644 --- a/packages/babel-plugin-member-expression-literals/package.json +++ b/packages/babel-plugin-transform-member-expression-literals/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-member-expression-literals", + "name": "babel-plugin-transform-member-expression-literals", "version": "1.0.1", "description": "Turn valid member expression property literals into plain identifiers", - "repository": "babel/babelbabel-plugin-member-expression-literals", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-member-expression-literals/src/index.js b/packages/babel-plugin-transform-member-expression-literals/src/index.js similarity index 87% rename from packages/babel-plugin-member-expression-literals/src/index.js rename to packages/babel-plugin-transform-member-expression-literals/src/index.js index 33be68ec9f..5a934f7000 100644 --- a/packages/babel-plugin-member-expression-literals/src/index.js +++ b/packages/babel-plugin-transform-member-expression-literals/src/index.js @@ -1,9 +1,5 @@ export default function ({ types: t }) { return { - metadata: { - group: "builtin-trailing" - }, - visitor: { MemberExpression: { exit(node) { diff --git a/packages/babel-plugin-object-rest-spread/.npmignore b/packages/babel-plugin-transform-merge-sibling-variables/.npmignore similarity index 100% rename from packages/babel-plugin-object-rest-spread/.npmignore rename to packages/babel-plugin-transform-merge-sibling-variables/.npmignore diff --git a/packages/babel-plugin-merge-sibling-variables/README.md b/packages/babel-plugin-transform-merge-sibling-variables/README.md similarity index 59% rename from packages/babel-plugin-merge-sibling-variables/README.md rename to packages/babel-plugin-transform-merge-sibling-variables/README.md index 92b0678f56..4565af8c0f 100644 --- a/packages/babel-plugin-merge-sibling-variables/README.md +++ b/packages/babel-plugin-transform-merge-sibling-variables/README.md @@ -1,4 +1,4 @@ -# babel-plugin-merge-sibling-variables +# babel-plugin-transform-merge-sibling-variables Merge sibling variables into one. @@ -23,7 +23,7 @@ foobar(); ## Installation ```sh -$ npm install babel-plugin-merge-sibling-variables +$ npm install babel-plugin-transform-merge-sibling-variables ``` ## Usage @@ -34,20 +34,20 @@ $ npm install babel-plugin-merge-sibling-variables ```json { - "plugins": ["merge-sibling-variables"] + "plugins": ["transform-merge-sibling-variables"] } ``` ### Via CLI ```sh -$ babel --plugins merge-sibling-variables script.js +$ babel --plugins transform-merge-sibling-variables script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["merge-sibling-variables"] + plugins: ["transform-merge-sibling-variables"] }); ``` diff --git a/packages/babel-plugin-merge-sibling-variables/package.json b/packages/babel-plugin-transform-merge-sibling-variables/package.json similarity index 56% rename from packages/babel-plugin-merge-sibling-variables/package.json rename to packages/babel-plugin-transform-merge-sibling-variables/package.json index 2f62706048..cf9035ef27 100644 --- a/packages/babel-plugin-merge-sibling-variables/package.json +++ b/packages/babel-plugin-transform-merge-sibling-variables/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-merge-sibling-variables", + "name": "babel-plugin-transform-merge-sibling-variables", "version": "1.0.2", "description": "Merge sibling variables into one.", - "repository": "babel-plugin-merge-sibling-variables", + "repository": "babel-plugin-transform-merge-sibling-variables", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-merge-sibling-variables/src/index.js b/packages/babel-plugin-transform-merge-sibling-variables/src/index.js similarity index 55% rename from packages/babel-plugin-merge-sibling-variables/src/index.js rename to packages/babel-plugin-transform-merge-sibling-variables/src/index.js index 4ceb72f163..ef0569e301 100644 --- a/packages/babel-plugin-merge-sibling-variables/src/index.js +++ b/packages/babel-plugin-transform-merge-sibling-variables/src/index.js @@ -1,19 +1,17 @@ export default function () { return { - metadata: { - group: "builtin-pre" - }, - visitor: { - VariableDeclaration(node) { - if (!this.inList) return; + VariableDeclaration(path) { + if (!path.inList) return; + + var { node } = path; while (true) { - var sibling = this.getSibling(this.key + 1); + var sibling = path.getSibling(path.key + 1); if (!sibling.isVariableDeclaration({ kind: node.kind })) break; node.declarations = node.declarations.concat(sibling.node.declarations); - sibling.dangerouslyRemove(); + sibling.remove(); } } } diff --git a/packages/babel-plugin-object-set-prototype-of-to-assign/.npmignore b/packages/babel-plugin-transform-minify-booleans/.npmignore similarity index 100% rename from packages/babel-plugin-object-set-prototype-of-to-assign/.npmignore rename to packages/babel-plugin-transform-minify-booleans/.npmignore diff --git a/packages/babel-plugin-minify-booleans/README.md b/packages/babel-plugin-transform-minify-booleans/README.md similarity index 53% rename from packages/babel-plugin-minify-booleans/README.md rename to packages/babel-plugin-transform-minify-booleans/README.md index d40f0db7ed..061c1689ca 100644 --- a/packages/babel-plugin-minify-booleans/README.md +++ b/packages/babel-plugin-transform-minify-booleans/README.md @@ -1,11 +1,11 @@ -# babel-plugin-minify-booleans +# babel-plugin-transform-minify-booleans Turn boolean literals into !0 for true and !1 for false. ## Installation ```sh -$ npm install babel-plugin-minify-booleans +$ npm install babel-plugin-transform-minify-booleans ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-minify-booleans ```json { - "plugins": ["minify-booleans"] + "plugins": ["transform-minify-booleans"] } ``` ### Via CLI ```sh -$ babel --plugins minify-booleans script.js +$ babel --plugins transform-minify-booleans script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["minify-booleans"] + plugins: ["transform-minify-booleans"] }); ``` diff --git a/packages/babel-plugin-minify-booleans/package.json b/packages/babel-plugin-transform-minify-booleans/package.json similarity index 65% rename from packages/babel-plugin-minify-booleans/package.json rename to packages/babel-plugin-transform-minify-booleans/package.json index 7540ae6f62..4d44f29487 100644 --- a/packages/babel-plugin-minify-booleans/package.json +++ b/packages/babel-plugin-transform-minify-booleans/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-minify-booleans", + "name": "babel-plugin-transform-minify-booleans", "version": "1.0.2", "description": "Turn boolean literals into !0 for true and !1 for false.", - "repository": "babel/babelbabel-plugin-minify-booleans", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-minify-booleans/src/index.js b/packages/babel-plugin-transform-minify-booleans/src/index.js similarity index 82% rename from packages/babel-plugin-minify-booleans/src/index.js rename to packages/babel-plugin-transform-minify-booleans/src/index.js index be29f19853..5347377871 100644 --- a/packages/babel-plugin-minify-booleans/src/index.js +++ b/packages/babel-plugin-transform-minify-booleans/src/index.js @@ -1,9 +1,5 @@ export default function ({ types: t }) { return { - metadata: { - group: "builtin-pre" - }, - visitor: { Literal(node) { if (typeof node.value === "boolean") { diff --git a/packages/babel-plugin-property-literals/.npmignore b/packages/babel-plugin-transform-node-env-inline/.npmignore similarity index 100% rename from packages/babel-plugin-property-literals/.npmignore rename to packages/babel-plugin-transform-node-env-inline/.npmignore diff --git a/packages/babel-plugin-node-env-inline/LICENSE b/packages/babel-plugin-transform-node-env-inline/LICENSE similarity index 100% rename from packages/babel-plugin-node-env-inline/LICENSE rename to packages/babel-plugin-transform-node-env-inline/LICENSE diff --git a/packages/babel-plugin-node-env-inline/README.md b/packages/babel-plugin-transform-node-env-inline/README.md similarity index 64% rename from packages/babel-plugin-node-env-inline/README.md rename to packages/babel-plugin-transform-node-env-inline/README.md index 0527d74a09..0825eb125b 100644 --- a/packages/babel-plugin-node-env-inline/README.md +++ b/packages/babel-plugin-transform-node-env-inline/README.md @@ -1,4 +1,4 @@ -# babel-plugin-node-env-inline +# babel-plugin-transform-node-env-inline Inline the `NODE_ENV` environment variable and if it's a part of a binary expression (eg. `process.env.NODE_ENV === "development"`) then statically evaluate and replace it. @@ -15,7 +15,7 @@ process.env.NODE_ENV === "production"; **Out** ```sh -$ NODE_ENV=development babel in.js --plugins node-env-inline +$ NODE_ENV=development babel in.js --plugins transform-node-env-inline ``` ```javascript @@ -26,7 +26,7 @@ false; ## Installation ```sh -$ npm install babel-plugin-node-env-inline +$ npm install babel-plugin-transform-node-env-inline ``` ## Usage @@ -37,20 +37,20 @@ $ npm install babel-plugin-node-env-inline ```json { - "plugins": ["node-env-inline"] + "plugins": ["transform-node-env-inline"] } ``` ### Via CLI ```sh -$ babel --plugins node-env-inline script.js +$ babel --plugins transform-node-env-inline script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["node-env-inline"] + plugins: ["transform-node-env-inline"] }); ``` diff --git a/packages/babel-plugin-node-env-inline/package.json b/packages/babel-plugin-transform-node-env-inline/package.json similarity index 56% rename from packages/babel-plugin-node-env-inline/package.json rename to packages/babel-plugin-transform-node-env-inline/package.json index af4810e8c1..2bd14d0920 100644 --- a/packages/babel-plugin-node-env-inline/package.json +++ b/packages/babel-plugin-transform-node-env-inline/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-node-env-inline", + "name": "babel-plugin-transform-node-env-inline", "version": "1.0.1", "description": "", - "repository": "babel/babelbabel-plugin-node-env-inline", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-transform-node-env-inline/src/index.js b/packages/babel-plugin-transform-node-env-inline/src/index.js new file mode 100644 index 0000000000..bde23888f6 --- /dev/null +++ b/packages/babel-plugin-transform-node-env-inline/src/index.js @@ -0,0 +1,18 @@ +export default function ({ types: t }) { + return { + visitor: { + MemberExpression(path) { + if (path.matchesPattern("process.env.NODE_ENV")) { + path.replaceWith(t.valueToNode(process.env.NODE_ENV)); + + if (path.parentPath.isBinaryExpression()) { + var evaluated = path.parentPath.evaluate(); + if (evaluated.confident) { + path.parentPath.replaceWith(t.valueToNode(evaluated.value)); + } + } + } + } + } + }; +} diff --git a/packages/babel-plugin-proto-to-assign/.npmignore b/packages/babel-plugin-transform-object-assign/.npmignore similarity index 100% rename from packages/babel-plugin-proto-to-assign/.npmignore rename to packages/babel-plugin-transform-object-assign/.npmignore diff --git a/packages/babel-plugin-object-assign/LICENSE b/packages/babel-plugin-transform-object-assign/LICENSE similarity index 100% rename from packages/babel-plugin-object-assign/LICENSE rename to packages/babel-plugin-transform-object-assign/LICENSE diff --git a/packages/babel-plugin-object-assign/README.md b/packages/babel-plugin-transform-object-assign/README.md similarity index 63% rename from packages/babel-plugin-object-assign/README.md rename to packages/babel-plugin-transform-object-assign/README.md index cb1ccad864..027b096217 100644 --- a/packages/babel-plugin-object-assign/README.md +++ b/packages/babel-plugin-transform-object-assign/README.md @@ -1,4 +1,4 @@ -# babel-plugin-object-assign +# babel-plugin-transform-object-assign Replace `Object.assign` with an inline helper. @@ -21,7 +21,7 @@ _extends(a, b); ## Installation ```sh -$ npm install babel-plugin-object-assign +$ npm install babel-plugin-transform-object-assign ``` ## Usage @@ -32,20 +32,20 @@ $ npm install babel-plugin-object-assign ```json { - "plugins": ["object-assign"] + "plugins": ["transform-object-assign"] } ``` ### Via CLI ```sh -$ babel --plugins object-assign script.js +$ babel --plugins transform-object-assign script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["object-assign"] + plugins: ["transform-object-assign"] }); ``` diff --git a/packages/babel-plugin-object-assign/package.json b/packages/babel-plugin-transform-object-assign/package.json similarity index 80% rename from packages/babel-plugin-object-assign/package.json rename to packages/babel-plugin-transform-object-assign/package.json index d6ec717ddf..d081116d13 100644 --- a/packages/babel-plugin-object-assign/package.json +++ b/packages/babel-plugin-transform-object-assign/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-object-assign", + "name": "babel-plugin-transform-object-assign", "version": "5.0.0", "description": "Replace Object.assign with an inline helper", "author": "Jed Watson", diff --git a/packages/babel-plugin-transform-object-assign/src/index.js b/packages/babel-plugin-transform-object-assign/src/index.js new file mode 100644 index 0000000000..4b985078df --- /dev/null +++ b/packages/babel-plugin-transform-object-assign/src/index.js @@ -0,0 +1,11 @@ +export default function () { + return { + visitor: { + CallExpression: function (path, file) { + if (path.get("callee").matchesPattern("Object.assign")) { + path.node.callee = file.addHelper("extends"); + } + } + } + }; +} diff --git a/packages/babel-plugin-react-compat-jsx/.npmignore b/packages/babel-plugin-transform-object-rest-spread/.npmignore similarity index 100% rename from packages/babel-plugin-react-compat-jsx/.npmignore rename to packages/babel-plugin-transform-object-rest-spread/.npmignore diff --git a/packages/babel-plugin-object-rest-spread/README.md b/packages/babel-plugin-transform-object-rest-spread/README.md similarity index 50% rename from packages/babel-plugin-object-rest-spread/README.md rename to packages/babel-plugin-transform-object-rest-spread/README.md index 80928598a3..2f50223182 100644 --- a/packages/babel-plugin-object-rest-spread/README.md +++ b/packages/babel-plugin-transform-object-rest-spread/README.md @@ -1,11 +1,11 @@ -# babel-plugin-object-rest-spread +# babel-plugin-transform-object-rest-spread Compile object rest and spread to ES5 ## Installation ```sh -$ npm install babel-plugin-object-rest-spread +$ npm install babel-plugin-transform-object-rest-spread ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-object-rest-spread ```json { - "plugins": ["object-rest-spread"] + "plugins": ["transform-object-rest-spread"] } ``` ### Via CLI ```sh -$ babel --plugins object-rest-spread script.js +$ babel --plugins transform-object-rest-spread script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["object-rest-spread"] + plugins: ["transform-object-rest-spread"] }); ``` diff --git a/packages/babel-plugin-object-rest-spread/package.json b/packages/babel-plugin-transform-object-rest-spread/package.json similarity index 78% rename from packages/babel-plugin-object-rest-spread/package.json rename to packages/babel-plugin-transform-object-rest-spread/package.json index 2de0fc3894..aa16813f42 100644 --- a/packages/babel-plugin-object-rest-spread/package.json +++ b/packages/babel-plugin-transform-object-rest-spread/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-object-rest-spread", + "name": "babel-plugin-transform-object-rest-spread", "version": "1.0.0", "description": "Compile object rest and spread to ES5", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-object-rest-spread/src/index.js b/packages/babel-plugin-transform-object-rest-spread/src/index.js new file mode 100644 index 0000000000..6845446a11 --- /dev/null +++ b/packages/babel-plugin-transform-object-rest-spread/src/index.js @@ -0,0 +1,7 @@ +export default function () { + return { + visitor: { + // your visitor methods go here + } + }; +} diff --git a/packages/babel-plugin-react-constant-elements/.npmignore b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/.npmignore similarity index 100% rename from packages/babel-plugin-react-constant-elements/.npmignore rename to packages/babel-plugin-transform-object-set-prototype-of-to-assign/.npmignore diff --git a/packages/babel-plugin-object-set-prototype-of-to-assign/LICENSE b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/LICENSE similarity index 100% rename from packages/babel-plugin-object-set-prototype-of-to-assign/LICENSE rename to packages/babel-plugin-transform-object-set-prototype-of-to-assign/LICENSE diff --git a/packages/babel-plugin-object-set-prototype-of-to-assign/README.md b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/README.md similarity index 55% rename from packages/babel-plugin-object-set-prototype-of-to-assign/README.md rename to packages/babel-plugin-transform-object-set-prototype-of-to-assign/README.md index 4e3b5a1133..37aa4b61b7 100644 --- a/packages/babel-plugin-object-set-prototype-of-to-assign/README.md +++ b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/README.md @@ -1,9 +1,9 @@ -# babel-plugin-object-set-prototype-of-to-assign +# babel-plugin-transform-object-set-prototype-of-to-assign The `object-set-prototype-of-to-assign` plugin will transform all `Object.setPrototypeOf` calls to a method that will do a shallow defaults of all properties. -**NOTE:** There are some caveats when using this plugin, see the [`babel-plugin-proto-to-assign` README](https://github.com/babel-plugins/babel-plugin-proto-to-assign) for more information.. +**NOTE:** There are some caveats when using this plugin, see the [`babel-plugin-transform-proto-to-assign` README](https://github.com/babel-plugins/babel-plugin-transform-proto-to-assign) for more information.. ## Example @@ -24,7 +24,7 @@ _defaults(bar, foo); ## Installation ```sh -$ npm install babel-plugin-object-set-prototype-of-to-assign +$ npm install babel-plugin-transform-object-set-prototype-of-to-assign ``` ## Usage @@ -35,20 +35,20 @@ $ npm install babel-plugin-object-set-prototype-of-to-assign ```json { - "plugins": ["object-set-prototype-of-to-assign"] + "plugins": ["transform-object-set-prototype-of-to-assign"] } ``` ### Via CLI ```sh -$ babel --plugins object-set-prototype-of-to-assign script.js +$ babel --plugins transform-object-set-prototype-of-to-assign script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["object-set-prototype-of-to-assign"] + plugins: ["transform-object-set-prototype-of-to-assign"] }); ``` diff --git a/packages/babel-plugin-object-set-prototype-of-to-assign/package.json b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/package.json similarity index 55% rename from packages/babel-plugin-object-set-prototype-of-to-assign/package.json rename to packages/babel-plugin-transform-object-set-prototype-of-to-assign/package.json index b09df0753a..ce0846e614 100644 --- a/packages/babel-plugin-object-set-prototype-of-to-assign/package.json +++ b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-object-set-prototype-of-to-assign", + "name": "babel-plugin-transform-object-set-prototype-of-to-assign", "version": "1.0.1", "description": "Turn Object.setPrototypeOf to assignments", - "repository": "babel/babelbabel-plugin-object-set-prototype-of-to-assign", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-transform-object-set-prototype-of-to-assign/src/index.js b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/src/index.js new file mode 100644 index 0000000000..dc3575ab48 --- /dev/null +++ b/packages/babel-plugin-transform-object-set-prototype-of-to-assign/src/index.js @@ -0,0 +1,11 @@ +export default function () { + return { + visitor: { + CallExpression(path, file) { + if (path.get("callee").matchesPattern("Object.setPrototypeOf")) { + path.node.callee = file.addHelper("defaults"); + } + } + } + }; +} diff --git a/packages/babel-plugin-react-display-name/.npmignore b/packages/babel-plugin-transform-property-literals/.npmignore similarity index 100% rename from packages/babel-plugin-react-display-name/.npmignore rename to packages/babel-plugin-transform-property-literals/.npmignore diff --git a/packages/babel-plugin-property-literals/README.md b/packages/babel-plugin-transform-property-literals/README.md similarity index 66% rename from packages/babel-plugin-property-literals/README.md rename to packages/babel-plugin-transform-property-literals/README.md index ed282d96c6..b3ebee6f6f 100644 --- a/packages/babel-plugin-property-literals/README.md +++ b/packages/babel-plugin-transform-property-literals/README.md @@ -1,4 +1,4 @@ -# babel-plugin-property-literals +# babel-plugin-transform-property-literals Turn valid property key literals to plain identifiers @@ -27,7 +27,7 @@ var obj = { ## Installation ```sh -$ npm install babel-plugin-property-literals +$ npm install babel-plugin-transform-property-literals ``` ## Usage @@ -38,20 +38,20 @@ $ npm install babel-plugin-property-literals ```json { - "plugins": ["property-literals"] + "plugins": ["transform-property-literals"] } ``` ### Via CLI ```sh -$ babel --plugins property-literals script.js +$ babel --plugins transform-property-literals script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["property-literals"] + plugins: ["transform-property-literals"] }); ``` diff --git a/packages/babel-plugin-property-literals/package.json b/packages/babel-plugin-transform-property-literals/package.json similarity index 63% rename from packages/babel-plugin-property-literals/package.json rename to packages/babel-plugin-transform-property-literals/package.json index 8ab0454c4d..9fc5b057f7 100644 --- a/packages/babel-plugin-property-literals/package.json +++ b/packages/babel-plugin-transform-property-literals/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-property-literals", + "name": "babel-plugin-transform-property-literals", "version": "1.0.1", "description": "Turn valid property key literals to plain identifiers", - "repository": "babel/babelbabel-plugin-property-literals", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-property-literals/src/index.js b/packages/babel-plugin-transform-property-literals/src/index.js similarity index 86% rename from packages/babel-plugin-property-literals/src/index.js rename to packages/babel-plugin-transform-property-literals/src/index.js index 3b0c139fe2..0c323e3ad0 100644 --- a/packages/babel-plugin-property-literals/src/index.js +++ b/packages/babel-plugin-transform-property-literals/src/index.js @@ -1,9 +1,5 @@ export default function ({ types: t }) { return { - metadata: { - group: "builtin-trailing" - }, - visitor: { Property: { exit(node) { diff --git a/packages/babel-plugin-react-inline-elements/.npmignore b/packages/babel-plugin-transform-proto-to-assign/.npmignore similarity index 100% rename from packages/babel-plugin-react-inline-elements/.npmignore rename to packages/babel-plugin-transform-proto-to-assign/.npmignore diff --git a/packages/babel-plugin-proto-to-assign/README.md b/packages/babel-plugin-transform-proto-to-assign/README.md similarity index 79% rename from packages/babel-plugin-proto-to-assign/README.md rename to packages/babel-plugin-transform-proto-to-assign/README.md index cb06ec7428..1af2deab1b 100644 --- a/packages/babel-plugin-proto-to-assign/README.md +++ b/packages/babel-plugin-transform-proto-to-assign/README.md @@ -1,4 +1,4 @@ -# babel-plugin-proto-to-assign +# babel-plugin-transform-proto-to-assign The `proto-to-assign`plugin will transform all `__proto__` assignments to a method that will do a shallow copy of all properties. @@ -45,7 +45,7 @@ _defaults(bar, foo); ## Installation ```sh -$ npm install babel-plugin-proto-to-assign +$ npm install babel-plugin-transform-proto-to-assign ``` ## Usage @@ -56,20 +56,20 @@ $ npm install babel-plugin-proto-to-assign ```json { - "plugins": ["proto-to-assign"] + "plugins": ["transform-proto-to-assign"] } ``` ### Via CLI ```sh -$ babel --plugins proto-to-assign script.js +$ babel --plugins transform-proto-to-assign script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["proto-to-assign"] + plugins: ["transform-proto-to-assign"] }); ``` diff --git a/packages/babel-plugin-proto-to-assign/package.json b/packages/babel-plugin-transform-proto-to-assign/package.json similarity index 67% rename from packages/babel-plugin-proto-to-assign/package.json rename to packages/babel-plugin-transform-proto-to-assign/package.json index 8353b036f5..2cfffd246d 100644 --- a/packages/babel-plugin-proto-to-assign/package.json +++ b/packages/babel-plugin-transform-proto-to-assign/package.json @@ -1,14 +1,15 @@ { - "name": "babel-plugin-proto-to-assign", + "name": "babel-plugin-transform-proto-to-assign", "version": "1.0.4", "description": "Babel plugin for turning __proto__ into a shallow property clone", - "repository": "babel/babelbabel-plugin-proto-to-assign", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ "babel-plugin" ], "dependencies": { + "babel-runtime": "^5.8.20", "lodash": "^3.9.3" } } diff --git a/packages/babel-plugin-proto-to-assign/src/index.js b/packages/babel-plugin-transform-proto-to-assign/src/index.js similarity index 69% rename from packages/babel-plugin-proto-to-assign/src/index.js rename to packages/babel-plugin-transform-proto-to-assign/src/index.js index 9654d17414..96595e3e5a 100644 --- a/packages/babel-plugin-proto-to-assign/src/index.js +++ b/packages/babel-plugin-transform-proto-to-assign/src/index.js @@ -1,6 +1,6 @@ import pull from "lodash/array/pull"; -export default function ({ Plugin, types: t }) { +export default function ({ types: t }) { function isProtoKey(node) { return t.isLiteral(t.toComputedKey(node, node.key), { value: "__proto__" }); } @@ -15,26 +15,22 @@ export default function ({ Plugin, types: t }) { } return { - metadata: { - secondPass: true - }, - visitor: { - AssignmentExpression(node, parent, scope, file) { - if (!isProtoAssignmentExpression(node)) return; + AssignmentExpression(path, file) { + if (!isProtoAssignmentExpression(path.node)) return; var nodes = []; - var left = node.left.object; - var temp = scope.maybeGenerateMemoised(left); + var left = path.node.left.object; + var temp = path.scope.maybeGenerateMemoised(left); if (temp) nodes.push(t.expressionStatement(t.assignmentExpression("=", temp, left))); - nodes.push(buildDefaultsCallExpression(node, temp || left, file)); + nodes.push(buildDefaultsCallExpression(path.node, temp || left, file)); if (temp) nodes.push(temp); return nodes; }, - ExpressionStatement(node, parent, scope, file) { + ExpressionStatement({ node }, file) { var expr = node.expression; if (!t.isAssignmentExpression(expr, { operator: "=" })) return; @@ -43,12 +39,10 @@ export default function ({ Plugin, types: t }) { } }, - ObjectExpression(node, parent, scope, file) { + ObjectExpression({ node }, file) { var proto; - for (var i = 0; i < node.properties.length; i++) { - var prop = node.properties[i]; - + for (var prop of (node.properties: Array)) { if (isProtoKey(prop)) { proto = prop.value; pull(node.properties, prop); diff --git a/packages/babel-plugin-react-jsx/.npmignore b/packages/babel-plugin-transform-react-constant-elements/.npmignore similarity index 100% rename from packages/babel-plugin-react-jsx/.npmignore rename to packages/babel-plugin-transform-react-constant-elements/.npmignore diff --git a/packages/babel-plugin-react-constant-elements/README.md b/packages/babel-plugin-transform-react-constant-elements/README.md similarity index 51% rename from packages/babel-plugin-react-constant-elements/README.md rename to packages/babel-plugin-transform-react-constant-elements/README.md index fddaabd60f..e2c7e2cb99 100644 --- a/packages/babel-plugin-react-constant-elements/README.md +++ b/packages/babel-plugin-transform-react-constant-elements/README.md @@ -1,11 +1,11 @@ -# babel-plugin-react-constant-elements +# babel-plugin-transform-react-constant-elements Treat React JSX elements as value types and hoist them to the highest scope ## Installation ```sh -$ npm install babel-plugin-react-constant-elements +$ npm install babel-plugin-transform-react-constant-elements ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-react-constant-elements ```json { - "plugins": ["react-constant-elements"] + "plugins": ["transform-react-constant-elements"] } ``` ### Via CLI ```sh -$ babel --plugins react-constant-elements script.js +$ babel --plugins transform-react-constant-elements script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["react-constant-elements"] + plugins: ["transform-react-constant-elements"] }); ``` diff --git a/packages/babel-plugin-react-constant-elements/package.json b/packages/babel-plugin-transform-react-constant-elements/package.json similarity index 63% rename from packages/babel-plugin-react-constant-elements/package.json rename to packages/babel-plugin-transform-react-constant-elements/package.json index dd03b76969..74da6920fc 100644 --- a/packages/babel-plugin-react-constant-elements/package.json +++ b/packages/babel-plugin-transform-react-constant-elements/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-react-constant-elements", + "name": "babel-plugin-transform-react-constant-elements", "version": "1.0.3", "description": "Treat React JSX elements as value types and hoist them to the highest scope", - "repository": "babel/babelbabel-plugin-react-constant-elements", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-transform-react-constant-elements/src/index.js b/packages/babel-plugin-transform-react-constant-elements/src/index.js new file mode 100644 index 0000000000..bf66c16409 --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/src/index.js @@ -0,0 +1,42 @@ +export default function () { + var immutabilityVisitor = { + enter(path, state) { + var stop = () => { + state.isImmutable = false; + path.stop(); + }; + + if (path.isJSXClosingElement()) { + path.skip(); + return; + } + + if (path.isJSXIdentifier({ name: "ref" }) && path.parentPath.isJSXAttribute({ name: path.node })) { + return stop(); + } + + if (path.isJSXIdentifier() || path.isIdentifier() || path.isJSXMemberExpression()) { + return; + } + + if (!path.isImmutable()) stop(); + } + }; + + return { + visitor: { + JSXElement(path) { + if (path.node._hoisted) return; + + var state = { isImmutable: true }; + path.traverse(immutabilityVisitor, state); + + if (state.isImmutable) { + path.hoist(); + } else { + path.node._hoisted = true; + } + } + } + }; +} diff --git a/packages/babel-plugin-remove-console/.npmignore b/packages/babel-plugin-transform-react-display-name/.npmignore similarity index 100% rename from packages/babel-plugin-remove-console/.npmignore rename to packages/babel-plugin-transform-react-display-name/.npmignore diff --git a/packages/babel-plugin-react-display-name/README.md b/packages/babel-plugin-transform-react-display-name/README.md similarity index 50% rename from packages/babel-plugin-react-display-name/README.md rename to packages/babel-plugin-transform-react-display-name/README.md index 56fc028159..1eeb49cda2 100644 --- a/packages/babel-plugin-react-display-name/README.md +++ b/packages/babel-plugin-transform-react-display-name/README.md @@ -1,11 +1,11 @@ -# babel-plugin-react-display-name +# babel-plugin-transform-react-display-name Add displayName to React.createClass calls ## Installation ```sh -$ npm install babel-plugin-react-display-name +$ npm install babel-plugin-transform-react-display-name ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-react-display-name ```json { - "plugins": ["react-display-name"] + "plugins": ["transform-react-display-name"] } ``` ### Via CLI ```sh -$ babel --plugins react-display-name script.js +$ babel --plugins transform-react-display-name script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["react-display-name"] + plugins: ["transform-react-display-name"] }); ``` diff --git a/packages/babel-plugin-react-display-name/package.json b/packages/babel-plugin-transform-react-display-name/package.json similarity index 53% rename from packages/babel-plugin-react-display-name/package.json rename to packages/babel-plugin-transform-react-display-name/package.json index b22a84cf20..fcb0533a2d 100644 --- a/packages/babel-plugin-react-display-name/package.json +++ b/packages/babel-plugin-transform-react-display-name/package.json @@ -1,11 +1,14 @@ { - "name": "babel-plugin-react-display-name", + "name": "babel-plugin-transform-react-display-name", "version": "2.0.0", "description": "Add displayName to React.createClass calls", - "repository": "babel/babelbabel-plugin-react-display-name", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ "babel-plugin" - ] + ], + "dependencies": { + "babel-runtime": "^5.8.20" + } } diff --git a/packages/babel-plugin-react-display-name/src/index.js b/packages/babel-plugin-transform-react-display-name/src/index.js similarity index 91% rename from packages/babel-plugin-react-display-name/src/index.js rename to packages/babel-plugin-transform-react-display-name/src/index.js index d057301f4f..ce046a6106 100644 --- a/packages/babel-plugin-react-display-name/src/index.js +++ b/packages/babel-plugin-transform-react-display-name/src/index.js @@ -39,12 +39,8 @@ export default function ({ types: t }) { } return { - metadata: { - group: "builtin-pre" - }, - visitor: { - ExportDefaultDeclaration(node, parent, scope, file) { + ExportDefaultDeclaration({ node }, file) { if (isCreateClass(node.declaration)) { var displayName = file.opts.basename; @@ -57,7 +53,7 @@ export default function ({ types: t }) { } }, - "AssignmentExpression|Property|VariableDeclarator"(node) { + "AssignmentExpression|Property|VariableDeclarator"({ node }) { var left, right; if (t.isAssignmentExpression(node)) { diff --git a/packages/babel-plugin-remove-debugger/.npmignore b/packages/babel-plugin-transform-react-inline-elements/.npmignore similarity index 100% rename from packages/babel-plugin-remove-debugger/.npmignore rename to packages/babel-plugin-transform-react-inline-elements/.npmignore diff --git a/packages/babel-plugin-transform-react-inline-elements/README.md b/packages/babel-plugin-transform-react-inline-elements/README.md new file mode 100644 index 0000000000..8d3834c3d4 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-react-inline-elements + +Turn JSX elements into exploded React objects + +## Installation + +```sh +$ npm install babel-plugin-transform-react-inline-elements +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-react-inline-elements"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-react-inline-elements script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-react-inline-elements"] +}); +``` diff --git a/packages/babel-plugin-react-inline-elements/package.json b/packages/babel-plugin-transform-react-inline-elements/package.json similarity index 78% rename from packages/babel-plugin-react-inline-elements/package.json rename to packages/babel-plugin-transform-react-inline-elements/package.json index 2c015103e0..077486e9d6 100644 --- a/packages/babel-plugin-react-inline-elements/package.json +++ b/packages/babel-plugin-transform-react-inline-elements/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-react-inline-elements", + "name": "babel-plugin-transform-react-inline-elements", "version": "1.0.0", "description": "Turn JSX elements into exploded React objects", "repository": "babel/babel", diff --git a/packages/babel-plugin-transform-react-inline-elements/src/index.js b/packages/babel-plugin-transform-react-inline-elements/src/index.js new file mode 100644 index 0000000000..b4ee8b03c3 --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/src/index.js @@ -0,0 +1,74 @@ +export default function ({ types: t }) { + function hasRefOrSpread(attrs) { + for (var i = 0; i < attrs.length; i++) { + var attr = attrs[i]; + if (t.isJSXSpreadAttribute(attr)) return true; + if (isJSXAttributeOfName(attr, "ref")) return true; + } + return false; + } + + function isJSXAttributeOfName(attr, name) { + return t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name, { name: name }); + } + + return { + visitor: { + JSXElement({ node }, file) { + // filter + var open = node.openingElement; + if (hasRefOrSpread(open.attributes)) return; + + // init + var isComponent = true; + var props = t.objectExpression([]); + var obj = t.objectExpression([]); + var key = t.nullLiteral(); + var type = open.name; + + if (t.isJSXIdentifier(type) && t.react.isCompatTag(type.name)) { + type = t.stringLiteral(type.name); + isComponent = false; + } + + function pushElemProp(key, value) { + pushProp(obj.properties, t.identifier(key), value); + } + + function pushProp(objProps, key, value) { + objProps.push(t.property("init", key, value)); + } + + // metadata + pushElemProp("type", type); + pushElemProp("ref", t.nullLiteral()); + + if (node.children.length) { + var children = t.react.buildChildren(node); + children = children.length === 1 ? children[0] : t.arrayExpression(children); + pushProp(props.properties, t.identifier("children"), children); + } + + // props + for (var attr of (open.attributes: Array)) { + if (isJSXAttributeOfName(attr, "key")) { + key = attr.value; + } else { + pushProp(props.properties, t.identifier(attr.name.name), attr.value || t.identifier("true")); + } + } + + if (isComponent) { + props = t.callExpression(file.addHelper("default-props"), [t.memberExpression(type, t.identifier("defaultProps")), props]); + } + + pushElemProp("props", props); + + // key + pushElemProp("key", key); + + return obj; + } + } + }; +} diff --git a/packages/babel-plugin-runtime/.npmignore b/packages/babel-plugin-transform-react-jsx-compat/.npmignore similarity index 100% rename from packages/babel-plugin-runtime/.npmignore rename to packages/babel-plugin-transform-react-jsx-compat/.npmignore diff --git a/packages/babel-plugin-react-compat-jsx/README.md b/packages/babel-plugin-transform-react-jsx-compat/README.md similarity index 51% rename from packages/babel-plugin-react-compat-jsx/README.md rename to packages/babel-plugin-transform-react-jsx-compat/README.md index 8356514585..dee9fd8fdb 100644 --- a/packages/babel-plugin-react-compat-jsx/README.md +++ b/packages/babel-plugin-transform-react-jsx-compat/README.md @@ -1,11 +1,11 @@ -# babel-plugin-react-compat-jsx +# babel-plugin-transform-react-jsx-compat Turn JSX into React Pre-0.12 function calls ## Installation ```sh -$ npm install babel-plugin-react-compat-jsx +$ npm install babel-plugin-transform-react-jsx-compat ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-react-compat-jsx ```json { - "plugins": ["react-compat-jsx"] + "plugins": ["transform-react-jsx-compat"] } ``` ### Via CLI ```sh -$ babel --plugins react-compat-jsx script.js +$ babel --plugins transform-react-jsx-compat script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["react-compat-jsx"] + plugins: ["transform-react-jsx-compat"] }); ``` diff --git a/packages/babel-plugin-react-compat-jsx/package.json b/packages/babel-plugin-transform-react-jsx-compat/package.json similarity index 54% rename from packages/babel-plugin-react-compat-jsx/package.json rename to packages/babel-plugin-transform-react-jsx-compat/package.json index cfee81e9c6..5b70a67958 100644 --- a/packages/babel-plugin-react-compat-jsx/package.json +++ b/packages/babel-plugin-transform-react-jsx-compat/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-react-compat-jsx", + "name": "babel-plugin-transform-react-jsx-compat", "version": "1.0.0", "description": "Turn JSX into React Pre-0.12 function calls", "repository": "babel/babel", @@ -7,5 +7,9 @@ "main": "lib/index.js", "keywords": [ "babel-plugin" - ] + ], + "dependencies": { + "babel-runtime": "^5.0.0", + "babel-plugin-transform-builder-react-jsx": "^1.0.0" + } } diff --git a/packages/babel-plugin-transform-react-jsx-compat/src/index.js b/packages/babel-plugin-transform-react-jsx-compat/src/index.js new file mode 100644 index 0000000000..02c9147a8d --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-compat/src/index.js @@ -0,0 +1,22 @@ +export default function ({ types: t }) { + return { + visitor: require("babel-plugin-builder-react-jsx")({ + pre(state) { + state.callee = state.tagExpr; + }, + + post(state) { + if (t.react.isCompatTag(state.tagName)) { + state.call = t.callExpression( + t.memberExpression( + t.memberExpression(t.identifier("React"), t.identifier("DOM")), + state.tagExpr, + t.isLiteral(state.tagExpr) + ), + state.args + ); + } + } + }) + }; +} diff --git a/packages/babel-plugin-simplify-comparison-operators/.npmignore b/packages/babel-plugin-transform-react-jsx/.npmignore similarity index 100% rename from packages/babel-plugin-simplify-comparison-operators/.npmignore rename to packages/babel-plugin-transform-react-jsx/.npmignore diff --git a/packages/babel-plugin-react-jsx/README.md b/packages/babel-plugin-transform-react-jsx/README.md similarity index 54% rename from packages/babel-plugin-react-jsx/README.md rename to packages/babel-plugin-transform-react-jsx/README.md index 5e332b25ac..51e996b841 100644 --- a/packages/babel-plugin-react-jsx/README.md +++ b/packages/babel-plugin-transform-react-jsx/README.md @@ -1,11 +1,11 @@ -# babel-plugin-react-jsx +# babel-plugin-transform-react-jsx Turn JSX into React function calls ## Installation ```sh -$ npm install babel-plugin-react-jsx +$ npm install babel-plugin-transform-react-jsx ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-react-jsx ```json { - "plugins": ["react-jsx"] + "plugins": ["transform-react-jsx"] } ``` ### Via CLI ```sh -$ babel --plugins react-jsx script.js +$ babel --plugins transform-react-jsx script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["react-jsx"] + plugins: ["transform-react-jsx"] }); ``` diff --git a/packages/babel-plugin-react-jsx/package.json b/packages/babel-plugin-transform-react-jsx/package.json similarity index 54% rename from packages/babel-plugin-react-jsx/package.json rename to packages/babel-plugin-transform-react-jsx/package.json index 4702727318..2ea83df50c 100644 --- a/packages/babel-plugin-react-jsx/package.json +++ b/packages/babel-plugin-transform-react-jsx/package.json @@ -1,5 +1,5 @@ { - "name": "babel-plugin-react-jsx", + "name": "babel-plugin-transform-react-jsx", "version": "1.0.0", "description": "Turn JSX into React function calls", "repository": "babel/babel", @@ -7,5 +7,9 @@ "main": "lib/index.js", "keywords": [ "babel-plugin" - ] + ], + "dependencies": { + "babel-runtime": "^5.0.0", + "babel-plugin-transform-builder-react-jsx": "^1.0.0" + } } diff --git a/packages/babel-plugin-transform-react-jsx/src/index.js b/packages/babel-plugin-transform-react-jsx/src/index.js new file mode 100644 index 0000000000..784cd9ae53 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/src/index.js @@ -0,0 +1,42 @@ +export default function ({ types: t }) { + var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/; + + var visitor = require("babel-plugin-builder-react-jsx")(t, { + pre(state) { + var tagName = state.tagName; + var args = state.args; + if (t.react.isCompatTag(tagName)) { + args.push(t.stringLiteral(tagName)); + } else { + args.push(state.tagExpr); + } + }, + + post(state, file) { + state.callee = file.get("jsxIdentifier"); + } + }); + + visitor.Program = function (path, file) { + var id = "React.createElement"; // todo: jsxPragma; + + for (var i = 0; i < file.ast.comments.length; i++) { + var comment = file.ast.comments[i]; + var matches = JSX_ANNOTATION_REGEX.exec(comment.value); + if (matches) { + id = matches[1]; + if (id === "React.DOM") { + throw file.buildCodeFrameError(comment, "The @jsx React.DOM pragma has been deprecated as of React 0.12"); + } else { + break; + } + } + } + + file.set("jsxIdentifier", id.split(".").map(t.identifier).reduce(function (object, property) { + return t.memberExpression(object, property); + })); + }; + + return { visitor }; +} diff --git a/packages/babel-plugin-trailing-function-commas/.npmignore b/packages/babel-plugin-transform-remove-console/.npmignore similarity index 100% rename from packages/babel-plugin-trailing-function-commas/.npmignore rename to packages/babel-plugin-transform-remove-console/.npmignore diff --git a/packages/babel-plugin-transform-remove-console/README.md b/packages/babel-plugin-transform-remove-console/README.md new file mode 100644 index 0000000000..98fd9297bf --- /dev/null +++ b/packages/babel-plugin-transform-remove-console/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-remove-console + +Remove console.* calls + +## Installation + +```sh +$ npm install babel-plugin-transform-remove-console +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-remove-console"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-remove-console script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-remove-console"] +}); +``` diff --git a/packages/babel-plugin-remove-console/package.json b/packages/babel-plugin-transform-remove-console/package.json similarity index 60% rename from packages/babel-plugin-remove-console/package.json rename to packages/babel-plugin-transform-remove-console/package.json index a7a693bfc2..b1d9454631 100644 --- a/packages/babel-plugin-remove-console/package.json +++ b/packages/babel-plugin-transform-remove-console/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-remove-console", + "name": "babel-plugin-transform-remove-console", "version": "1.0.1", "description": "Remove console.* calls", - "repository": "babel/babelbabel-plugin-remove-console", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-transform-remove-console/src/index.js b/packages/babel-plugin-transform-remove-console/src/index.js new file mode 100644 index 0000000000..3f8caa5738 --- /dev/null +++ b/packages/babel-plugin-transform-remove-console/src/index.js @@ -0,0 +1,11 @@ +export default function () { + return { + visitor: { + CallExpression(path) { + if (path.get("callee").matchesPattern("console", true)) { + path.remove(); + } + } + } + }; +} diff --git a/packages/babel-plugin-undeclared-variables-check/.npmignore b/packages/babel-plugin-transform-remove-debugger/.npmignore similarity index 100% rename from packages/babel-plugin-undeclared-variables-check/.npmignore rename to packages/babel-plugin-transform-remove-debugger/.npmignore diff --git a/packages/babel-plugin-remove-debugger/README.md b/packages/babel-plugin-transform-remove-debugger/README.md similarity index 50% rename from packages/babel-plugin-remove-debugger/README.md rename to packages/babel-plugin-transform-remove-debugger/README.md index 295dcf659c..094c5a0be5 100644 --- a/packages/babel-plugin-remove-debugger/README.md +++ b/packages/babel-plugin-transform-remove-debugger/README.md @@ -1,11 +1,11 @@ -# babel-plugin-remove-debugger +# babel-plugin-transform-remove-debugger Remove debugger statements ## Installation ```sh -$ npm install babel-plugin-remove-debugger +$ npm install babel-plugin-transform-remove-debugger ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-remove-debugger ```json { - "plugins": ["remove-debugger"] + "plugins": ["transform-remove-debugger"] } ``` ### Via CLI ```sh -$ babel --plugins remove-debugger script.js +$ babel --plugins transform-remove-debugger script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["remove-debugger"] + plugins: ["transform-remove-debugger"] }); ``` diff --git a/packages/babel-plugin-remove-debugger/package.json b/packages/babel-plugin-transform-remove-debugger/package.json similarity index 61% rename from packages/babel-plugin-remove-debugger/package.json rename to packages/babel-plugin-transform-remove-debugger/package.json index c133d2c378..617db3e12a 100644 --- a/packages/babel-plugin-remove-debugger/package.json +++ b/packages/babel-plugin-transform-remove-debugger/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-remove-debugger", + "name": "babel-plugin-transform-remove-debugger", "version": "1.0.1", "description": "Remove debugger statements", - "repository": "babel/babelbabel-plugin-remove-debugger", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-transform-remove-debugger/src/index.js b/packages/babel-plugin-transform-remove-debugger/src/index.js new file mode 100644 index 0000000000..d869cc76b6 --- /dev/null +++ b/packages/babel-plugin-transform-remove-debugger/src/index.js @@ -0,0 +1,9 @@ +export default function () { + return { + visitor: { + DebuggerStatement(path) { + path.remove(); + } + } + }; +} diff --git a/packages/babel-plugin-undefined-to-void/.npmignore b/packages/babel-plugin-transform-runtime/.npmignore similarity index 100% rename from packages/babel-plugin-undefined-to-void/.npmignore rename to packages/babel-plugin-transform-runtime/.npmignore diff --git a/packages/babel-plugin-runtime/README.md b/packages/babel-plugin-transform-runtime/README.md similarity index 62% rename from packages/babel-plugin-runtime/README.md rename to packages/babel-plugin-transform-runtime/README.md index 9abd3c2ff2..700676dee6 100644 --- a/packages/babel-plugin-runtime/README.md +++ b/packages/babel-plugin-transform-runtime/README.md @@ -1,11 +1,11 @@ -# babel-plugin-runtime +# babel-plugin-transform-runtime Externalise references to helpers and builtins, automatically polyfilling your code without polluting globals ## Installation ```sh -$ npm install babel-plugin-runtime +$ npm install babel-plugin-transform-runtime ``` ## Usage @@ -16,20 +16,20 @@ $ npm install babel-plugin-runtime ```json { - "plugins": ["runtime"] + "plugins": ["transform-runtime"] } ``` ### Via CLI ```sh -$ babel --plugins runtime script.js +$ babel --plugins transform-runtime script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["runtime"] + plugins: ["transform-runtime"] }); ``` diff --git a/packages/babel-plugin-runtime/package.json b/packages/babel-plugin-transform-runtime/package.json similarity index 63% rename from packages/babel-plugin-runtime/package.json rename to packages/babel-plugin-transform-runtime/package.json index d6a68bca0c..868b737c51 100644 --- a/packages/babel-plugin-runtime/package.json +++ b/packages/babel-plugin-transform-runtime/package.json @@ -1,11 +1,14 @@ { - "name": "babel-plugin-runtime", + "name": "babel-plugin-transform-runtime", "version": "1.0.7", "description": "Externalise references to helpers and builtins, automatically polyfilling your code without polluting globals", - "repository": "babel/babelbabel-plugin-runtime", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ "babel-plugin" - ] + ], + "dependencies": { + "babel-runtime": "^5.8.20" + } } diff --git a/packages/babel-plugin-runtime/src/definitions.json b/packages/babel-plugin-transform-runtime/src/definitions.json similarity index 99% rename from packages/babel-plugin-runtime/src/definitions.json rename to packages/babel-plugin-transform-runtime/src/definitions.json index 9c82814bc5..51ba8dd801 100644 --- a/packages/babel-plugin-runtime/src/definitions.json +++ b/packages/babel-plugin-transform-runtime/src/definitions.json @@ -37,7 +37,6 @@ "some": "array/some", "sort": "array/sort", "splice": "array/splice", - "turn": "array/turn", "unshift": "array/unshift", "values": "array/values" }, diff --git a/packages/babel-plugin-runtime/src/index.js b/packages/babel-plugin-transform-runtime/src/index.js similarity index 71% rename from packages/babel-plugin-runtime/src/index.js rename to packages/babel-plugin-transform-runtime/src/index.js index 1ba27f10eb..a80feb0d23 100644 --- a/packages/babel-plugin-runtime/src/index.js +++ b/packages/babel-plugin-transform-runtime/src/index.js @@ -8,10 +8,6 @@ export default function ({ types: t }) { } return { - metadata: { - group: "builtin-post-modules" - }, - pre(file) { file.set("helperGenerator", function (name) { return file.addImport(`${RUNTIME_MODULE_NAME}/helpers/${name}`, name, "absoluteDefault"); @@ -23,7 +19,7 @@ export default function ({ types: t }) { }, visitor: { - ReferencedIdentifier(node, parent, scope, file) { + ReferencedIdentifier({ node, parent, scope }, file) { if (node.name === "regeneratorRuntime") { return file.get("regeneratorIdentifier"); } @@ -37,37 +33,42 @@ export default function ({ types: t }) { return file.addImport(`${RUNTIME_MODULE_NAME}/core-js/${modulePath}`, node.name, "absoluteDefault"); }, - CallExpression(node, parent, scope, file) { + CallExpression(path, file) { // arr[Symbol.iterator]() -> _core.$for.getIterator(arr) - if (node.arguments.length) return; + // we can't compile this + if (path.node.arguments.length) return; - var callee = node.callee; + var callee = path.node.callee; if (!t.isMemberExpression(callee)) return; if (!callee.computed) return; - if (!this.get("callee.property").matchesPattern("Symbol.iterator")) return; + if (!path.get("callee.property").matchesPattern("Symbol.iterator")) return; - return t.callExpression(file.addImport(`${RUNTIME_MODULE_NAME}/core-js/get-iterator`, "getIterator", "absoluteDefault"), [callee.object]); + return t.callExpression( + file.addImport(`${RUNTIME_MODULE_NAME}/core-js/get-iterator`, "getIterator", "absoluteDefault"), + [callee.object] + ); }, - BinaryExpression(node, parent, scope, file) { + BinaryExpression(path, file) { // Symbol.iterator in arr -> core.$for.isIterable(arr) - if (node.operator !== "in") return; - if (!this.get("left").matchesPattern("Symbol.iterator")) return; + if (path.node.operator !== "in") return; + if (!path.get("left").matchesPattern("Symbol.iterator")) return; return t.callExpression( file.addImport(`${RUNTIME_MODULE_NAME}/core-js/is-iterable`, "isIterable", "absoluteDefault"), - [node.right] + [path.node.right] ); }, MemberExpression: { - enter(node, parent, scope, file) { + enter(path, file) { // Array.from -> _core.Array.from - if (!this.isReferenced()) return; + if (!path.isReferenced()) return; + var { node } = path; var obj = node.object; var prop = node.property; @@ -81,11 +82,11 @@ export default function ({ types: t }) { if (!has(methods, prop.name)) return; // doesn't reference the global - if (scope.getBindingIdentifier(obj.name)) return; + if (path.scope.getBindingIdentifier(obj.name)) return; // special case Object.defineProperty to not use core-js when using string keys - if (obj.name === "Object" && prop.name === "defineProperty" && this.parentPath.isCallExpression()) { - var call = this.parentPath.node; + if (obj.name === "Object" && prop.name === "defineProperty" && path.parentPath.isCallExpression()) { + var call = path.parentPath.node; if (call.arguments.length === 3 && t.isLiteral(call.arguments[1])) return; } @@ -93,14 +94,14 @@ export default function ({ types: t }) { return file.addImport(`${RUNTIME_MODULE_NAME}/core-js/${modulePath}`, `${obj.name}$${prop.name}`, "absoluteDefault"); }, - exit(node, parent, scope, file) { - if (!this.isReferenced()) return; + exit(path, file) { + if (!path.isReferenced()) return; - var prop = node.property; - var obj = node.object; + var prop = path.node.property; + var obj = path.node.object; if (!has(definitions.builtins, obj.name)) return; - if (scope.getBindingIdentifier(obj.name)) return; + if (path.scope.getBindingIdentifier(obj.name)) return; var modulePath = definitions.builtins[obj.name]; return t.memberExpression( diff --git a/packages/babel-plugin-async-functions/.gitignore b/packages/babel-plugin-transform-simplify-comparison-operators/.npmignore similarity index 82% rename from packages/babel-plugin-async-functions/.gitignore rename to packages/babel-plugin-transform-simplify-comparison-operators/.npmignore index 45f7222308..cace0d6ddc 100644 --- a/packages/babel-plugin-async-functions/.gitignore +++ b/packages/babel-plugin-transform-simplify-comparison-operators/.npmignore @@ -1,3 +1,3 @@ node_modules *.log -lib +src diff --git a/packages/babel-plugin-simplify-comparison-operators/README.md b/packages/babel-plugin-transform-simplify-comparison-operators/README.md similarity index 57% rename from packages/babel-plugin-simplify-comparison-operators/README.md rename to packages/babel-plugin-transform-simplify-comparison-operators/README.md index 4475a3b839..01ad108046 100644 --- a/packages/babel-plugin-simplify-comparison-operators/README.md +++ b/packages/babel-plugin-transform-simplify-comparison-operators/README.md @@ -1,4 +1,4 @@ -# babel-plugin-simplify-comparison-operators +# babel-plugin-transform-simplify-comparison-operators Convert `===` and `!==` to `==` and `!=` if their types are inferred to be the same. @@ -19,7 +19,7 @@ typeof foo == "object"; ## Installation ```sh -$ npm install babel-plugin-simplify-comparison-operators +$ npm install babel-plugin-transform-simplify-comparison-operators ``` ## Usage @@ -30,20 +30,20 @@ $ npm install babel-plugin-simplify-comparison-operators ```json { - "plugins": ["simplify-comparison-operators"] + "plugins": ["transform-simplify-comparison-operators"] } ``` ### Via CLI ```sh -$ babel --plugins simplify-comparison-operators script.js +$ babel --plugins transform-simplify-comparison-operators script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["simplify-comparison-operators"] + plugins: ["transform-simplify-comparison-operators"] }); ``` diff --git a/packages/babel-plugin-simplify-comparison-operators/package.json b/packages/babel-plugin-transform-simplify-comparison-operators/package.json similarity index 61% rename from packages/babel-plugin-simplify-comparison-operators/package.json rename to packages/babel-plugin-transform-simplify-comparison-operators/package.json index 912f778ac5..5d926d90bf 100644 --- a/packages/babel-plugin-simplify-comparison-operators/package.json +++ b/packages/babel-plugin-transform-simplify-comparison-operators/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-simplify-comparison-operators", + "name": "babel-plugin-transform-simplify-comparison-operators", "version": "1.0.2", "description": "Convert === and !== to == and != if their types are inferred to be the same.", - "repository": "babel/babelbabel-plugin-simplify-comparison-operators", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-simplify-comparison-operators/src/index.js b/packages/babel-plugin-transform-simplify-comparison-operators/src/index.js similarity index 88% rename from packages/babel-plugin-simplify-comparison-operators/src/index.js rename to packages/babel-plugin-transform-simplify-comparison-operators/src/index.js index 40b9b9e783..88b311e1a7 100644 --- a/packages/babel-plugin-simplify-comparison-operators/src/index.js +++ b/packages/babel-plugin-transform-simplify-comparison-operators/src/index.js @@ -1,9 +1,5 @@ export default function () { return { - metadata: { - group: "builtin-pre" - }, - visitor: { BinaryExpression(node) { var op = node.operator; diff --git a/packages/babel-plugin-async-to-bluebird-coroutines/.gitignore b/packages/babel-plugin-transform-undeclared-variables-check/.npmignore similarity index 82% rename from packages/babel-plugin-async-to-bluebird-coroutines/.gitignore rename to packages/babel-plugin-transform-undeclared-variables-check/.npmignore index 45f7222308..cace0d6ddc 100644 --- a/packages/babel-plugin-async-to-bluebird-coroutines/.gitignore +++ b/packages/babel-plugin-transform-undeclared-variables-check/.npmignore @@ -1,3 +1,3 @@ node_modules *.log -lib +src diff --git a/packages/babel-plugin-transform-undeclared-variables-check/README.md b/packages/babel-plugin-transform-undeclared-variables-check/README.md new file mode 100644 index 0000000000..cddd56313d --- /dev/null +++ b/packages/babel-plugin-transform-undeclared-variables-check/README.md @@ -0,0 +1,35 @@ +# babel-plugin-transform-undeclared-variables-check + +Throw a compile-time error on references to undeclared variables + +## Installation + +```sh +$ npm install babel-plugin-transform-undeclared-variables-check +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["transform-undeclared-variables-check"] +} +``` + +### Via CLI + +```sh +$ babel --plugins transform-undeclared-variables-check script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-undeclared-variables-check"] +}); +``` diff --git a/packages/babel-plugin-undeclared-variables-check/package.json b/packages/babel-plugin-transform-undeclared-variables-check/package.json similarity index 65% rename from packages/babel-plugin-undeclared-variables-check/package.json rename to packages/babel-plugin-transform-undeclared-variables-check/package.json index eab0ce08bc..82cbe2499e 100644 --- a/packages/babel-plugin-undeclared-variables-check/package.json +++ b/packages/babel-plugin-transform-undeclared-variables-check/package.json @@ -1,14 +1,15 @@ { - "name": "babel-plugin-undeclared-variables-check", + "name": "babel-plugin-transform-undeclared-variables-check", "version": "1.0.2", "description": "Throw a compile-time error on references to undeclared variables", - "repository": "babel/babelbabel-plugin-undeclared-variables-check", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ "babel-plugin" ], "dependencies": { + "babel-runtime": "^5.8.20", "leven": "^1.0.2" } } diff --git a/packages/babel-plugin-undeclared-variables-check/src/index.js b/packages/babel-plugin-transform-undeclared-variables-check/src/index.js similarity index 74% rename from packages/babel-plugin-undeclared-variables-check/src/index.js rename to packages/babel-plugin-transform-undeclared-variables-check/src/index.js index cd9cb5e56c..4ce2f590f7 100644 --- a/packages/babel-plugin-undeclared-variables-check/src/index.js +++ b/packages/babel-plugin-transform-undeclared-variables-check/src/index.js @@ -2,15 +2,13 @@ import levenshtein from "leven"; export default function ({ messages }) { return { - metadata: { - group: "builtin-pre" - }, - visitor: { - ReferencedIdentifier(node, parent, scope) { + ReferencedIdentifier(path) { + var { node, scope } = path; + var binding = scope.getBinding(node.name); - if (binding && binding.kind === "type" && !this.parentPath.isFlow()) { - throw this.errorWithNode(messages.get("undeclaredVariableType", node.name), ReferenceError); + if (binding && binding.kind === "type" && !path.parentPath.isFlow()) { + throw path.buildCodeFrameError(messages.get("undeclaredVariableType", node.name), ReferenceError); } if (scope.hasBinding(node.name)) return; @@ -41,7 +39,7 @@ export default function ({ messages }) { // - throw this.errorWithNode(msg, ReferenceError); + throw path.buildCodeFrameError(msg, ReferenceError); } } }; diff --git a/packages/babel-plugin-async-to-generator/.gitignore b/packages/babel-plugin-transform-undefined-to-void/.npmignore similarity index 82% rename from packages/babel-plugin-async-to-generator/.gitignore rename to packages/babel-plugin-transform-undefined-to-void/.npmignore index 45f7222308..cace0d6ddc 100644 --- a/packages/babel-plugin-async-to-generator/.gitignore +++ b/packages/babel-plugin-transform-undefined-to-void/.npmignore @@ -1,3 +1,3 @@ node_modules *.log -lib +src diff --git a/packages/babel-plugin-undefined-to-void/README.md b/packages/babel-plugin-transform-undefined-to-void/README.md similarity index 70% rename from packages/babel-plugin-undefined-to-void/README.md rename to packages/babel-plugin-transform-undefined-to-void/README.md index 874189d710..4ad6f53b5e 100644 --- a/packages/babel-plugin-undefined-to-void/README.md +++ b/packages/babel-plugin-transform-undefined-to-void/README.md @@ -1,4 +1,4 @@ -# babel-plugin-undefined-to-void +# babel-plugin-transform-undefined-to-void Some JavaScript implementations allow `undefined` to be overwritten, this may lead to peculiar bugs that are extremely hard to track down. @@ -23,7 +23,7 @@ foo === void 0; ## Installation ```sh -$ npm install babel-plugin-undefined-to-void +$ npm install babel-plugin-transform-undefined-to-void ``` ## Usage @@ -34,20 +34,20 @@ $ npm install babel-plugin-undefined-to-void ```json { - "plugins": ["undefined-to-void"] + "plugins": ["transform-undefined-to-void"] } ``` ### Via CLI ```sh -$ babel --plugins undefined-to-void script.js +$ babel --plugins transform-undefined-to-void script.js ``` ### Via Node API ```javascript require("babel-core").transform("code", { - plugins: ["undefined-to-void"] + plugins: ["transform-undefined-to-void"] }); ``` diff --git a/packages/babel-plugin-undefined-to-void/package.json b/packages/babel-plugin-transform-undefined-to-void/package.json similarity index 63% rename from packages/babel-plugin-undefined-to-void/package.json rename to packages/babel-plugin-transform-undefined-to-void/package.json index 27d88a26c6..888423f34b 100644 --- a/packages/babel-plugin-undefined-to-void/package.json +++ b/packages/babel-plugin-transform-undefined-to-void/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-undefined-to-void", + "name": "babel-plugin-transform-undefined-to-void", "version": "1.1.6", "description": "Replace references to `undefined` with `void 0`", - "repository": "babel/babelbabel-plugin-undefined-to-void", + "repository": "babel/babel", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-undefined-to-void/src/index.js b/packages/babel-plugin-transform-undefined-to-void/src/index.js similarity index 82% rename from packages/babel-plugin-undefined-to-void/src/index.js rename to packages/babel-plugin-transform-undefined-to-void/src/index.js index 5b70388760..593d7bea3d 100644 --- a/packages/babel-plugin-undefined-to-void/src/index.js +++ b/packages/babel-plugin-transform-undefined-to-void/src/index.js @@ -1,9 +1,5 @@ export default function ({ types: t }) { return { - metadata: { - group: "builtin-basic" - }, - visitor: { ReferencedIdentifier(node) { if (node.name === "undefined") { diff --git a/packages/babel-plugin-undeclared-variables-check/README.md b/packages/babel-plugin-undeclared-variables-check/README.md deleted file mode 100644 index 8051e67a12..0000000000 --- a/packages/babel-plugin-undeclared-variables-check/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# babel-plugin-undeclared-variables-check - -Throw a compile-time error on references to undeclared variables - -## Installation - -```sh -$ npm install babel-plugin-undeclared-variables-check -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["undeclared-variables-check"] -} -``` - -### Via CLI - -```sh -$ babel --plugins undeclared-variables-check script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["undeclared-variables-check"] -}); -``` diff --git a/packages/babel-polyfill/README.md b/packages/babel-polyfill/README.md new file mode 100644 index 0000000000..9cb41082ad --- /dev/null +++ b/packages/babel-polyfill/README.md @@ -0,0 +1 @@ +# babel-polyfill