jenkins-bot has submitted this change and it was merged.

Change subject: Add jscs and npm config
......................................................................


Add jscs and npm config

This allows running jscs via `npm test` for jenkins.

Change-Id: Ib83f2b896c647fa216f63aa3827e9ce31ca3f9f8
---
M .gitignore
A .jscsrc
M .jshintignore
M client/resources/jquery.wikibase/jquery.wikibase.linkitem.js
M client/resources/wikibase.client.PageConnector.js
M lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
M lib/resources/jquery.wikibase/jquery.wikibase.listview.js
M lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
M lib/resources/jquery.wikibase/snakview/snakview.js
M lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
M 
lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
M lib/resources/utilities/wikibase.utilities.GuidGenerator.js
M lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
A package.json
M repo/resources/jquery.ui/jquery.ui.closeable.js
M repo/resources/jquery/jquery.removeClassByRegex.js
M repo/resources/store/store.ApiEntityStore.js
M repo/resources/wikibase.special/wikibase.special.itemByTitle.js
18 files changed, 132 insertions(+), 23 deletions(-)

Approvals:
  Henning Snater: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/.gitignore b/.gitignore
index 9c31647..275b338 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
 
 vendor/
 extensions/
+node_modules/
 
 easyrdf/
 
@@ -15,4 +16,4 @@
 selenium/configuration.yml
 tests/browser/.idea
 tests/browser/.bundle/*
-tests/browser/config/config.yml
\ No newline at end of file
+tests/browser/config/config.yml
diff --git a/.jscsrc b/.jscsrc
new file mode 100644
index 0000000..06dac8b
--- /dev/null
+++ b/.jscsrc
@@ -0,0 +1,97 @@
+{
+       // ----
+       // This is a copy of the wikimedia preset so we can disable some of the 
rules
+
+       "requireCurlyBraces": [
+               "if",
+               "else",
+               "for",
+               "while",
+               "do",
+               "try",
+               "catch"
+       ],
+       "requireSpaceBeforeKeywords": true,
+       "requireSpaceBeforeBlockStatements": true,
+       "requireParenthesesAroundIIFE": true,
+       "requireSpacesInConditionalExpression": true,
+       "disallowSpacesInNamedFunctionExpression": {
+               "beforeOpeningRoundBrace": true
+       },
+       "disallowSpacesInFunctionDeclaration": {
+               "beforeOpeningRoundBrace": true
+       },
+       "disallowSpacesInCallExpression": true,
+       "requireBlocksOnNewline": 1,
+       "disallowEmptyBlocks": true,
+       "requireSpacesInsideObjectBrackets": "all",
+       "requireSpacesInsideParentheses": "all",
+       "disallowSpaceAfterObjectKeys": true,
+       "requireSpaceBeforeObjectValues": true,
+       "requireCommaBeforeLineBreak": true,
+       "disallowSpaceAfterPrefixUnaryOperators": true,
+       "disallowSpaceBeforePostfixUnaryOperators": true,
+       "disallowSpaceBeforeBinaryOperators": [
+               ","
+       ],
+       "requireSpaceBeforeBinaryOperators": true,
+       "requireSpaceAfterBinaryOperators": true,
+       "disallowImplicitTypeConversion": [
+               "binary",
+               "string"
+       ],
+       "requireCamelCaseOrUpperCaseIdentifiers": true,
+       "disallowKeywords": [
+               "with"
+       ],
+       "disallowMixedSpacesAndTabs": true,
+       "disallowMultipleLineBreaks": true,
+       "disallowOperatorBeforeLineBreak": [
+               "."
+       ],
+       "disallowTrailingWhitespace": true,
+       "disallowTrailingComma": true,
+       "disallowKeywordsOnNewLine": [
+               "else",
+               "catch"
+       ],
+       "requireLineBreakAfterVariableAssignment": true,
+       "requireLineFeedAtFileEnd": true,
+       "requireCapitalizedConstructors": true,
+       "requireDotNotation": true,
+       "disallowYodaConditions": true,
+       "requireSpaceAfterLineComment": true,
+       "disallowNewlineBeforeBlockStatements": true,
+       "validateQuoteMarks": "'",
+
+       // ----
+       // Rules from wikimedia preset we don't follow
+
+       // "validateIndentation": "\t",
+       // "requireSpaceAfterKeywords": true,
+       // "requireMultipleVarDecl": "onevar",
+       // "disallowDanglingUnderscores": true,
+       // "requireSpacesInsideArrayBrackets": "all",
+
+       // ----
+       // Rules from wikimedia preset that should be enabled after fixing 
their violation
+
+       // "disallowQuotedKeysInObjects": "allButReserved",
+       // "validateLineBreaks": "LF",
+
+       // ----
+       // Own rules
+
+       "disallowSpaceAfterKeywords": [
+               "catch",
+               "for",
+//             "if",
+               "switch",
+               "while"
+       ],
+       "requireSpaceAfterKeywords": [
+               "else"
+       ],
+
+       "excludeFiles": [ "node_modules/**", "vendor/**" ]
+}
diff --git a/.jshintignore b/.jshintignore
index e69de29..a860310 100644
--- a/.jshintignore
+++ b/.jshintignore
@@ -0,0 +1 @@
+node_modules/**
diff --git a/client/resources/jquery.wikibase/jquery.wikibase.linkitem.js 
b/client/resources/jquery.wikibase/jquery.wikibase.linkitem.js
index 6482a37..0915fab 100644
--- a/client/resources/jquery.wikibase/jquery.wikibase.linkitem.js
+++ b/client/resources/jquery.wikibase/jquery.wikibase.linkitem.js
@@ -161,7 +161,7 @@
                                title: mw.message( 'wikibase-linkitem-title' 
).escaped(),
                                width: 500,
                                resizable: false,
-                               position: { my: "top", at: "top+50", of: window 
},
+                               position: { my: 'top', at: 'top+50', of: window 
},
                                buttons: [ {
                                        text: mw.msg( 
'wikibase-linkitem-linkpage' ),
                                        id: 'wbclient-linkItem-goButton',
@@ -410,7 +410,7 @@
 
                        // Count site links and abort in case the entity 
already is linked with a page on this
                        // wiki:
-                       for ( i in entity.sitelinks ) {
+                       for( i in entity.sitelinks ) {
                                if ( entity.sitelinks[ i ].site ) {
                                        siteLinkCount += 1;
                                        if ( entity.sitelinks[ i ].site === 
this.options.globalSiteId ) {
@@ -483,7 +483,7 @@
         *
         * @return {jQuery}
         */
