diff --git a/packages/babel-plugin-transform-es2015-constants/.npmignore b/packages/babel-plugin-check-es2015-constants/.npmignore similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/.npmignore rename to packages/babel-plugin-check-es2015-constants/.npmignore diff --git a/packages/babel-plugin-check-es2015-constants/README.md b/packages/babel-plugin-check-es2015-constants/README.md new file mode 100644 index 0000000000..0bd2c3b4ab --- /dev/null +++ b/packages/babel-plugin-check-es2015-constants/README.md @@ -0,0 +1,39 @@ +# babel-plugin-check-es2015-constants + +Validate ES2015 constants + +## Installation + +```sh +$ npm install babel-plugin-check-es2015-constants +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```json +{ + "plugins": ["check-es2015-constants"] +} +``` + +### Via CLI + +```sh +$ babel --plugins check-es2015-constants script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["check-es2015-constants"] +}); +``` + +## Note + +This check will only validate consts. If you need it to compile down to `var` then you must also install and enable [`check-es2015-block-scoping`](../babel-plugin-check-es2015-block-scoping). diff --git a/packages/babel-plugin-transform-es2015-constants/package.json b/packages/babel-plugin-check-es2015-constants/package.json similarity index 78% rename from packages/babel-plugin-transform-es2015-constants/package.json rename to packages/babel-plugin-check-es2015-constants/package.json index 85fb9e267b..4942be62d0 100644 --- a/packages/babel-plugin-transform-es2015-constants/package.json +++ b/packages/babel-plugin-check-es2015-constants/package.json @@ -1,8 +1,8 @@ { - "name": "babel-plugin-transform-es2015-constants", + "name": "babel-plugin-check-es2015-constants", "version": "6.1.4", "description": "Compile ES2015 constants to ES5", - "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-constants", + "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-check-es2015-constants", "license": "MIT", "main": "lib/index.js", "keywords": [ diff --git a/packages/babel-plugin-check-es2015-constants/src/index.js b/packages/babel-plugin-check-es2015-constants/src/index.js new file mode 100644 index 0000000000..4269b0385c --- /dev/null +++ b/packages/babel-plugin-check-es2015-constants/src/index.js @@ -0,0 +1,16 @@ +export default function ({ messages }) { + return { + visitor: { + Scope({ scope }) { + for (let name in scope.bindings) { + let binding = scope.bindings[name]; + if (binding.kind !== "const" && binding.kind !== "module") continue; + + for (let violation of (binding.constantViolations: Array)) { + throw violation.buildCodeFrameError(messages.get("readOnly", name)); + } + } + }, + } + }; +} diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/block-scoped/exec.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/block-scoped/exec.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/block-scoped/exec.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/block-scoped/exec.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/block-statement/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/block-statement/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/block-statement/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/block-statement/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/block-statement/expected.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/block-statement/expected.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/block-statement/expected.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/block-statement/expected.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring-assignment/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring-assignment/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring-assignment/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring-assignment/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring-assignment/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring-assignment/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring-assignment/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring-assignment/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring/expected.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring/expected.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/destructuring/expected.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/destructuring/expected.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/ignore-member-expressions/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/ignore-member-expressions/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/ignore-member-expressions/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/ignore-member-expressions/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/ignore-member-expressions/expected.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/ignore-member-expressions/expected.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/ignore-member-expressions/expected.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/ignore-member-expressions/expected.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/loop/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/loop/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/loop/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/loop/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/loop/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/loop/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/loop/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/loop/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-assignment/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-assignment/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-assignment/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-assignment/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-assignment/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-assignment/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-assignment/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-assignment/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-classes/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-classes/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-classes/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-classes/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-classes/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-classes/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-classes/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-classes/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-declaration/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-declaration/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-declaration/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-declaration/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-declaration/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-declaration/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-declaration/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-declaration/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-for-in/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-for-in/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-for-in/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-for-in/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-for-in/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-for-in/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-for-in/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-for-in/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-functions/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-functions/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-functions/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-functions/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-functions/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-functions/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/no-functions/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/no-functions/options.json diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/program/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/program/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/program/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/program/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/program/expected.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/program/expected.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/program/expected.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/program/expected.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/update-expression/actual.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/update-expression/actual.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/update-expression/actual.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/update-expression/actual.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/update-expression/expected.js b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/update-expression/expected.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/update-expression/expected.js rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/update-expression/expected.js diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/general/update-expression/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/general/update-expression/options.json similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/fixtures/general/update-expression/options.json rename to packages/babel-plugin-check-es2015-constants/test/fixtures/general/update-expression/options.json diff --git a/packages/babel-plugin-check-es2015-constants/test/fixtures/options.json b/packages/babel-plugin-check-es2015-constants/test/fixtures/options.json new file mode 100644 index 0000000000..c0e516303a --- /dev/null +++ b/packages/babel-plugin-check-es2015-constants/test/fixtures/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["check-es2015-constants", "transform-es2015-block-scoping", "transform-es2015-destructuring"] +} diff --git a/packages/babel-plugin-transform-es2015-constants/test/index.js b/packages/babel-plugin-check-es2015-constants/test/index.js similarity index 100% rename from packages/babel-plugin-transform-es2015-constants/test/index.js rename to packages/babel-plugin-check-es2015-constants/test/index.js diff --git a/packages/babel-plugin-transform-es2015-block-scoping/test/fixtures/pass/options.json b/packages/babel-plugin-transform-es2015-block-scoping/test/fixtures/pass/options.json index 7c2bea4aad..a0ae43ffad 100644 --- a/packages/babel-plugin-transform-es2015-block-scoping/test/fixtures/pass/options.json +++ b/packages/babel-plugin-transform-es2015-block-scoping/test/fixtures/pass/options.json @@ -1,3 +1,3 @@ { - "plugins": ["transform-es2015-constants", "transform-es2015-block-scoping", "transform-es2015-parameters", "transform-es2015-destructuring", "transform-es2015-modules-commonjs"] + "plugins": ["check-es2015-constants", "transform-es2015-block-scoping", "transform-es2015-parameters", "transform-es2015-destructuring", "transform-es2015-modules-commonjs"] } diff --git a/packages/babel-plugin-transform-es2015-constants/README.md b/packages/babel-plugin-transform-es2015-constants/README.md deleted file mode 100644 index 33c2610514..0000000000 --- a/packages/babel-plugin-transform-es2015-constants/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# babel-plugin-transform-es2015-constants - -Compile ES2015 constants to ES5 - -## Installation - -```sh -$ npm install babel-plugin-transform-es2015-constants -``` - -## Usage - -### Via `.babelrc` (Recommended) - -**.babelrc** - -```json -{ - "plugins": ["transform-es2015-constants"] -} -``` - -### Via CLI - -```sh -$ babel --plugins transform-es2015-constants script.js -``` - -### Via Node API - -```javascript -require("babel-core").transform("code", { - plugins: ["transform-es2015-constants"] -}); -``` - -## Note - -This transform on its own will compile `const` to `let`. If you need it to compile down to `var` then you must also install and enable [`transform-es2015-block-scoping`](../babel-plugin-transform-es2015-block-scoping). diff --git a/packages/babel-plugin-transform-es2015-constants/src/index.js b/packages/babel-plugin-transform-es2015-constants/src/index.js deleted file mode 100644 index 7970a0ad89..0000000000 --- a/packages/babel-plugin-transform-es2015-constants/src/index.js +++ /dev/null @@ -1,38 +0,0 @@ -export default function ({ messages, types: t }) { - function check(node) { - if (t.isVariableDeclaration(node, { kind: "const" })) { - node.kind = "let"; - } - } - - return { - visitor: { - Scope({ scope }) { - for (let name in scope.bindings) { - let binding = scope.bindings[name]; - if (binding.kind !== "const" && binding.kind !== "module") continue; - - for (let violation of (binding.constantViolations: Array)) { - throw violation.buildCodeFrameError(messages.get("readOnly", name)); - } - } - }, - - VariableDeclaration({ node }) { - check(node); - }, - - ForXStatement({ node: { left } }) { - check(left); - }, - - ForStatement({ node: { init } }) { - check(init); - }, - - "BlockStatement|Program"({ node: { body } }) { - for (let node of body) check(node); - } - } - }; -} diff --git a/packages/babel-plugin-transform-es2015-constants/test/fixtures/options.json b/packages/babel-plugin-transform-es2015-constants/test/fixtures/options.json deleted file mode 100644 index b4063f1b64..0000000000 --- a/packages/babel-plugin-transform-es2015-constants/test/fixtures/options.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "plugins": ["transform-es2015-constants", "transform-es2015-block-scoping", "transform-es2015-destructuring"] -} diff --git a/packages/babel-preset-es2015/index.js b/packages/babel-preset-es2015/index.js index d30d1461ad..f8fdb617e4 100644 --- a/packages/babel-preset-es2015/index.js +++ b/packages/babel-preset-es2015/index.js @@ -12,7 +12,7 @@ module.exports = { require("babel-plugin-transform-es2015-for-of"), require("babel-plugin-transform-es2015-sticky-regex"), require("babel-plugin-transform-es2015-unicode-regex"), - require("babel-plugin-transform-es2015-constants"), + require("babel-plugin-check-es2015-constants"), require("babel-plugin-transform-es2015-spread"), require("babel-plugin-transform-es2015-parameters"), require("babel-plugin-transform-es2015-destructuring"), diff --git a/packages/babel-preset-es2015/package.json b/packages/babel-preset-es2015/package.json index d1aac6653f..b8e59870b7 100644 --- a/packages/babel-preset-es2015/package.json +++ b/packages/babel-preset-es2015/package.json @@ -20,7 +20,7 @@ "babel-plugin-transform-es2015-for-of": "^6.1.4", "babel-plugin-transform-es2015-sticky-regex": "^6.1.4", "babel-plugin-transform-es2015-unicode-regex": "^6.1.4", - "babel-plugin-transform-es2015-constants": "^6.1.4", + "babel-plugin-check-es2015-constants": "^6.1.4", "babel-plugin-transform-es2015-spread": "^6.1.4", "babel-plugin-transform-es2015-parameters": "^6.1.4", "babel-plugin-transform-es2015-destructuring": "^6.1.4", diff --git a/packages/babel-preset-es2015/test/fixtures/traceur/options.json b/packages/babel-preset-es2015/test/fixtures/traceur/options.json index 668b348e59..f549ded098 100644 --- a/packages/babel-preset-es2015/test/fixtures/traceur/options.json +++ b/packages/babel-preset-es2015/test/fixtures/traceur/options.json @@ -14,7 +14,7 @@ "transform-es2015-for-of", "transform-es2015-sticky-regex", "transform-es2015-unicode-regex", - "transform-es2015-constants", + "check-es2015-constants", "transform-es2015-spread", "transform-es2015-parameters", "transform-es2015-destructuring",