From 466f4faf4e61f93fb9c4b01b79c6cfbc250bb340 Mon Sep 17 00:00:00 2001 From: chico Date: Fri, 20 Feb 2015 04:06:15 +0300 Subject: [PATCH 1/4] lint from root --- .eslintignore | 9 +++- docs/_js/examples/.eslintrc | 3 ++ docs/extractCode.js | 12 +++--- examples/ballmer-peak/example.js | 42 +++++++++++++++++++ examples/basic-commonjs/index.js | 2 + examples/jquery-bootstrap/js/app.js | 2 + examples/server-rendering/jsapp/src/App.js | 2 + .../server-rendering/reactserver/server.js | 8 ++-- grunt/tasks/eslint.js | 10 +---- jest/preprocessor.js | 2 +- jest/ts-preprocessor.js | 12 ++++-- npm-jsx_orphaned_brackets_transformer/run.js | 8 +++- .../transforms/react.js | 2 +- 13 files changed, 88 insertions(+), 26 deletions(-) create mode 100644 docs/_js/examples/.eslintrc create mode 100644 examples/ballmer-peak/example.js diff --git a/.eslintignore b/.eslintignore index 47be5b05299..ca6d53b336a 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,5 +7,10 @@ src/**/__tests__/** # This should be enabled but that folder has too much in it that doesn't belong src/test test/the-files-to-test.generated.js -# This is synced with a different file internally, don't want to lint it yet -vendor/fbtransform/syntax.js +vendor/ +# But not in docs/_js/examples/* +docs/_js/*.js +docs/js/ +# This should be more like examples/**/thirdparty/** but +# we should fix https://github.com/facebook/esprima/pull/85 first +examples/ \ No newline at end of file diff --git a/docs/_js/examples/.eslintrc b/docs/_js/examples/.eslintrc new file mode 100644 index 00000000000..225d785041a --- /dev/null +++ b/docs/_js/examples/.eslintrc @@ -0,0 +1,3 @@ +rules: + block-scoped-var: false + no-undef: false \ No newline at end of file diff --git a/docs/extractCode.js b/docs/extractCode.js index 1425065a198..867118ebeaf 100644 --- a/docs/extractCode.js +++ b/docs/extractCode.js @@ -1,3 +1,5 @@ +'use strict'; + var argv = require('optimist').argv; var fs = require('fs'); @@ -5,9 +7,9 @@ var CODE_SAMPLE = /```[\S]+\s*[\s\S]*?```/g; var PARTS = /```[\S]+\s*\/\/\s+(.+?)\n([\s\S]*?)```/; function truncate(s, n) { - n = n || 256 + n = n || 256; if (s.length < n) { - return s; + return s; } return s.substring(0, n) + '...'; } @@ -27,9 +29,9 @@ function main(dest, filenames) { if (!extracted) { throw new Error('Code sample did not match correct format in ' + filename + ': ' + truncate(codeSample)); } - var filename = extracted[1]; - var content = extracted[2].replace(/\*\*/g, ''); - fs.writeFileSync(argv.dest + '/' + filename, content); + var codeSampleFilename = extracted[1]; + var codeSampleContent = extracted[2].replace(/\*\*/g, ''); + fs.writeFileSync(argv.dest + '/' + codeSampleFilename, codeSampleContent); }); }); } diff --git a/examples/ballmer-peak/example.js b/examples/ballmer-peak/example.js new file mode 100644 index 00000000000..3bdcd552230 --- /dev/null +++ b/examples/ballmer-peak/example.js @@ -0,0 +1,42 @@ +'use strict'; + +function computeBallmerPeak(x) { + // see: http://ask.metafilter.com/76859/Make-a-function-of-this-graph-Thats-like-an-antigraph + x = x * 100; + return ( + 1 - 1 / (1 + Math.exp(-(x - 6))) *.5 + Math.exp(-Math.pow(Math.abs(x - 10), 2) * 10) + ) / 1.6; +} + +function percentage(x) { + return isNaN(x) ? 'N/A' : (100 - Math.round(x * 100)) + '%'; +} + +var BallmerPeakCalculator = React.createClass({ + getInitialState: function() { + return {bac: 0}; + }, + handleChange: function(event) { + this.setState({bac: event.target.value}); + }, + render: function() { + var pct = percentage(computeBallmerPeak(this.state.bac)); + return ( +
+ +

Credit due to xkcd.

+

Compute your Ballmer Peak:

+

+ If your BAC is{' '} + + {', '}then {pct} of your lines of code will be bug free. +

+
+ ); + } +}); + +React.render( + , + document.getElementById('container') +); diff --git a/examples/basic-commonjs/index.js b/examples/basic-commonjs/index.js index e9218a88526..271595aeb98 100644 --- a/examples/basic-commonjs/index.js +++ b/examples/basic-commonjs/index.js @@ -1,3 +1,5 @@ +'use strict'; + var React = require('react'); var ExampleApplication = React.createClass({ diff --git a/examples/jquery-bootstrap/js/app.js b/examples/jquery-bootstrap/js/app.js index d64ba0e51a7..33b782301e1 100644 --- a/examples/jquery-bootstrap/js/app.js +++ b/examples/jquery-bootstrap/js/app.js @@ -1,3 +1,5 @@ +'use strict'; + // Simple pure-React component so we don't have to remember // Bootstrap's classes var BootstrapButton = React.createClass({ diff --git a/examples/server-rendering/jsapp/src/App.js b/examples/server-rendering/jsapp/src/App.js index e44760025db..7a4afcd6549 100644 --- a/examples/server-rendering/jsapp/src/App.js +++ b/examples/server-rendering/jsapp/src/App.js @@ -1,3 +1,5 @@ +'use strict'; + var React = require('react'); var App = React.createClass({ diff --git a/examples/server-rendering/reactserver/server.js b/examples/server-rendering/reactserver/server.js index 82962649a15..62e4ba36a7d 100644 --- a/examples/server-rendering/reactserver/server.js +++ b/examples/server-rendering/reactserver/server.js @@ -1,3 +1,5 @@ +'use strict'; + var React = require('react'); var express = require('express'); var path = require('path'); @@ -11,9 +13,9 @@ var app = express(); // in the querystring and return a static HTML representation of the component. // Note that this is a backend service hit by your actual web app. Even so, // you would probably put Varnish in front of this in production. -app.get('/', function(req, res){ - var component = require(path.resolve(req.query['module'])); - var props = JSON.parse(req.query['props'] || '{}'); +app.get('/', function(req, res) { + var component = require(path.resolve(req.query.module)); + var props = JSON.parse(req.query.props || '{}'); res.send(React.renderToString(component(props))); }); diff --git a/grunt/tasks/eslint.js b/grunt/tasks/eslint.js index 098039cc076..b2b56903943 100644 --- a/grunt/tasks/eslint.js +++ b/grunt/tasks/eslint.js @@ -6,15 +6,7 @@ module.exports = function() { var done = this.async(); grunt.util.spawn({ cmd: 'node_modules/.bin/eslint', - args: [ - 'src/', - 'Gruntfile.js', - 'grunt/', - 'main.js', - 'perf/', - 'test/', - 'vendor/fbtransform' - ] + args: ['.'] }, function(err, result, code) { if (err) { grunt.log.error('Lint failed'); diff --git a/jest/preprocessor.js b/jest/preprocessor.js index b8451458b75..8f696b33ac4 100644 --- a/jest/preprocessor.js +++ b/jest/preprocessor.js @@ -1,4 +1,4 @@ -"use strict"; +'use strict'; var ReactTools = require('../main.js'); diff --git a/jest/ts-preprocessor.js b/jest/ts-preprocessor.js index 7a503c9d85c..3dd84c31b73 100644 --- a/jest/ts-preprocessor.js +++ b/jest/ts-preprocessor.js @@ -31,9 +31,15 @@ function compile(defaultLib, content, contentFilename) { throw new Error('Expected only one dependency.'); } }, - getCanonicalFileName: function(filename) { return filename; }, - getCurrentDirectory: function() { return ''; }, - getNewLine: function() { return '\n'; } + getCanonicalFileName: function(filename) { + return filename; + }, + getCurrentDirectory: function() { + return ''; + }, + getNewLine: function() { + return '\n'; + } }; var program = ts.createProgram([contentFilename], tsOptions, compilerHost); var errors = program.getDiagnostics(); diff --git a/npm-jsx_orphaned_brackets_transformer/run.js b/npm-jsx_orphaned_brackets_transformer/run.js index 160ef0440f0..82df88e19a3 100644 --- a/npm-jsx_orphaned_brackets_transformer/run.js +++ b/npm-jsx_orphaned_brackets_transformer/run.js @@ -1,12 +1,14 @@ #!/usr/bin/env node +'use strict'; + var esprima = require('esprima-fb'); var FileFinder = require('node-find-files'); var fs = require('graceful-fs'); var jstransform = require('jstransform'); var path = require('path'); var visitReactTag = require('./transforms/react').visitReactTag; - +/*eslint-disable no-shadow*/ var S = esprima.Syntax; var USAGE = @@ -143,7 +145,9 @@ if (require.main === module) { var absPath = path.resolve(arg); fs.stat(absPath, function(err, stat) { - if (err) throw err; + if (err) { + throw err; + } if (stat.isFile()) { transformFile(absPath); diff --git a/npm-jsx_orphaned_brackets_transformer/transforms/react.js b/npm-jsx_orphaned_brackets_transformer/transforms/react.js index 10f28386d24..3647e011311 100644 --- a/npm-jsx_orphaned_brackets_transformer/transforms/react.js +++ b/npm-jsx_orphaned_brackets_transformer/transforms/react.js @@ -7,7 +7,7 @@ * of patent rights can be found in the PATENTS file in the same directory. */ /*global exports:true*/ -"use strict"; +'use strict'; var Syntax = require('esprima-fb').Syntax; var utils = require('jstransform/src/utils'); From 1876bc2432286b0378ee48449ca5bf9145e6691f Mon Sep 17 00:00:00 2001 From: chico Date: Fri, 20 Feb 2015 04:13:07 +0300 Subject: [PATCH 2/4] remove ballmer example --- examples/ballmer-peak/example.js | 42 -------------------------------- 1 file changed, 42 deletions(-) delete mode 100644 examples/ballmer-peak/example.js diff --git a/examples/ballmer-peak/example.js b/examples/ballmer-peak/example.js deleted file mode 100644 index 3bdcd552230..00000000000 --- a/examples/ballmer-peak/example.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -function computeBallmerPeak(x) { - // see: http://ask.metafilter.com/76859/Make-a-function-of-this-graph-Thats-like-an-antigraph - x = x * 100; - return ( - 1 - 1 / (1 + Math.exp(-(x - 6))) *.5 + Math.exp(-Math.pow(Math.abs(x - 10), 2) * 10) - ) / 1.6; -} - -function percentage(x) { - return isNaN(x) ? 'N/A' : (100 - Math.round(x * 100)) + '%'; -} - -var BallmerPeakCalculator = React.createClass({ - getInitialState: function() { - return {bac: 0}; - }, - handleChange: function(event) { - this.setState({bac: event.target.value}); - }, - render: function() { - var pct = percentage(computeBallmerPeak(this.state.bac)); - return ( -
- -

Credit due to xkcd.

-

Compute your Ballmer Peak:

-

- If your BAC is{' '} - - {', '}then {pct} of your lines of code will be bug free. -

-
- ); - } -}); - -React.render( - , - document.getElementById('container') -); From ed6d02e1a82707b2aff7b714cc1af8168e4bf3db Mon Sep 17 00:00:00 2001 From: chico Date: Fri, 20 Feb 2015 04:31:21 +0300 Subject: [PATCH 3/4] fix .eslintignore --- .eslintignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.eslintignore b/.eslintignore index ca6d53b336a..a9e5557f7d5 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,7 +7,11 @@ src/**/__tests__/** # This should be enabled but that folder has too much in it that doesn't belong src/test test/the-files-to-test.generated.js -vendor/ +# This is synced with a different file internally, don't want to lint it yet +vendor/fbtransform/syntax.js +vendor/jasmine/ +vendor/jasmine-jsreporter/ +vendor/*.js # But not in docs/_js/examples/* docs/_js/*.js docs/js/ From 90ce7f67d73e863491abb909eaad75c9d6c6dfed Mon Sep 17 00:00:00 2001 From: chico Date: Fri, 20 Feb 2015 04:37:45 +0300 Subject: [PATCH 4/4] lint vendor/*.js --- .eslintignore | 1 - vendor/browser-transforms.js | 8 +++++--- vendor/inline-source-map.js | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.eslintignore b/.eslintignore index a9e5557f7d5..fbf44101c73 100644 --- a/.eslintignore +++ b/.eslintignore @@ -11,7 +11,6 @@ test/the-files-to-test.generated.js vendor/fbtransform/syntax.js vendor/jasmine/ vendor/jasmine-jsreporter/ -vendor/*.js # But not in docs/_js/examples/* docs/_js/*.js docs/js/ diff --git a/vendor/browser-transforms.js b/vendor/browser-transforms.js index 723d4f58c61..9cedfd83778 100644 --- a/vendor/browser-transforms.js +++ b/vendor/browser-transforms.js @@ -8,6 +8,8 @@ */ /* jshint browser: true */ /* jslint evil: true */ +/*eslint-disable no-eval */ +/*eslint-disable block-scoped-var */ 'use strict'; @@ -141,7 +143,7 @@ function transformCode(code, url, options) { var source; if (url == null) { - source = "Inline JSX script"; + source = 'Inline JSX script'; inlineScriptCount++; if (inlineScriptCount > 1) { source += ' (' + inlineScriptCount + ')'; @@ -202,7 +204,7 @@ function load(url, successCallback, errorCallback) { successCallback(xhr.responseText); } else { errorCallback(); - throw new Error("Could not load " + url); + throw new Error('Could not load ' + url); } } }; @@ -316,7 +318,7 @@ function runScripts() { // Listen for load event if we're in a browser and then kick off finding and // running of scripts. -if (typeof window !== "undefined" && window !== null) { +if (typeof window !== 'undefined' && window !== null) { headEl = document.getElementsByTagName('head')[0]; dummyAnchor = document.createElement('a'); diff --git a/vendor/inline-source-map.js b/vendor/inline-source-map.js index db67bc65fe6..7d0219e2cce 100644 --- a/vendor/inline-source-map.js +++ b/vendor/inline-source-map.js @@ -8,7 +8,7 @@ */ 'use strict'; - +/*eslint-disable no-undef*/ var Buffer = require('buffer').Buffer; function inlineSourceMap(sourceMap, sourceCode, sourceFilename) {