Skip to content

Commit

Permalink
suppport babel 7 (#179)
Browse files Browse the repository at this point in the history
* upgrade deps to babel 7

* enhancement: support babel 7

* breaking: only support node >= 6

* travis: update

* upgrade: babel-istanbul from 0.7.0 to 0.12.2
  • Loading branch information
soda-x authored and sorrycc committed Sep 28, 2017
1 parent b4bcaa9 commit e6a4063
Show file tree
Hide file tree
Showing 30 changed files with 162 additions and 245 deletions.
15 changes: 10 additions & 5 deletions .travis.yml
@@ -1,7 +1,12 @@
language: node_js

node_js:
- "4"
- "5"


- 6
- 8
cache:
directories:
- node_modules
install:
- npm install
- npm prune
after_success:
- npm run test
17 changes: 9 additions & 8 deletions package.json
Expand Up @@ -9,8 +9,8 @@
"main": "lib/index.js",
"scripts": {
"build": "rm -rf lib && ./node_modules/.bin/babel src --out-dir lib --ignore __tests__",
"test": "babel-node node_modules/.bin/babel-istanbul cover node_modules/.bin/_mocha --no-timeouts",
"debug": "mocha --require babel-core/register --require babel-polyfill --no-timeouts",
"test": "node_modules/.bin/babel-istanbul cover node_modules/.bin/_mocha -- --require babel-register --no-timeouts",
"debug": "mocha --require babel-register --require babel-polyfill --no-timeouts",
"lint": "eslint --ext .js src",
"coveralls": "cat ./coverage/lcov.info | coveralls"
},
Expand All @@ -24,13 +24,14 @@
"author": "chencheng <sorrycc@gmail.com>",
"license": "MIT",
"devDependencies": {
"babel-cli": "^6.3.13",
"babel-core": "^6.18.0",
"babel-istanbul": "^0.7.0",
"babel-cli": "^7.0.0-beta.1",
"babel-core": "^7.0.0-beta.1",
"babel-istanbul": "^0.12.2",
"babel-plugin-add-module-exports": "^0.1.2",
"babel-preset-es2015": "^6.18.0",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-0": "^6.16.0",
"babel-preset-es2015": "^7.0.0-beta.1",
"babel-preset-react": "^7.0.0-beta.1",
"babel-preset-stage-0": "^7.0.0-beta.1",
"babel-register": "^7.0.0-beta.1",
"coveralls": "^2.11.6",
"eslint": "^2.7.0",
"eslint-config-airbnb": "^6.2.0",
Expand Down
59 changes: 30 additions & 29 deletions src/Plugin.js
Expand Up @@ -64,8 +64,8 @@ export default class Plugin {
return this.selectedMethods[methodName];
}

buildExpressionHandler(node, props, path) {
const { file } = path.hub;
buildExpressionHandler(node, props, path, state) {
const file = (path && path.hub && path.hub.file) || (state && state.file);
const types = this.types;
props.forEach(prop => {
if (!types.isIdentifier(node[prop])) return;
Expand All @@ -75,8 +75,8 @@ export default class Plugin {
});
}

buildDeclaratorHandler(node, prop, path) {
const { file } = path.hub;
buildDeclaratorHandler(node, prop, path, state) {
const file = (path && path.hub && path.hub.file) || (state && state.file);
const types = this.types;
if (!types.isIdentifier(node[prop])) return;
if (this.specified[node[prop].name] &&
Expand Down Expand Up @@ -113,9 +113,9 @@ export default class Plugin {
}
}

CallExpression(path) {
CallExpression(path, state) {
const { node } = path;
const { file } = path.hub;
const file = (path && path.hub && path.hub.file) || (state && state.file);
const { name } = node.callee;
const types = this.types;

Expand All @@ -136,9 +136,9 @@ export default class Plugin {
});
}

MemberExpression(path) {
MemberExpression(path, state) {
const { node } = path;
const { file } = path.hub;
const file = (path && path.hub && path.hub.file) || (state && state.file);

// multiple instance check.
if (!node.object || !node.object.name) return;
Expand All @@ -151,60 +151,61 @@ export default class Plugin {
}
}

Property(path, { opts }) {
Property(path, state) {
const { node } = path;
this.buildDeclaratorHandler(node, 'value', path, opts);
this.buildDeclaratorHandler(node, 'value', path, state);
}

VariableDeclarator(path, { opts }) {
VariableDeclarator(path, state) {
const { node } = path;
this.buildDeclaratorHandler(node, 'init', path, opts);
this.buildDeclaratorHandler(node, 'init', path, state);
}

LogicalExpression(path, { opts }) {
LogicalExpression(path, state) {
const { node } = path;
this.buildExpressionHandler(node, ['left', 'right'], path, opts);
this.buildExpressionHandler(node, ['left', 'right'], path, state);
}

ConditionalExpression(path, { opts }) {
ConditionalExpression(path, state) {
const { node } = path;
this.buildExpressionHandler(node, ['test', 'consequent', 'alternate'], path, opts);
this.buildExpressionHandler(node, ['test', 'consequent', 'alternate'], path, state);
}

IfStatement(path, { opts }) {
IfStatement(path, state) {
const { node } = path;
this.buildExpressionHandler(node, ['test'], path, opts);
this.buildExpressionHandler(node.test, ['left', 'right'], path, opts);
this.buildExpressionHandler(node, ['test'], path, state);
this.buildExpressionHandler(node.test, ['left', 'right'], path, state);
}

ExpressionStatement(path, { opts }) {
ExpressionStatement(path, state) {
const { node } = path;
const { types } = this;
if (types.isAssignmentExpression(node.expression)) {
this.buildExpressionHandler(node.expression, ['right'], path, opts);
this.buildExpressionHandler(node.expression, ['right'], path, state);
}
}

ReturnStatement(path) {
ReturnStatement(path, state) {
const types = this.types;
const { node, hub: { file } } = path;
const file = (path && path.hub && path.hub.file) || (state && state.file);
const { node } = path;
if (node.argument && types.isIdentifier(node.argument) && this.specified[node.argument.name]) {
node.argument = this.importMethod(node.argument.name, file);
}
}

ExportDefaultDeclaration(path, { opts }) {
ExportDefaultDeclaration(path, state) {
const { node } = path;
this.buildExpressionHandler(node, ['declaration'], path, opts);
this.buildExpressionHandler(node, ['declaration'], path, state);
}

BinaryExpression(path, { opts }) {
BinaryExpression(path, state) {
const { node } = path;
this.buildExpressionHandler(node, ['left', 'right'], path, opts);
this.buildExpressionHandler(node, ['left', 'right'], path, state);
}

NewExpression(path, { opts }) {
NewExpression(path, state) {
const { node } = path;
this.buildExpressionHandler(node, ['callee', 'arguments'], path, opts);
this.buildExpressionHandler(node, ['callee', 'arguments'], path, state);
}
}
8 changes: 3 additions & 5 deletions test/fixtures/as-arguments-identifier/expected.js
@@ -1,9 +1,7 @@
'use strict';
"use strict";

var _modal = require('antd/lib/modal');

var _modal2 = _interopRequireDefault(_modal);
var _modal = _interopRequireDefault(require("antd/lib/modal"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var _Modal = bind()(_modal2.default);
var _Modal = bind()(_modal.default);
8 changes: 3 additions & 5 deletions test/fixtures/as-arguments/expected.js
@@ -1,9 +1,7 @@
'use strict';
"use strict";

var _modal = require('antd/lib/modal');

var _modal2 = _interopRequireDefault(_modal);
var _modal = _interopRequireDefault(require("antd/lib/modal"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var _Modal = bind({})(_modal2.default);
var _Modal = bind({})(_modal.default);
12 changes: 6 additions & 6 deletions test/fixtures/binary-expression/expected.js
@@ -1,10 +1,10 @@
'use strict';
"use strict";

var _button = require('antd/lib/button');

var _button2 = _interopRequireDefault(_button);
var _button = _interopRequireDefault(require("antd/lib/button"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

var extraProps = undefined === _button2.default ? { type: 'primary' } : {};
console.log(extraProps);
var extraProps = undefined === _button.default ? {
type: 'primary'
} : {};
console.log(extraProps);
18 changes: 8 additions & 10 deletions test/fixtures/conditions/expected.js
@@ -1,16 +1,14 @@
'use strict';
"use strict";

var _select = require('antd/lib/select');

var _select2 = _interopRequireDefault(_select);
var _select = _interopRequireDefault(require("antd/lib/select"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

if (a === _select2.default) {}
if (_select2.default) {}
if (a === _select.default) {}

_select2.default ? 'a' : 'b';
a ? _select2.default : 2;
if (_default) {}

_select2.default || 'a';
a || _select2.default;
_default ? 'a' : 'b';
a ? _default : 2;
_default || 'a';
a || _default;
10 changes: 5 additions & 5 deletions test/fixtures/custom-name/expected.js
@@ -1,9 +1,9 @@
'use strict';
"use strict";

var _button = require('antd/lib/button');

var _button2 = _interopRequireDefault(_button);
var _button = _interopRequireDefault(require("antd/lib/button"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

ReactDOM.render(React.createElement('div', { component: _button2.default }));
ReactDOM.render(React.createElement("div", {
component: _button.default
}));
8 changes: 3 additions & 5 deletions test/fixtures/execute-direct/expected.js
@@ -1,9 +1,7 @@
'use strict';
"use strict";

var _message = require('antd/lib/message');

var _message2 = _interopRequireDefault(_message);
var _message = _interopRequireDefault(require("antd/lib/message"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

(0, _message2.default)('xxx');
(0, _message.default)('xxx');
8 changes: 3 additions & 5 deletions test/fixtures/execute-member/expected.js
@@ -1,9 +1,7 @@
'use strict';
"use strict";

var _message = require('antd/lib/message');

var _message2 = _interopRequireDefault(_message);
var _message = _interopRequireDefault(require("antd/lib/message"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

_message2.default.success('xxx');
_message.default.success('xxx');
10 changes: 5 additions & 5 deletions test/fixtures/export-import/expected.js
@@ -1,14 +1,14 @@
'use strict';
"use strict";

Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;

var _datePicker = require('antd/lib/date-picker');

var _datePicker2 = _interopRequireDefault(_datePicker);
var _datePicker = _interopRequireDefault(require("antd/lib/date-picker"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = _datePicker2.default;
var _default2 = _datePicker.default;
exports.default = _default2;
module.exports = exports['default'];
7 changes: 4 additions & 3 deletions test/fixtures/expression-statement/expected.js
@@ -1,6 +1,7 @@
'use strict';
"use strict";

var _antdMobile = require('antd-mobile');
var _antdMobile = require("antd-mobile");

window.Toast = _antdMobile.Toast;
_antdMobile.Toast.success('test');

_antdMobile.Toast.success('test');
10 changes: 4 additions & 6 deletions test/fixtures/file-name/expected.js
@@ -1,11 +1,9 @@
'use strict';
"use strict";

var _index = require('antd-mobile-fake-2.0/lib/select/index.native');

var _index2 = _interopRequireDefault(_index);
var _index = _interopRequireDefault(require("antd-mobile-fake-2.0/lib/select/index.native"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

if (_index2.default) {}
if (_index.default) {}

console.log(_index2.default);
console.log(_default);
8 changes: 3 additions & 5 deletions test/fixtures/import-alias/expected.js
@@ -1,11 +1,9 @@
'use strict';
"use strict";

var _select = require('antd/lib/select');

var _select2 = _interopRequireDefault(_select);
var _select = _interopRequireDefault(require("antd/lib/select"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

if (_select2.default) {
if (_select.default) {
console.log('foo');
}
26 changes: 7 additions & 19 deletions test/fixtures/import-css/expected.js
@@ -1,26 +1,14 @@
'use strict';
"use strict";

var _style3 = require('antd/lib/button/style');
var _style3 = require("antd/lib/button/style");

var _button = require('antd/lib/button');
var _button = _interopRequireDefault(require("antd/lib/button"));

var _button2 = _interopRequireDefault(_button);
var _style4 = require("antd/lib/message/style");

var _style4 = require('antd/lib/message/style');

var _message = require('antd/lib/message');

var _message2 = _interopRequireDefault(_message);
var _message = _interopRequireDefault(require("antd/lib/message"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

(0, _message2.default)('xxx');
ReactDOM.render(React.createElement(
'div',
null,
React.createElement(
_button2.default,
null,
'xxxx'
)
));
(0, _message.default)('xxx');
ReactDOM.render(React.createElement("div", null, React.createElement(_button.default, null, "xxxx")));

0 comments on commit e6a4063

Please sign in to comment.