diff --git a/.eslintrc b/.eslintrc index 7a25b923df..72601abdc8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -27,10 +27,10 @@ globals: rules: # ERRORS space-before-blocks: 2 - indent: [2, 2, indentSwitchCase: true] + indent: [2, 2, {SwitchCase: 1}] brace-style: 2 space-after-keywords: 2 - strict: 2 + strict: [2, global] comma-dangle: [2, always-multiline] # Make this a warning for now. We do this in a few places so we might need to # disable diff --git a/docs/_js/examples/.eslintrc b/docs/_js/examples/.eslintrc index d8e82fb51f..5c1e2e2ca7 100644 --- a/docs/_js/examples/.eslintrc +++ b/docs/_js/examples/.eslintrc @@ -2,5 +2,6 @@ rules: block-scoped-var: 0 no-undef: 0 + strict: 0 react/react-in-jsx-scope: 0 react/jsx-no-undef: 0 diff --git a/eslint-rules/__tests__/warning-and-invariant-args-test.js b/eslint-rules/__tests__/warning-and-invariant-args-test.js index b6a25b0e11..af1f26c74b 100644 --- a/eslint-rules/__tests__/warning-and-invariant-args-test.js +++ b/eslint-rules/__tests__/warning-and-invariant-args-test.js @@ -11,11 +11,11 @@ 'use strict'; -var eslint = require('eslint'); -var ESLintTester = require('eslint-tester'); -var eslintTester = new ESLintTester(eslint.linter); +var rule = require('../warning-and-invariant-args'); +var RuleTester = require('eslint').RuleTester; +var ruleTester = new RuleTester(); -eslintTester.addRuleTest('eslint-rules/warning-and-invariant-args', { +ruleTester.run('eslint-rules/warning-and-invariant-args', rule, { valid: [ "warning(true, 'hello, world');", "warning(true, 'expected %s, got %s', 42, 24);", @@ -100,4 +100,3 @@ eslintTester.addRuleTest('eslint-rules/warning-and-invariant-args', { }, ], }); - diff --git a/grunt/config/npm.js b/grunt/config/npm.js index 5586aee786..1fe5c2da00 100644 --- a/grunt/config/npm.js +++ b/grunt/config/npm.js @@ -1 +1,3 @@ +'use strict'; + exports.pack = {}; diff --git a/grunt/tasks/release.js b/grunt/tasks/release.js index 4eff8bde2f..f101ed93cd 100644 --- a/grunt/tasks/release.js +++ b/grunt/tasks/release.js @@ -127,13 +127,14 @@ function docs() { function msg() { // Just output a friendly reminder message for the rest of the process grunt.log.subhead('Release *almost* complete...'); - [ + var steps = [ 'Still todo:', '* put files on CDN', '* push changes to git repositories', '* publish npm module (`npm publish .`)', '* announce it on FB/Twitter/mailing list', - ].forEach(function(ln) { + ]; + steps.forEach(function(ln) { grunt.log.writeln(ln); }); } diff --git a/package.json b/package.json index b75966637d..4763ca8b22 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.14.0-beta3", "devDependencies": { "babel": "^5.8.3", - "babel-eslint": "^3.1.25", + "babel-eslint": "^4.0.5", "benchmark": "^1.0.0", "browserify": "^9.0.3", "bundle-collapser": "^1.1.1", @@ -12,10 +12,9 @@ "del": "^1.2.0", "derequire": "^2.0.0", "envify": "^3.0.0", - "eslint": "^0.24.1", - "eslint-plugin-react": "^2.5.0", + "eslint": "^1.1.0", + "eslint-plugin-react": "^3.2.1", "eslint-plugin-react-internal": "file:eslint-rules", - "eslint-tester": "^0.7.0", "fbjs": "0.1.0-alpha.4", "grunt": "^0.4.5", "grunt-cli": "^0.1.13", diff --git a/packages/react-dom/index.js b/packages/react-dom/index.js index 22cc1e1bff..0b5deb28f4 100644 --- a/packages/react-dom/index.js +++ b/packages/react-dom/index.js @@ -1 +1,3 @@ +'use strict'; + module.exports = require('react/lib/ReactDOM'); diff --git a/packages/react-dom/server.js b/packages/react-dom/server.js index 7584b0ea93..e56ecb3277 100644 --- a/packages/react-dom/server.js +++ b/packages/react-dom/server.js @@ -1 +1,3 @@ +'use strict'; + module.exports = require('react/lib/ReactDOMServer'); diff --git a/packages/react/addons.js b/packages/react/addons.js index 4c4cc334fe..413ac33a4a 100644 --- a/packages/react/addons.js +++ b/packages/react/addons.js @@ -1,3 +1,5 @@ +'use strict'; + var warning = require('fbjs/lib/warning'); warning( false, diff --git a/scripts/jest/environment.js b/scripts/jest/environment.js index a5ca53b7a9..fbcfe98d56 100644 --- a/scripts/jest/environment.js +++ b/scripts/jest/environment.js @@ -1 +1,2 @@ +/* eslint-disable */ __DEV__ = true; diff --git a/src/renderers/dom/client/ReactMount.js b/src/renderers/dom/client/ReactMount.js index 34e849f3fd..2293317b0f 100644 --- a/src/renderers/dom/client/ReactMount.js +++ b/src/renderers/dom/client/ReactMount.js @@ -257,12 +257,13 @@ function findDeepestCachedAncestor(targetID) { * @param {boolean} shouldReuseMarkup If true, do not insert markup */ function mountComponentIntoNode( - componentInstance, - rootID, - container, - transaction, - shouldReuseMarkup, - context) { + componentInstance, + rootID, + container, + transaction, + shouldReuseMarkup, + context +) { if (__DEV__) { if (context === emptyObject) { context = {}; @@ -287,11 +288,12 @@ function mountComponentIntoNode( * @param {boolean} shouldReuseMarkup If true, do not insert markup */ function batchedMountComponentIntoNode( - componentInstance, - rootID, - container, - shouldReuseMarkup, - context) { + componentInstance, + rootID, + container, + shouldReuseMarkup, + context +) { var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(); transaction.perform( mountComponentIntoNode, diff --git a/src/renderers/dom/client/eventPlugins/ChangeEventPlugin.js b/src/renderers/dom/client/eventPlugins/ChangeEventPlugin.js index 20f742917b..992f74d29e 100644 --- a/src/renderers/dom/client/eventPlugins/ChangeEventPlugin.js +++ b/src/renderers/dom/client/eventPlugins/ChangeEventPlugin.js @@ -115,17 +115,19 @@ function stopWatchingForChangeEventIE8() { } function getTargetIDForChangeEvent( - topLevelType, - topLevelTarget, - topLevelTargetID) { + topLevelType, + topLevelTarget, + topLevelTargetID +) { if (topLevelType === topLevelTypes.topChange) { return topLevelTargetID; } } function handleEventsForChangeEventIE8( - topLevelType, - topLevelTarget, - topLevelTargetID) { + topLevelType, + topLevelTarget, + topLevelTargetID +) { if (topLevelType === topLevelTypes.topFocus) { // stopWatching() should be a noop here but we call it just in case we // missed a blur event somehow. @@ -222,9 +224,10 @@ function handlePropertyChange(nativeEvent) { * If a `change` event should be fired, returns the target's ID. */ function getTargetIDForInputEvent( - topLevelType, - topLevelTarget, - topLevelTargetID) { + topLevelType, + topLevelTarget, + topLevelTargetID +) { if (topLevelType === topLevelTypes.topInput) { // In modern browsers (i.e., not IE8 or IE9), the input event is exactly // what we want so fall through here and trigger an abstract event @@ -234,9 +237,10 @@ function getTargetIDForInputEvent( // For IE8 and IE9. function handleEventsForInputEventIE( - topLevelType, - topLevelTarget, - topLevelTargetID) { + topLevelType, + topLevelTarget, + topLevelTargetID +) { if (topLevelType === topLevelTypes.topFocus) { // In IE8, we can capture almost all .value changes by adding a // propertychange handler and looking for events with propertyName @@ -260,9 +264,10 @@ function handleEventsForInputEventIE( // For IE8 and IE9. function getTargetIDForInputEventIE( - topLevelType, - topLevelTarget, - topLevelTargetID) { + topLevelType, + topLevelTarget, + topLevelTargetID +) { if (topLevelType === topLevelTypes.topSelectionChange || topLevelType === topLevelTypes.topKeyUp || topLevelType === topLevelTypes.topKeyDown) { @@ -298,9 +303,10 @@ function shouldUseClickEvent(elem) { } function getTargetIDForClickEvent( - topLevelType, - topLevelTarget, - topLevelTargetID) { + topLevelType, + topLevelTarget, + topLevelTargetID +) { if (topLevelType === topLevelTypes.topClick) { return topLevelTargetID; } diff --git a/src/renderers/dom/client/syntheticEvents/SyntheticCompositionEvent.js b/src/renderers/dom/client/syntheticEvents/SyntheticCompositionEvent.js index 159c723f27..9300128603 100644 --- a/src/renderers/dom/client/syntheticEvents/SyntheticCompositionEvent.js +++ b/src/renderers/dom/client/syntheticEvents/SyntheticCompositionEvent.js @@ -32,7 +32,8 @@ function SyntheticCompositionEvent( dispatchConfig, dispatchMarker, nativeEvent, - nativeEventTarget) { + nativeEventTarget +) { SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); } diff --git a/src/renderers/dom/client/syntheticEvents/SyntheticInputEvent.js b/src/renderers/dom/client/syntheticEvents/SyntheticInputEvent.js index 0ee7407748..271439e64a 100644 --- a/src/renderers/dom/client/syntheticEvents/SyntheticInputEvent.js +++ b/src/renderers/dom/client/syntheticEvents/SyntheticInputEvent.js @@ -33,7 +33,8 @@ function SyntheticInputEvent( dispatchConfig, dispatchMarker, nativeEvent, - nativeEventTarget) { + nativeEventTarget +) { SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget); } diff --git a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js index f487f55fa6..55bb5c5748 100644 --- a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js +++ b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js @@ -477,9 +477,9 @@ describe('ReactDOMComponent', function() { it('should not duplicate uppercased selfclosing tags', function() { var Container = React.createClass({ - render: function() { - return React.createElement('BR', null); - }, + render: function() { + return React.createElement('BR', null); + }, }); var returnedValue = ReactDOMServer.renderToString(); expect(returnedValue).not.toContain('
'); diff --git a/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js b/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js index 51d875bdf3..b5e930b446 100644 --- a/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js +++ b/src/renderers/shared/event/eventPlugins/ResponderEventPlugin.js @@ -323,10 +323,11 @@ to return true:wantsResponderID| | * @return {*} An accumulation of synthetic events. */ function setResponderAndExtractTransfer( - topLevelType, - topLevelTargetID, - nativeEvent, - nativeEventTarget) { + topLevelType, + topLevelTargetID, + nativeEvent, + nativeEventTarget +) { var shouldSetEventType = isStartish(topLevelType) ? eventTypes.startShouldSetResponder : isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder : diff --git a/src/renderers/shared/event/eventPlugins/__tests__/ResponderEventPlugin-test.js b/src/renderers/shared/event/eventPlugins/__tests__/ResponderEventPlugin-test.js index 62deb238dc..42bda43818 100644 --- a/src/renderers/shared/event/eventPlugins/__tests__/ResponderEventPlugin-test.js +++ b/src/renderers/shared/event/eventPlugins/__tests__/ResponderEventPlugin-test.js @@ -66,8 +66,13 @@ var antiSubsequence = function(arr, indices) { * Helper for creating touch test config data. * @param allTouchHandles */ -var _touchConfig = - function(topType, targetNodeHandle, allTouchHandles, changedIndices, eventTarget) { +var _touchConfig = function( + topType, + targetNodeHandle, + allTouchHandles, + changedIndices, + eventTarget +) { var allTouchObjects = allTouchHandles.map(touch); var changedTouchObjects = subsequence(allTouchObjects, changedIndices); var activeTouchObjects = diff --git a/src/renderers/shared/reconciler/ReactUpdates.js b/src/renderers/shared/reconciler/ReactUpdates.js index 293645e0a8..aa0f866ade 100644 --- a/src/renderers/shared/reconciler/ReactUpdates.js +++ b/src/renderers/shared/reconciler/ReactUpdates.js @@ -74,32 +74,34 @@ function ReactUpdatesFlushTransaction() { assign( ReactUpdatesFlushTransaction.prototype, - Transaction.Mixin, { - getTransactionWrappers: function() { - return TRANSACTION_WRAPPERS; - }, + Transaction.Mixin, + { + getTransactionWrappers: function() { + return TRANSACTION_WRAPPERS; + }, - destructor: function() { - this.dirtyComponentsLength = null; - CallbackQueue.release(this.callbackQueue); - this.callbackQueue = null; - ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction); - this.reconcileTransaction = null; - }, + destructor: function() { + this.dirtyComponentsLength = null; + CallbackQueue.release(this.callbackQueue); + this.callbackQueue = null; + ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction); + this.reconcileTransaction = null; + }, - perform: function(method, scope, a) { - // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` - // with this transaction's wrappers around it. - return Transaction.Mixin.perform.call( - this, - this.reconcileTransaction.perform, - this.reconcileTransaction, - method, - scope, - a - ); - }, -}); + perform: function(method, scope, a) { + // Essentially calls `this.reconcileTransaction.perform(method, scope, a)` + // with this transaction's wrappers around it. + return Transaction.Mixin.perform.call( + this, + this.reconcileTransaction.perform, + this.reconcileTransaction, + method, + scope, + a + ); + }, + } +); PooledClass.addPoolingTo(ReactUpdatesFlushTransaction); diff --git a/src/renderers/shared/reconciler/__tests__/ReactComponent-test.js b/src/renderers/shared/reconciler/__tests__/ReactComponent-test.js index f07fae9e0d..a537a551ac 100644 --- a/src/renderers/shared/reconciler/__tests__/ReactComponent-test.js +++ b/src/renderers/shared/reconciler/__tests__/ReactComponent-test.js @@ -226,6 +226,7 @@ describe('ReactComponent', function() { log.push('start unmount'); ReactDOM.unmountComponentAtNode(el); + /* eslint-disable indent */ expect(log).toEqual([ 'start mount', 'inner 1 render', @@ -253,6 +254,7 @@ describe('ReactComponent', function() { 'ref 2 got null', 'inner 2 componentWillUnmount', ]); + /* eslint-enable indent */ }); it('fires the callback after a component is rendered', function() { diff --git a/src/renderers/shared/reconciler/__tests__/ReactUpdates-test.js b/src/renderers/shared/reconciler/__tests__/ReactUpdates-test.js index a5e8f368a0..e01956b72b 100644 --- a/src/renderers/shared/reconciler/__tests__/ReactUpdates-test.js +++ b/src/renderers/shared/reconciler/__tests__/ReactUpdates-test.js @@ -411,7 +411,7 @@ describe('ReactUpdates', function() { ref="switcherDiv" style={{ display: this.state.tabKey === child.key ? '' : 'none', - }}> + }}> {child} @@ -603,6 +603,7 @@ describe('ReactUpdates', function() { }); }); + /* eslint-disable indent */ expect(updates).toEqual([ 'Outer-render-0', 'Inner-render-0-0', @@ -629,6 +630,7 @@ describe('ReactUpdates', function() { 'Inner-callback-2', 'Outer-callback-2', ]); + /* eslint-enable indent */ }); it('should flush updates in the correct order across roots', function() { diff --git a/src/shared/utils/__tests__/OrderedMap-test.js b/src/shared/utils/__tests__/OrderedMap-test.js index b9caddf4c3..adac615d5a 100644 --- a/src/shared/utils/__tests__/OrderedMap-test.js +++ b/src/shared/utils/__tests__/OrderedMap-test.js @@ -616,9 +616,9 @@ describe('OrderedMap', function() { expect(res.get('dog')).toBe(undefined); }; result = OrderedMap.fromArray([ - {uniqueID: 'two', val: 'secondOM2'}, - {uniqueID: 'three', val: 'third'}, - ], extractUniqueID).merge(oneTwo); + {uniqueID: 'two', val: 'secondOM2'}, + {uniqueID: 'three', val: 'third'}, + ], extractUniqueID).merge(oneTwo); testTwoThreeMergedWithOneTwo(result); }); diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index 2ceec580a2..c91da97583 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -167,7 +167,7 @@ describe('ReactTestUtils', function() { var shallowRenderer = ReactTestUtils.createRenderer(); shallowRenderer.render(, { - name: 'foo', + name: 'foo', }); var result = shallowRenderer.getRenderOutput(); expect(result).toEqual(
foo
);