diff --git a/CHANGELOG.md b/CHANGELOG.md index 06bc3a24f3..b5fc99aa50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ _Note: Gaps between patch versions are faulty, broken or test releases._ See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog. +## 6.22.1 (2017-01-19) + +#### :bug: Bug Fix + +Temporary fix with `babel-traverse` via [#5019](https://github.com/babel/babel/pull/5019) for transform-react-constant-elements. + ## 6.22.0 (2017-01-19) A quick update since it's been over a month already: adds support for shorthand import syntax in Flow + some fixes! diff --git a/lerna.json b/lerna.json index 4fc063c9a9..d522a2967d 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "2.0.0-beta.23", - "version": "6.22.0", + "version": "6.22.1", "changelog": { "repo": "babel/babel", "labels": { diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json index d32f989965..a4a9444af0 100644 --- a/packages/babel-cli/package.json +++ b/packages/babel-cli/package.json @@ -1,13 +1,22 @@ { "name": "babel-cli", - "version": "6.22.0", + "version": "6.22.1", "description": "Babel command line.", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", "license": "MIT", "repository": "https://github.com/babel/babel/tree/master/packages/babel-cli", + "keywords": [ + "6to5", + "babel", + "es6", + "transpile", + "transpiler", + "babel-cli", + "compiler" + ], "dependencies": { - "babel-core": "^6.22.0", + "babel-core": "^6.22.1", "babel-register": "^6.22.0", "babel-polyfill": "^6.22.0", "babel-runtime": "^6.22.0", diff --git a/packages/babel-core/index.js b/packages/babel-core/index.js index e8f04775a2..07edf9757c 100644 --- a/packages/babel-core/index.js +++ b/packages/babel-core/index.js @@ -1 +1 @@ -module.exports = require("./lib/api/node.js"); +module.exports = require("./lib/index.js"); diff --git a/packages/babel-core/package.json b/packages/babel-core/package.json index 0e62b668a5..a9cbeb1f8b 100644 --- a/packages/babel-core/package.json +++ b/packages/babel-core/package.json @@ -1,6 +1,6 @@ { "name": "babel-core", - "version": "6.22.0", + "version": "6.22.1", "description": "Babel compiler core.", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", @@ -18,7 +18,8 @@ "transpile", "transpiler", "var", - "babel-core" + "babel-core", + "compiler" ], "scripts": { "bench": "make bench", @@ -32,7 +33,7 @@ "babel-template": "^6.22.0", "babel-runtime": "^6.22.0", "babel-register": "^6.22.0", - "babel-traverse": "^6.22.0", + "babel-traverse": "^6.22.1", "babel-types": "^6.22.0", "babylon": "^6.11.0", "convert-source-map": "^1.1.0", diff --git a/packages/babel-core/src/api/browser.js b/packages/babel-core/src/api/browser.js deleted file mode 100644 index d5d89f6b71..0000000000 --- a/packages/babel-core/src/api/browser.js +++ /dev/null @@ -1,112 +0,0 @@ -/* eslint max-len: 0 */ -/* eslint no-new-func: 0 */ - -import { transform } from "./node"; -export { - File, - options, - buildExternalHelpers, - template, - version, - util, - messages, - types, - traverse, - OptionManager, - Plugin, - Pipeline, - analyse, - transform, - transformFromAst, - transformFile, - transformFileSync -} from "./node"; - -export function run(code: string, opts: Object = {}): any { - return new Function(transform(code, opts).code)(); -} - -export function load(url: string, callback: Function, opts: Object = {}, hold?: boolean) { - opts.filename = opts.filename || url; - - const xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest(); - xhr.open("GET", url, true); - if ("overrideMimeType" in xhr) xhr.overrideMimeType("text/plain"); - - xhr.onreadystatechange = function () { - if (xhr.readyState !== 4) return; - - const status = xhr.status; - if (status === 0 || status === 200) { - const param = [xhr.responseText, opts]; - if (!hold) run(param); - if (callback) callback(param); - } else { - throw new Error(`Could not load ${url}`); - } - }; - - xhr.send(null); -} - -function runScripts() { - const scripts: Array | Object> = []; - const types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"]; - let index = 0; - - /** - * Transform and execute script. Ensures correct load order. - */ - - function exec() { - const param = scripts[index]; - if (param instanceof Array) { - run(param, index); - index++; - exec(); - } - } - - /** - * Load, transform, and execute all scripts. - */ - - function run(script: Object, i: number) { - const opts = {}; - - if (script.src) { - load(script.src, function (param) { - scripts[i] = param; - exec(); - }, opts, true); - } else { - opts.filename = "embedded"; - scripts[i] = [script.innerHTML, opts]; - } - } - - // Collect scripts with Babel `types`. - - const _scripts = global.document.getElementsByTagName("script"); - - for (let i = 0; i < _scripts.length; ++i) { - const _script = _scripts[i]; - if (types.indexOf(_script.type) >= 0) scripts.push(_script); - } - - for (let i = 0; i < scripts.length; i++) { - run(scripts[i], i); - } - - exec(); -} - -/** - * Register load event to transform and execute scripts. - */ - -if (global.addEventListener) { - global.addEventListener("DOMContentLoaded", runScripts, false); -} else if (global.attachEvent) { - global.attachEvent("onload", runScripts); -} diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/index.js similarity index 70% rename from packages/babel-core/src/api/node.js rename to packages/babel-core/src/index.js index 3ff92f9d7f..86a65bde56 100644 --- a/packages/babel-core/src/api/node.js +++ b/packages/babel-core/src/index.js @@ -1,14 +1,14 @@ import fs from "fs"; -export { default as File } from "../transformation/file"; -export { default as options } from "../transformation/file/options/config"; -export { default as buildExternalHelpers } from "../tools/build-external-helpers"; +export { default as File } from "./transformation/file"; +export { default as options } from "./transformation/file/options/config"; +export { default as buildExternalHelpers } from "./tools/build-external-helpers"; export { default as template } from "babel-template"; -export { default as resolvePlugin } from "../helpers/resolve-plugin"; -export { default as resolvePreset } from "../helpers/resolve-preset"; -export { version } from "../../package"; +export { default as resolvePlugin } from "./helpers/resolve-plugin"; +export { default as resolvePreset } from "./helpers/resolve-preset"; +export { version } from "../package"; -import * as util from "../util"; +import * as util from "./util"; export { util }; import * as messages from "babel-messages"; @@ -20,14 +20,14 @@ export { t as types }; import traverse from "babel-traverse"; export { traverse }; -import OptionManager from "../transformation/file/options/option-manager"; +import OptionManager from "./transformation/file/options/option-manager"; export { OptionManager }; export function Plugin(alias) { throw new Error(`The (${alias}) Babel 5 plugin is being run with Babel 6.`); } -import Pipeline from "../transformation/pipeline"; +import Pipeline from "./transformation/pipeline"; export { Pipeline }; const pipeline = new Pipeline; diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js index c4736355a6..8221e3fe19 100644 --- a/packages/babel-core/src/transformation/file/options/option-manager.js +++ b/packages/babel-core/src/transformation/file/options/option-manager.js @@ -1,6 +1,6 @@ /* eslint max-len: 0 */ -import * as context from "../../../api/node"; +import * as context from "../../../index"; import type Logger from "../logger"; import Plugin from "../../plugin"; import * as messages from "babel-messages"; diff --git a/packages/babel-core/test/_browser.js b/packages/babel-core/test/_browser.js deleted file mode 100644 index 53e16f6e6c..0000000000 --- a/packages/babel-core/test/_browser.js +++ /dev/null @@ -1,7 +0,0 @@ -if (process.browser) { - require("../lib/api/browser"); - require("./generation"); - require("./transformation"); - require("./traverse"); - require("./util"); -} diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index 6342792020..910418321b 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -1,4 +1,4 @@ -import * as babel from "../lib/api/node"; +import * as babel from "../lib/index"; import buildExternalHelpers from "../lib/tools/build-external-helpers"; import sourceMap from "source-map"; import assert from "assert"; diff --git a/packages/babel-core/test/path.js b/packages/babel-core/test/path.js index 72642c6480..7628e1033f 100644 --- a/packages/babel-core/test/path.js +++ b/packages/babel-core/test/path.js @@ -1,4 +1,4 @@ -import { transform } from "../lib/api/node"; +import { transform } from "../lib/index"; import Plugin from "../lib/transformation/plugin"; import chai from "chai"; diff --git a/packages/babel-core/test/resolution.js b/packages/babel-core/test/resolution.js index 21d945706d..d65c7e9028 100644 --- a/packages/babel-core/test/resolution.js +++ b/packages/babel-core/test/resolution.js @@ -1,6 +1,6 @@ import assert from "assert"; import async from "async"; -import * as babel from "../lib/api/node"; +import * as babel from "../lib/index"; import fs from "fs"; import path from "path"; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/actual.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/actual.js new file mode 100644 index 0000000000..fbd1ed5555 --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/actual.js @@ -0,0 +1,10 @@ +class AnchorLink extends Component { + render() { + const { isExternal, children } = this.props; + if (isExternal) { + return ({children}); + } + + return ({children}); + } +} diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/expected.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/expected.js new file mode 100644 index 0000000000..4f730edf03 --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/expected.js @@ -0,0 +1,13 @@ +class AnchorLink extends Component { + render() { + var _props = this.props; + const isExternal = _props.isExternal, + children = _props.children; + + if (isExternal) { + return {children}; + } + + return {children}; + } +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/options.json b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/options.json new file mode 100644 index 0000000000..dc9272a969 --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/destructure/options.json @@ -0,0 +1,7 @@ +{ + "plugins": [ + "syntax-jsx", + "transform-es2015-destructuring", + "transform-react-constant-elements" + ] +} diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json index cb68f38bf1..8066c617a8 100644 --- a/packages/babel-traverse/package.json +++ b/packages/babel-traverse/package.json @@ -1,6 +1,6 @@ { "name": "babel-traverse", - "version": "6.22.0", + "version": "6.22.1", "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes", "author": "Sebastian McKenzie ", "homepage": "https://babeljs.io/", diff --git a/packages/babel-traverse/src/path/lib/hoister.js b/packages/babel-traverse/src/path/lib/hoister.js index 8a36031f1e..243e9c18ac 100644 --- a/packages/babel-traverse/src/path/lib/hoister.js +++ b/packages/babel-traverse/src/path/lib/hoister.js @@ -121,7 +121,12 @@ export default class PathHoister { do { if (!path.parentPath || (Array.isArray(path.container) && path.isStatement()) || - (path.isVariableDeclarator() && path.parentPath.node.declarations.length > 1)) + ( + path.isVariableDeclarator() && + path.parentPath.node !== null && + path.parentPath.node.declarations.length > 1 + ) + ) return path; } while ((path = path.parentPath)); }