diff --git a/.eslintrc.js b/.eslintrc.js index e7c9b46d53..a099d6bfca 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -30,7 +30,6 @@ module.exports = { 'indent': [ERROR, 2, {SwitchCase: 1}], 'jsx-quotes': [ERROR, 'prefer-double'], 'no-bitwise': OFF, - 'no-dupe-class-members': ERROR, 'no-multi-spaces': ERROR, 'no-restricted-syntax': [ERROR, 'WithStatement'], 'no-shadow': ERROR, @@ -39,6 +38,7 @@ module.exports = { 'quotes': [ERROR, 'single', 'avoid-escape'], 'space-after-keywords': ERROR, 'space-before-blocks': ERROR, + 'space-before-function-paren': [ERROR, {anonymous: 'never', named: 'never'}], 'space-before-keywords': ERROR, 'strict': [ERROR, 'global'], @@ -57,7 +57,7 @@ module.exports = { 'react/no-did-update-set-state': OFF, // We define multiple components in test files 'react/no-multi-comp': OFF, - 'react/no-unknown-property': ERROR, + 'react/no-unknown-property': OFF, // This isn't useful in our test code 'react/prop-types': OFF, 'react/react-in-jsx-scope': ERROR, diff --git a/package.json b/package.json index 54234a3413..f0c1fc9e89 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "del": "^2.0.2", "derequire": "^2.0.3", "envify": "^3.0.0", - "eslint": "1.9.0", - "eslint-plugin-react": "3.8.0", + "eslint": "1.10.3", + "eslint-plugin-react": "4.1.0", "eslint-plugin-react-internal": "file:eslint-rules", "fbjs": "^0.6.1", "fbjs-scripts": "0.6.0-alpha.2", diff --git a/src/renderers/dom/client/syntheticEvents/__tests__/SyntheticEvent-test.js b/src/renderers/dom/client/syntheticEvents/__tests__/SyntheticEvent-test.js index 68ac8ab75e..d05ebdf367 100644 --- a/src/renderers/dom/client/syntheticEvents/__tests__/SyntheticEvent-test.js +++ b/src/renderers/dom/client/syntheticEvents/__tests__/SyntheticEvent-test.js @@ -86,11 +86,14 @@ describe('SyntheticEvent', function() { expect(syntheticEvent.type).toBe(null); expect(syntheticEvent.nativeEvent).toBe(null); expect(syntheticEvent.target).toBe(null); - expect(console.error.calls.length).toBe(3); // once for each property accessed - expect(console.error.argsForCall[0][0]).toBe( // assert the first warning for accessing `type` - 'Warning: This synthetic event is reused for performance reasons. If you\'re seeing this, ' + - 'you\'re accessing the property `type` on a released/nullified synthetic event. This is set to null. ' + - 'If you must keep the original synthetic event around, use event.persist(). ' + + // once for each property accessed + expect(console.error.calls.length).toBe(3); + // assert the first warning for accessing `type` + expect(console.error.argsForCall[0][0]).toBe( + 'Warning: This synthetic event is reused for performance reasons. If ' + + 'you\'re seeing this, you\'re accessing the property `type` on a ' + + 'released/nullified synthetic event. This is set to null. If you must ' + + 'keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.' ); }); @@ -103,10 +106,11 @@ describe('SyntheticEvent', function() { expect(syntheticEvent.type = 'MouseEvent').toBe('MouseEvent'); expect(console.error.calls.length).toBe(1); expect(console.error.argsForCall[0][0]).toBe( - 'Warning: This synthetic event is reused for performance reasons. If you\'re seeing this, ' + - 'you\'re setting the property `type` on a released/nullified synthetic event. This is ' + - 'effectively a no-op. If you must keep the original synthetic event around, use ' + - 'event.persist(). See https://fb.me/react-event-pooling for more information.' + 'Warning: This synthetic event is reused for performance reasons. If ' + + 'you\'re seeing this, you\'re setting the property `type` on a ' + + 'released/nullified synthetic event. This is effectively a no-op. If you must ' + + 'keep the original synthetic event around, use event.persist(). ' + + 'See https://fb.me/react-event-pooling for more information.' ); }); @@ -117,10 +121,11 @@ describe('SyntheticEvent', function() { syntheticEvent.preventDefault(); expect(console.error.calls.length).toBe(1); expect(console.error.argsForCall[0][0]).toBe( - 'Warning: This synthetic event is reused for performance reasons. If you\'re seeing this, ' + - 'you\'re accessing the method `preventDefault` on a released/nullified synthetic event. ' + - 'This is a no-op function. If you must keep the original synthetic event around, ' + - 'use event.persist(). See https://fb.me/react-event-pooling for more information.' + 'Warning: This synthetic event is reused for performance reasons. If ' + + 'you\'re seeing this, you\'re accessing the method `preventDefault` on a ' + + 'released/nullified synthetic event. This is a no-op function. If you must ' + + 'keep the original synthetic event around, use event.persist(). ' + + 'See https://fb.me/react-event-pooling for more information.' ); }); @@ -131,10 +136,11 @@ describe('SyntheticEvent', function() { syntheticEvent.stopPropagation(); expect(console.error.calls.length).toBe(1); expect(console.error.argsForCall[0][0]).toBe( - 'Warning: This synthetic event is reused for performance reasons. If you\'re seeing this, ' + - 'you\'re accessing the method `stopPropagation` on a released/nullified synthetic event. ' + - 'This is a no-op function. If you must keep the original synthetic event around, ' + - 'use event.persist(). See https://fb.me/react-event-pooling for more information.' + 'Warning: This synthetic event is reused for performance reasons. If ' + + 'you\'re seeing this, you\'re accessing the method `stopPropagation` on a ' + + 'released/nullified synthetic event. This is a no-op function. If you must ' + + 'keep the original synthetic event around, use event.persist(). ' + + 'See https://fb.me/react-event-pooling for more information.' ); }); @@ -154,9 +160,10 @@ describe('SyntheticEvent', function() { expect(console.error.calls.length).toBe(1); expect(console.error.argsForCall[0][0]).toBe( - 'Warning: This synthetic event is reused for performance reasons. If you\'re seeing this, ' + - 'you\'re accessing the property `nativeEvent` on a released/nullified synthetic event. ' + - 'This is set to null. If you must keep the original synthetic event around, use event.persist(). ' + + 'Warning: This synthetic event is reused for performance reasons. If ' + + 'you\'re seeing this, you\'re accessing the property `nativeEvent` on a ' + + 'released/nullified synthetic event. This is set to null. If you must ' + + 'keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.' ); }); @@ -170,9 +177,10 @@ describe('SyntheticEvent', function() { if (typeof Proxy === 'function') { expect(console.error.calls.length).toBe(1); expect(console.error.argsForCall[0][0]).toBe( - 'Warning: This synthetic event is reused for performance reasons. If you\'re ' + - 'seeing this, you\'re adding a new property in the synthetic event object. ' + - 'The property is never released. See https://fb.me/react-event-pooling for more information.' + 'Warning: This synthetic event is reused for performance reasons. If ' + + 'you\'re seeing this, you\'re adding a new property in the synthetic ' + + 'event object. The property is never released. ' + + 'See https://fb.me/react-event-pooling for more information.' ); } else { expect(console.error.calls.length).toBe(0); diff --git a/src/renderers/dom/shared/DOMPropertyOperations.js b/src/renderers/dom/shared/DOMPropertyOperations.js index 90858f03bb..dc0c3fb7f9 100644 --- a/src/renderers/dom/shared/DOMPropertyOperations.js +++ b/src/renderers/dom/shared/DOMPropertyOperations.js @@ -18,8 +18,9 @@ var ReactPerf = require('ReactPerf'); var quoteAttributeValueForBrowser = require('quoteAttributeValueForBrowser'); var warning = require('warning'); -var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + - '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$'); +var VALID_ATTRIBUTE_NAME_REGEX = new RegExp( + '^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$' +); var illegalAttributeNameCache = {}; var validatedAttributeNameCache = {}; diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index dbe421e020..a7cf4ab846 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -206,8 +206,7 @@ describe('ReactTestUtils', function() { ref={() => {}} onClick={this.handleUserClick} className={this.state.clicked ? 'clicked' : ''} - > - + /> ); }, });