-       _createSiteLinkTable: function( entity )  {
+       _createSiteLinkTable: function( entity ) {
                var i, $siteLinks;
 
                $siteLinks = $( '<div>' )
@@ -500,7 +500,7 @@
                .appendTo( $siteLinks.find( 'table' ) );
 
                // Table body
-               for ( i in entity.sitelinks ) {
+               for( i in entity.sitelinks ) {
                        if ( entity.sitelinks[ i ].site ) {
                                // Show a row for each page that is linked with 
the current entity
                                $siteLinks
diff --git a/client/resources/wikibase.client.PageConnector.js 
b/client/resources/wikibase.client.PageConnector.js
index 3acc2ce..00c519e 100644
--- a/client/resources/wikibase.client.PageConnector.js
+++ b/client/resources/wikibase.client.PageConnector.js
@@ -117,7 +117,7 @@
         * @return {object|undefined} Entity as returned by the API
         */
        _extractEntity: function( apiResult ) {
-               for ( var i in apiResult.entities ) {
+               for( var i in apiResult.entities ) {
                        if ( apiResult.entities[ i ].sitelinks ) {
                                return apiResult.entities[ i ];
                        }
@@ -135,7 +135,7 @@
                var siteLinkCount = 0,
                        i;
 
-               for ( i in entity.sitelinks ) {
+               for( i in entity.sitelinks ) {
                        if ( entity.sitelinks[ i ].site ) {
                                siteLinkCount += 1;
                        }
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
index fb09eb7..b5944a7 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.entityselector.js
@@ -461,7 +461,6 @@
        }
 } );
 
-
 /**
  * Default `entityselector` suggestion menu item.
  * @class jQuery.wikibase.entityselector.Item
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.listview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
index f7ee5f9..8d9cc54 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.listview.js
@@ -99,8 +99,8 @@
                if( typeof this._lia !== 'object'
                        || !( this._lia instanceof 
$.wikibase.listview.ListItemAdapter )
                ) {
-                       throw new Error( "Option 'listItemAdapter' has to be an 
instance of $.wikibase." +
-                               "listview.ListItemAdapter" );
+                       throw new Error( 'Option "listItemAdapter" has to be an 
instance of '
+                               + 'jQuery.wikibase.listview.ListItemAdapter' );
                }
 
                this._reusedItems = $.makeArray( this.element.children( 
this.options.listItemNodeName ) );
diff --git a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js 
b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
index ca2b09a..4f49908 100644
--- a/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
+++ b/lib/resources/jquery.wikibase/jquery.wikibase.sitelinkgroupview.js
@@ -114,7 +114,7 @@
 
                this.$h
                .attr( 'id', 'sitelinks-' + this.options.value.group )
-//             .text( mw.msg( 'wikibase-sitelinks-' + this.options.value.group 
) )
+               // .text( mw.msg( 'wikibase-sitelinks-' + 
this.options.value.group ) )
                .text( this.__headingText )
                .append( this.$counter );
 
diff --git a/lib/resources/jquery.wikibase/snakview/snakview.js 
b/lib/resources/jquery.wikibase/snakview/snakview.js
index 937102e..a995bd7 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.js
@@ -639,7 +639,7 @@
                if( snak === undefined ) {
                        // factory method will fail when essential data is not 
yet defined!
                        // TODO: variations should have a function to ask 
whether fully defined yet
-                       try{
+                       try {
                                // NOTE: can still be null if user didn't enter 
essential information in variation's UI
                                var value = this.value();
                                if( value.datavalue ) {
diff --git 
a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js 
b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
index 7a08711..e88f116 100644
--- a/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
+++ b/lib/resources/jquery.wikibase/snakview/snakview.variations.Value.js
@@ -66,8 +66,7 @@
                                // actual value set as the Snak's value.
                                // Also if draw has not been called yet, this 
will hold the current value.
                                dataValue = this._newDataValue;
-                       }
-                       else if( this._valueView ) {
+                       } else if( this._valueView ) {
                                dataValue = this._valueView.value();
                        }
 
@@ -282,7 +281,7 @@
                                                { height: newHeight },
                                                {
                                                        queue: 
heightAnimationQueue,
-                                                       duration: 'fast', 
//defaults to 200
+                                                       duration: 'fast', // 
defaults to 200
                                                        progress: function( 
animation, progress, remainingMs ) {
                                                                
$.ui.inputextender.redrawVisibleExtensions();
                                                        }
diff --git 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
index 9661b53..94a5a7a 100644
--- 
a/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
+++ 
b/lib/resources/jquery.wikibase/toolbar/controller/definitions/edittoolbar/entitytermsview.js
@@ -71,5 +71,4 @@
        }
 } );
 
-
 }( jQuery ) );
diff --git a/lib/resources/utilities/wikibase.utilities.GuidGenerator.js 
b/lib/resources/utilities/wikibase.utilities.GuidGenerator.js
index 7d0763e..e04c660 100644
--- a/lib/resources/utilities/wikibase.utilities.GuidGenerator.js
+++ b/lib/resources/utilities/wikibase.utilities.GuidGenerator.js
@@ -69,7 +69,7 @@
                                        hex = self._getRandomHex( 0, 65535 );
                                }
 
-                               while ( hex.length < 4 ) {
+                               while( hex.length < 4 ) {
                                        hex = '0' +  hex;
                                }
 
diff --git 
a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js 
b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
index d9f9126..9520fad 100644
--- a/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
+++ b/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
@@ -348,5 +348,4 @@
                sitelinkview.setError();
        } );
 
-
 }( jQuery, wikibase, QUnit ) );
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..b50cd78
--- /dev/null
+++ b/package.json
@@ -0,0 +1,16 @@
+{
+       "name": "Wikibase",
+       "version": "0.0.0",
+       "scripts": {
+               "test": "jscs ."
+       },
+       "repository": {
+               "type": "git",
+               "url": 
"https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikibase";
+       },
+       "author": "The Wikidata team",
+       "license": "GPL-2.0+",
+       "devDependencies": {
+               "jscs": ""
+       }
+}
diff --git a/repo/resources/jquery.ui/jquery.ui.closeable.js 
b/repo/resources/jquery.ui/jquery.ui.closeable.js
index 3ec74bf..2e2bca3 100644
--- a/repo/resources/jquery.ui/jquery.ui.closeable.js
+++ b/repo/resources/jquery.ui/jquery.ui.closeable.js
@@ -90,5 +90,4 @@
        }
 } );
 
-
 }( jQuery ) );
diff --git a/repo/resources/jquery/jquery.removeClassByRegex.js 
b/repo/resources/jquery/jquery.removeClassByRegex.js
index 3411401..8c65859 100644
--- a/repo/resources/jquery/jquery.removeClassByRegex.js
+++ b/repo/resources/jquery/jquery.removeClassByRegex.js
@@ -14,7 +14,7 @@
        $.fn.removeClassByRegex = function( classNameRegex ) {
                this.each( function() {
                        var subject = $( this );
-                       if( ! subject.attr( 'class' ) ) {
+                       if( !subject.attr( 'class' ) ) {
                                return;
                        }
 
@@ -22,7 +22,7 @@
 
                        $.each( subject.attr( 'class' ).split( /\s+/ ), 
function( i, className ) {
                                // check for each class whether it matches...
-                               if( ! className.match( classNameRegex ) ) {
+                               if( !className.match( classNameRegex ) ) {
                                        // ...if not, we re-add it
                                        newClasses += ' ' + className;
                                }
diff --git a/repo/resources/store/store.ApiEntityStore.js 
b/repo/resources/store/store.ApiEntityStore.js
index ee75fe3..39cad3e 100644
--- a/repo/resources/store/store.ApiEntityStore.js
+++ b/repo/resources/store/store.ApiEntityStore.js
@@ -100,4 +100,3 @@
                }
        } );
 }( wikibase, jQuery ) );
-
diff --git a/repo/resources/wikibase.special/wikibase.special.itemByTitle.js 
b/repo/resources/wikibase.special/wikibase.special.itemByTitle.js
index 8b2c86d..e06f420 100644
--- a/repo/resources/wikibase.special/wikibase.special.itemByTitle.js
+++ b/repo/resources/wikibase.special/wikibase.special.itemByTitle.js
@@ -16,7 +16,7 @@
 
                // this will build a drop-down for the language selection:
                var siteList = [];
-               for ( var siteId in wb.sites.getSites() ) {
+               for( var siteId in wb.sites.getSites() ) {
                        var site = wb.sites.getSite( siteId );
                        siteList.push( {
                                'label': site.getName() + ' (' + site.getId() + 
')',

-- 
To view, visit https://gerrit.wikimedia.org/r/184591
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib83f2b896c647fa216f63aa3827e9ce31ca3f9f8
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>
Gerrit-Reviewer: Adrian Lang <[email protected]>
Gerrit-Reviewer: Henning Snater <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to