jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/364235 )
Change subject: Lint JS with eslint
......................................................................
Lint JS with eslint
Bug: T165843
Change-Id: I5930ac47a1291d2af83eb4181cc2178fbd3e8c4b
---
R .eslintignore
A .eslintrc.json
D .jscsrc
D .jshintrc
M Gruntfile.js
M package.json
M src/RepoApi.js
A tests/.eslintrc.json
8 files changed, 50 insertions(+), 138 deletions(-)
Approvals:
Addshore: Looks good to me, approved
jenkins-bot: Verified
diff --git a/.jshintignore b/.eslintignore
similarity index 100%
rename from .jshintignore
rename to .eslintignore
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..9967d72
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,25 @@
+{
+ "extends": "wikimedia",
+ "env": {
+ "browser": true,
+ "jquery": true
+ },
+ "globals": {
+ "mediaWiki": false,
+ "module": false,
+ "util": false,
+ "wikibase": false
+ },
+ "rules": {
+ "computed-property-spacing": "off",
+ "indent": "off",
+ "keyword-spacing": "off",
+ "no-underscore-dangle": "off",
+ "no-use-before-define": [ "error", "nofunc" ],
+ "one-var": "off",
+ "operator-linebreak": "off",
+ "space-before-function-paren": "off",
+ "spaced-comment": "off",
+ "vars-on-top": "off"
+ }
+}
diff --git a/.jscsrc b/.jscsrc
deleted file mode 100644
index caeeec6..0000000
--- a/.jscsrc
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- "preset": "wikimedia",
- // Rules from wikimedia preset we don't yet? follow
- "disallowDanglingUnderscores": null,
- "requireVarDeclFirst": null,
- "requireSpacesInsideBrackets": null,
- "requireSpacesInsideObjectBrackets": null,
- "validateIndentation": null,
- "validateQuoteMarks": null,
- "requireSpacesInsideParentheses": null,
- "requireMultipleVarDecl": null,
- "requireSpaceAfterKeywords": [
- "do",
- //"for",
- //"if",
- "else",
- "switch",
- "case",
- "try",
- "catch",
- "void",
- "while",
- "with",
- "return",
- "typeof"
- //"function"
- ],
- "jsDoc": {
- // what we don't yet follow is commented out
- "checkAnnotations": {
- "extra": {
- //"TODO:": "some",
- "class": "some",
- "since": "some",
- "author": "some",
- "return": "some",
- "private": false,
- "param": "some",
- "throws": "some",
- "static": false,
- "readonly": false,
- "property": "some",
- "ignore": false,
- "constructor": false,
- "singleton": false,
- "member": "some",
- "method": "some",
- "extends": "some",
- "license": "some",
- //"note:": "some",
- //"option": "some",
- "see": "some"
- //"todo": "some",
- //"triggers": "some"
- }
- }
- },
- "excludeFiles": [ "node_modules/**", "vendor/**" ]
-}
diff --git a/.jshintrc b/.jshintrc
deleted file mode 100644
index 22d9a4f..0000000
--- a/.jshintrc
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "bitwise": true, // Prohibit bitwise operators (&, |, ^, etc.).
- "camelcase": true, // Force variable names to be camelcase
- "curly": true, // Require {} for every new block or scope.
- "eqeqeq": true, // Require triple equals i.e. `===`.
- "esversion": 5,
- "forin": false, // Don't expect `for in` loops to call
`hasOwnPrototype`.
- "freeze": true, // Prohibit overwriting prototypes of native objects
such as Array, Date and so on.
- "immed": true, // Require immediate invocations to be wrapped in parens
e.g. `( function(){}() );`
- "latedef": "nofunc", // Prohibit variable use before definition.
- "newcap": true, // Require capitalization of all constructor functions
e.g. `new F()`.
- "noarg": true, // Prohibit use of `arguments.caller` and
`arguments.callee`.
- "noempty": true, // Prohibit use of empty blocks.
- "nonbsp": true, // Prohibit nbsp
- "nonew": true, // Prohibit use of constructors for side-effects.
- "plusplus": false, // Allow use of `++` & `--`.
- "regexp": true, // Prohibit `.` and `[^...]` in regular expressions.
- "undef": true, // Require all non-global variables be declared before
they are used.
- "unused": false, // Don't warn about unused variables
- "strict": true, // Require `use strict` pragma in every file.
- "trailing": true, // Prohibit trailing whitespaces.
-
- "asi": false, // Don't tolerate Automatic Semicolon Insertion (no
semicolons).
- "boss": false, // Don't tolerate assignments inside if, for & while.
Usually conditions & loops are for comparison, not assignments.
- "debug": false, // Don't allow debugger statements e.g. browser
breakpoints.
- "eqnull": false, // Don't tolerate use of `== null`.
- "evil": false, // Don't tolerate use of `eval`.
- "expr": false, // Don't tolerate `ExpressionStatement` as Programs.
- "funcscope": false, // Don't tolerate declarations of variables inside
of control structures while accessing them later from the outside.
- "globalstrict": false, // Don't allow global "use strict" (also enables
'strict').
- "iterator": false, // Don't allow usage of __iterator__ property.
- "lastsemic": false, // Don't tolerat missing semicolons when the it is
omitted for the last statement in a one-line block.
- "laxbreak": true, // Tolerate unsafe line breaks e.g. `return [\n] x`
without semicolons.
- "laxcomma": false, // Don't suppress warnings about comma-first coding
style.
- "loopfunc": false, // Don't allow functions to be defined within loops.
- "multistr": false, // Don't tolerate multi-line strings.
- "onecase": false, // Don't tolerate switches with just one case.
- "proto": false, // Don't tolerate __proto__ property. This property is
deprecated.
- "regexdash": false, // Don't tolerate unescaped last dash i.e. `[-...]`.
- "scripturl": false, // Don't tolerate script-targeted URLs.
- "smarttabs": false, // Don't tolerate mixed tabs and spaces when the
latter are used for alignmnent only.
- "shadow": false, // Don't allows re-define variables later in code e.g.
`var x=1; x=2;`.
- "sub": false, // Don't tolerate all forms of subscript notation besides
dot notation e.g. `dict['key']` instead of `dict.key`.
- "supernew": false, // Don't tolerate `new function () { ... };` and
`new Object;`.
- "validthis": false, // Don't tolerate strict violations when the code
is running in strict mode and you use this in a non-constructor function.
-
- "browser": true, // Standard browser globals e.g. `window`, `document`.
-
- "quotmark": false,
- "maxlen": 100,
- "maxparams": 7,
- "maxdepth": 4,
- "maxstatements": 19,
- "predef": [
- "jQuery",
- "mediaWiki",
- "util",
- "wikibase",
- "JSON"
- ]
-}
diff --git a/Gruntfile.js b/Gruntfile.js
index b286391..0edee91 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -1,22 +1,14 @@
-/*jshint node:true */
+/* eslint-env node */
+
'use strict';
module.exports = function ( grunt ) {
- grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+ grunt.loadNpmTasks( 'grunt-eslint' );
grunt.loadNpmTasks( 'grunt-jsonlint' );
- grunt.loadNpmTasks( 'grunt-jscs' );
grunt.initConfig( {
- jshint: {
- options: {
- jshintrc: true
- },
- all: [
- '**/*.js'
- ]
- },
- jscs: {
- src: '<%= jshint.all %>'
- },
+ eslint: {
+ all: '.'
+ },
jsonlint: {
all: [
'**/*.json',
@@ -25,6 +17,6 @@
}
} );
- grunt.registerTask( 'test', [ 'jshint', 'jscs', 'jsonlint' ] );
+ grunt.registerTask( 'test', [ 'eslint', 'jsonlint' ] );
grunt.registerTask( 'default', 'test' );
};
diff --git a/package.json b/package.json
index e43a88e..20da8ca 100644
--- a/package.json
+++ b/package.json
@@ -4,10 +4,10 @@
"test": "grunt test"
},
"devDependencies": {
+ "eslint-config-wikimedia": "0.4.0",
"grunt": "0.4.5",
"grunt-cli": "0.1.13",
- "grunt-contrib-jshint": "0.12.0",
- "grunt-jscs": "2.5.0",
+ "grunt-eslint": "19.0.0",
"grunt-jsonlint": "1.0.7"
}
}
diff --git a/src/RepoApi.js b/src/RepoApi.js
index 2ee0300..414cece 100644
--- a/src/RepoApi.js
+++ b/src/RepoApi.js
@@ -851,7 +851,7 @@
if ( Array.isArray( value ) ) {
return value.map( function ( item ) {
return '\x1f' + item;
- } ).join('');
+ } ).join( '' );
}
// We must enforce the alternative separation character, see
ApiBase.php::explodeMultiValue.
diff --git a/tests/.eslintrc.json b/tests/.eslintrc.json
new file mode 100644
index 0000000..9d1c02c
--- /dev/null
+++ b/tests/.eslintrc.json
@@ -0,0 +1,15 @@
+{
+ "extends": "../.eslintrc.json",
+ "env": {
+ "qunit": true
+ },
+ "globals": {
+ "sinon": false
+ },
+ "rules": {
+ "array-bracket-spacing": "off",
+ "object-curly-spacing": "off",
+ "quotes": "off",
+ "valid-jsdoc": "off"
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/364235
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I5930ac47a1291d2af83eb4181cc2178fbd3e8c4b
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/WikibaseJavaScriptApi
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits