diff --git a/.gitignore b/.gitignore index 390581e29..a5d6759e4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ test.html captchas.html install.json Gruntfile.js +.jshintrc diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 8d6da06c9..ee0d3e2bd 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -111,11 +111,14 @@ module.exports = (grunt) -> stdout: true stderr: true failOnError: true + 'templates-jshint': + command: 'node_modules/.bin/coffee tools/templates.coffee src/meta/jshint.json .jshintrc'.replace(/\//g, path.sep) crx: command: """ node_modules/.bin/coffee tools/templates.coffee tmp/script.coffee tmp/script-crx.coffee crx - <%= pkg.tests_enabled || "" %> node_modules/.bin/coffee --no-header -c tmp/script-crx.coffee node_modules/.bin/coffee --no-header -o tmp -c src/General/eventPage.coffee + node_modules/.bin/jshint tmp/script-crx.js tmp/eventPage.js """.split('\n').join('&&').replace(/\//g, path.sep) 'templates-crx-meta': command: """ @@ -126,6 +129,7 @@ module.exports = (grunt) -> command: """ node_modules/.bin/coffee tools/templates.coffee tmp/script.coffee tmp/script-userscript.coffee userscript - <%= pkg.tests_enabled || "" %> node_modules/.bin/coffee --no-header -c tmp/script-userscript.coffee + node_modules/.bin/jshint tmp/script-userscript.js """.split('\n').join('&&').replace(/\//g, path.sep) 'templates-userscript-meta': command: 'node_modules/.bin/coffee tools/templates.coffee src/meta/metadata.js testbuilds/<%= pkg.name %><%= pkg.meta.suffix[pkg.channel] %>.meta.js userscript <%= pkg.channel %>'.replace(/\//g, path.sep) @@ -219,37 +223,6 @@ module.exports = (grunt) -> 'testbuilds/<%= pkg.name %><%= pkg.meta.suffix.dev %>.meta.js' ] - jshint: - options: - undef: true - unused: true - eqnull: true - expr: true - shadow: true - sub: true - scripturl: true - browser: true - devel: true - nonstandard: true - # XXX Temporarily suppress lots of existing warnings until we fix them. - '-W018': true - '-W084': true - '-W083': true - '-W093': true - globals: do -> - globals = - MediaError: true - Set: true - GM_info: true - cloneInto: true - unsafeWindow: true - chrome: true - pkg = grunt.file.readJSON 'package.json' - globals[v] = true for v in pkg.meta.grants - globals - crx: ['tmp/script-crx.js', 'tmp/eventPage.js'] - userscript: 'tmp/script-userscript.js' - require('load-grunt-tasks') grunt grunt.registerTask 'default', [ @@ -274,6 +247,7 @@ module.exports = (grunt) -> grunt.registerTask 'build', [ 'shell:npm' + 'shell:templates-jshint' 'concat:coffee' 'concurrent:build' ] @@ -288,7 +262,6 @@ module.exports = (grunt) -> grunt.registerTask 'build-crx', [ 'set-build:crx' 'shell:crx' - 'jshint:crx' 'set-channel:stable' 'build-crx-channel' 'set-channel:beta' @@ -335,7 +308,6 @@ module.exports = (grunt) -> grunt.registerTask 'build-userscript', [ 'set-build:userscript' 'shell:userscript' - 'jshint:userscript' 'set-channel:stable' 'build-userscript-channel' 'set-channel:beta' @@ -351,6 +323,7 @@ module.exports = (grunt) -> grunt.registerTask 'build-tests', [ 'shell:npm' 'enable-tests' + 'shell:templates-jshint' 'concat:coffee' 'build-crx' 'build-userscript' diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index c49cc92db..6aad6df61 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1351,196 +1351,6 @@ } } }, - "grunt-contrib-jshint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.0.0.tgz", - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "hooker": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz" - }, - "jshint": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.1.tgz", - "dependencies": { - "cli": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", - "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - } - } - } - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "dependencies": { - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" - }, - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz" - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "dependencies": { - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" - } - } - } - } - }, - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - }, - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - } - } - } - } - }, - "lodash": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz" - }, - "minimatch": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", - "dependencies": { - "balanced-match": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - } - } - } - } - }, - "shelljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz" - }, - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" - } - } - } - } - }, "grunt-contrib-watch": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", @@ -1781,6 +1591,148 @@ } } }, + "jshint": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.1.tgz", + "dependencies": { + "cli": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz", + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dependencies": { + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "dependencies": { + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz" + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "dependencies": { + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" + } + } + } + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + }, + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + } + } + } + }, + "lodash": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz" + }, + "minimatch": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.3.tgz", + "dependencies": { + "balanced-match": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + } + } + } + } + }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz" + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" + } + } + }, "jszip": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-2.6.0.tgz", diff --git a/package.json b/package.json index 49c2d769f..5bdd80779 100644 --- a/package.json +++ b/package.json @@ -68,9 +68,9 @@ "grunt-contrib-clean": "^1.0.0", "grunt-contrib-concat": "^1.0.0", "grunt-contrib-copy": "^1.0.0", - "grunt-contrib-jshint": "^1.0.0", "grunt-contrib-watch": "^1.0.0", "grunt-shell": "^1.2.1", + "jshint": "^2.9.1", "jszip": "^2.6.0", "load-grunt-tasks": "^3.5.0", "lodash": "^4.9.0", diff --git a/src/meta/jshint.json b/src/meta/jshint.json new file mode 100644 index 000000000..644e86b37 --- /dev/null +++ b/src/meta/jshint.json @@ -0,0 +1,26 @@ +{ + "undef": true, + "unused": true, + "eqnull": true, + "expr": true, + "shadow": true, + "sub": true, + "scripturl": true, + "browser": true, + "devel": true, + "nonstandard": true, + "-W018": true, + "-W084": true, + "-W083": true, + "-W093": true, + "globals": { + "MediaError": true, + "Set": true, + "GM_info": true, + "cloneInto": true, + "unsafeWindow": true, + "chrome": true<%= + grunt.file.readJSON('package.json').meta.grants.map(x => `,\n "${x}": true`).join('') +%> + } +}