Jforrester has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/187841

Change subject: build: Bump devDependencies to latest
......................................................................

build: Bump devDependencies to latest

Updates:
* grunt-contrib-csslint  0.3.1  ->  0.4.0
* grunt-contrib-jslint   0.10.0 -> 0.11.0
* grunt-jscs             0.8.1  ->  1.2.0

For jscs, leaving requireSpacesInsideArrayBrackets to avoid headaches for now.

Change-Id: I62d34444edbba65c8bd22d2fa5e50e16cabb0042
---
M .docs/eg-iframe.html
M modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
M modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
M modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
M modules/ve-mw/dm/nodes/ve.dm.MWReferencesListNode.js
M modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
M modules/ve-mw/init/targets/ve.init.mw.MobileViewTarget.js
M modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
M modules/ve-mw/init/ve.init.mw.LinkCache.js
M modules/ve-mw/init/ve.init.mw.Target.js
M modules/ve-mw/tests/dm/ve.dm.mwExample.js
M modules/ve-mw/ui/dialogs/ve.ui.MWReferenceDialog.js
M modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js
M modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js
M modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js
M modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
M modules/ve-mw/ui/widgets/ve.ui.MWTitleInputWidget.js
M package.json
23 files changed, 70 insertions(+), 38 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/41/187841/1

diff --git a/.docs/eg-iframe.html b/.docs/eg-iframe.html
index 2014210..1ee1a71 100644
--- a/.docs/eg-iframe.html
+++ b/.docs/eg-iframe.html
@@ -18,6 +18,7 @@
                <link rel=stylesheet 
href="lib/ve/src/ce/styles/nodes/ve.ce.DocumentNode.css">
                <link rel=stylesheet 
href="lib/ve/src/ce/styles/nodes/ve.ce.GeneratedContentNode.css">
                <link rel=stylesheet 
href="lib/ve/src/ce/styles/annotations/ve.ce.LanguageAnnotation.css">
+               <link rel=stylesheet 
href="lib/ve/src/ce/styles/nodes/ve.ce.AlignableNode.css">
                <link rel=stylesheet 
href="lib/ve/src/ce/styles/nodes/ve.ce.ResizableNode.css">
                <link rel=stylesheet 
href="lib/ve/src/ce/styles/nodes/ve.ce.TableCellNode.css">
                <link rel=stylesheet 
href="lib/ve/src/ce/styles/nodes/ve.ce.TableNode.css">
@@ -141,6 +142,7 @@
                <script src="lib/ve/src/dm/ve.dm.AnnotationSet.js"></script>
                <script src="lib/ve/src/dm/ve.dm.MetaItemFactory.js"></script>
                <script 
src="lib/ve/src/dm/ve.dm.ClassAttributeNode.js"></script>
+               <script src="lib/ve/src/dm/ve.dm.AlignableNode.js"></script>
                <script src="lib/ve/src/dm/ve.dm.FocusableNode.js"></script>
                <script src="lib/ve/src/dm/ve.dm.Scalable.js"></script>
                <script src="lib/ve/src/dm/ve.dm.ResizableNode.js"></script>
@@ -231,6 +233,7 @@
                <script src="lib/ve/src/ce/ve.ce.BranchNode.js"></script>
                <script src="lib/ve/src/ce/ve.ce.ContentBranchNode.js"></script>
                <script src="lib/ve/src/ce/ve.ce.LeafNode.js"></script>
+               <script src="lib/ve/src/ce/ve.ce.AlignableNode.js"></script>
                <script src="lib/ve/src/ce/ve.ce.FocusableNode.js"></script>
                <script src="lib/ve/src/ce/ve.ce.ResizableNode.js"></script>
                <script src="lib/ve/src/ce/ve.ce.Surface.js"></script>
@@ -326,6 +329,7 @@
                <script 
src="lib/ve/src/ui/filedrophandlers/ve.ui.PlainTextFileDropHandler.js"></script>
                <script 
src="lib/ve/src/ui/filedrophandlers/ve.ui.HTMLFileDropHandler.js"></script>
                <script 
src="lib/ve/src/ui/windowmanagers/ve.ui.ToolbarDialogWindowManager.js"></script>
+               <script 
src="lib/ve/src/ui/widgets/ve.ui.AlignWidget.js"></script>
                <script 
src="lib/ve/src/ui/widgets/ve.ui.LanguageSearchWidget.js"></script>
                <script 
src="lib/ve/src/ui/widgets/ve.ui.LanguageResultWidget.js"></script>
                <script 
src="lib/ve/src/ui/dialogs/ve.ui.LanguageSearchDialog.js"></script>
diff --git a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js 
b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
index 9839271..453a2fc 100644
--- a/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
+++ b/modules/ve-mw/ce/nodes/ve.ce.MWExtensionNode.js
@@ -79,7 +79,8 @@
  * @param {Object} response Response data
  */
 ve.ce.MWExtensionNode.prototype.onParseSuccess = function ( deferred, response 
) {
-       var data = response.visualeditor, contentNodes = this.$( data.content 
).get();
+       var data = response.visualeditor,
+               contentNodes = this.$( data.content ).get();
        deferred.resolve( contentNodes );
 };
 
diff --git a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js 
b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
index 7cb676d..47a1ca3 100644
--- a/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
+++ b/modules/ve-mw/dm/annotations/ve.dm.MWInternalLinkAnnotation.js
@@ -67,7 +67,7 @@
                // Protocol relative href
                relativeHref = href.replace( /^https?:/, '' ),
                // Check if this matches the server's article path
-               matches = relativeHref.match ( relativeBaseRegex );
+               matches = relativeHref.match( relativeBaseRegex );
 
        if ( matches ) {
                // Take the relative path
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
index ff21dc0..030f4fd 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWBlockImageNode.js
@@ -139,9 +139,9 @@
        this.storeGeneratedContents( dataElement, dataElement.attributes.src, 
converter.getStore() );
 
        if ( caption ) {
-               return [ dataElement ].
-                       concat( converter.getDataFromDomClean( caption, { type: 
'mwImageCaption' } ) ).
-                       concat( [ { type: '/' + this.name } ] );
+               return [ dataElement ]
+                       .concat( converter.getDataFromDomClean( caption, { 
type: 'mwImageCaption' } ) )
+                       .concat( [ { type: '/' + this.name } ] );
        } else {
                return [
                        dataElement,
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWReferencesListNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWReferencesListNode.js
index 484bc06..3dc06a2 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWReferencesListNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWReferencesListNode.js
@@ -63,9 +63,9 @@
                contentsDiv = domElements[0].ownerDocument.createElement( 'div' 
);
                contentsDiv.innerHTML = mwData.body.html;
                contentsData = converter.getDataFromDomClean( contentsDiv );
-               return [ referencesListData ].
-                       concat( contentsData ).
-                       concat( [ { type: '/' + this.name } ] );
+               return [ referencesListData ]
+                       .concat( contentsData )
+                       .concat( [ { type: '/' + this.name } ] );
        } else {
                return referencesListData;
        }
diff --git a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js 
b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
index 875275d..0247908 100644
--- a/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
+++ b/modules/ve-mw/dm/nodes/ve.dm.MWTransclusionNode.js
@@ -158,8 +158,13 @@
  * @returns {string} Escaped parameter value
  */
 ve.dm.MWTransclusionNode.static.escapeParameter = function ( param ) {
-       var match, needsNowiki, input = param, output = '',
-               inNowiki = false, bracketStack = 0, linkStack = 0;
+       var match, needsNowiki,
+               input = param,
+               output = '',
+               inNowiki = false,
+               bracketStack = 0,
+               linkStack = 0;
+
        while ( input.length > 0 ) {
                match = input.match( 
/(?:\[\[)|(?:\]\])|(?:\{\{)|(?:\}\})|\|+|<\/?nowiki>|<nowiki\s*\/>/ );
                if ( !match ) {
diff --git a/modules/ve-mw/init/targets/ve.init.mw.MobileViewTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.MobileViewTarget.js
index 17c6706..d43fe9b 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.MobileViewTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.MobileViewTarget.js
@@ -107,7 +107,8 @@
  * @inheritdoc
  */
 ve.init.mw.MobileViewTarget.prototype.scrollToHeading = function ( headingNode 
) {
-       var target = this, position;
+       var position,
+               target = this;
 
        setTimeout( function () {
                if ( target.isIos ) {
diff --git a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js 
b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
index 3b71853..1481796 100644
--- a/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
+++ b/modules/ve-mw/init/targets/ve.init.mw.ViewPageTarget.js
@@ -643,7 +643,8 @@
  * @param {Object} editApi
  */
 ve.init.mw.ViewPageTarget.prototype.onSaveErrorCaptcha = function ( editApi ) {
-       var $captchaDiv = $( '<div>' ), $captchaParagraph = $( '<p>' );
+       var $captchaDiv = $( '<div>' ),
+               $captchaParagraph = $( '<p>' );
 
        this.captcha = {
                input: new OO.ui.TextInputWidget(),
@@ -962,7 +963,7 @@
                        var $this = $( this );
                        // We can't just use $this.val() because .val() always 
returns the value attribute of
                        // a checkbox even when it's unchecked
-                       if ( $this.prop ( 'name' ) && ( $this.prop( 'type' ) 
!== 'checkbox' || $this.prop( 'checked' ) ) ) {
+                       if ( $this.prop( 'name' ) && ( $this.prop( 'type' ) !== 
'checkbox' || $this.prop( 'checked' ) ) ) {
                                fields[$this.prop( 'name' )] = $this.val();
                        }
                } );
@@ -1491,7 +1492,8 @@
 ve.init.mw.ViewPageTarget.prototype.replacePageContent = function (
        html, categoriesHtml, displayTitle, lastModified, contentSub
 ) {
-       var $content = $( $.parseHTML( html ) ), $editableContent;
+       var $editableContent,
+               $content = $( $.parseHTML( html ) );
 
        if ( lastModified ) {
                // If we were not viewing the most recent revision before (a 
requirement
diff --git a/modules/ve-mw/init/ve.init.mw.LinkCache.js 
b/modules/ve-mw/init/ve.init.mw.LinkCache.js
index 9590f85..47eb703 100644
--- a/modules/ve-mw/init/ve.init.mw.LinkCache.js
+++ b/modules/ve-mw/init/ve.init.mw.LinkCache.js
@@ -184,4 +184,4 @@
                }
        };
 
-} () );
+}() );
diff --git a/modules/ve-mw/init/ve.init.mw.Target.js 
b/modules/ve-mw/init/ve.init.mw.Target.js
index e52615c..3ae9fd8 100644
--- a/modules/ve-mw/init/ve.init.mw.Target.js
+++ b/modules/ve-mw/init/ve.init.mw.Target.js
@@ -1084,7 +1084,10 @@
  * @returns {jQuery.Promise} Abortable promise, resolved with the cache key.
  */
 ve.init.mw.Target.prototype.prepareCacheKey = function ( doc ) {
-       var xhr, html, start = ve.now(), deferred = $.Deferred(), target = this;
+       var xhr, html,
+               start = ve.now(),
+               deferred = $.Deferred(),
+               target = this;
 
        if ( this.preparedCacheKeyPromise && this.preparedCacheKeyPromise.doc 
=== doc ) {
                return this.preparedCacheKeyPromise;
@@ -1163,7 +1166,10 @@
  * @returns {jQuery.Promise}
  */
 ve.init.mw.Target.prototype.tryWithPreparedCacheKey = function ( doc, options, 
eventName ) {
-       var data, preparedCacheKey = this.getPreparedCacheKey( doc ), target = 
this;
+       var data,
+               preparedCacheKey = this.getPreparedCacheKey( doc ),
+               target = this;
+
        data = ve.extendObject( {}, options, { format: 'json' } );
 
        function ajaxRequest( cachekey ) {
@@ -1461,7 +1467,7 @@
                        // If we detect no roundtrip errors,
                        // don't emphasize "review changes" to the user.
                        target.sanityCheckVerified = true;
-               })
+               } )
                .always( function () {
                        target.sanityCheckFinished = true;
                        target.emit( 'sanityCheckComplete' );
diff --git a/modules/ve-mw/tests/dm/ve.dm.mwExample.js 
b/modules/ve-mw/tests/dm/ve.dm.mwExample.js
index 1e56d57..aad76d4 100644
--- a/modules/ve-mw/tests/dm/ve.dm.mwExample.js
+++ b/modules/ve-mw/tests/dm/ve.dm.mwExample.js
@@ -739,7 +739,7 @@
                                attrs: {}
                        },
                        originalMw: '{"name":"references","attrs":{}"}',
-                       //domElements: HTML,
+                       // domElements: HTML,
                        listGroup: 'mwReference/',
                        refGroup: ''
                }
diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWReferenceDialog.js 
b/modules/ve-mw/ui/dialogs/ve.ui.MWReferenceDialog.js
index 4192ac7..63bfc22 100644
--- a/modules/ve-mw/ui/dialogs/ve.ui.MWReferenceDialog.js
+++ b/modules/ve-mw/ui/dialogs/ve.ui.MWReferenceDialog.js
@@ -102,7 +102,7 @@
        var toolbarGroups = ve.copy( ve.init.mw.Target.static.toolbarGroups );
        toolbarGroups[4].include[0].group = 'cite-transclusion';
        return toolbarGroups;
-} () );
+}() );
 
 /**
  * Get the import rules for the surface widget in the dialog
diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js 
b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js
index 25bddb7..b625da0 100644
--- a/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js
+++ b/modules/ve-mw/ui/dialogs/ve.ui.MWSaveDialog.js
@@ -255,7 +255,7 @@
                }
                $message = this.$( '<div 
class="ve-ui-mwSaveDialog-message"></div>' );
                if ( options.wrap !== false ) {
-                       $message.append( this.$( '<p>').append(
+                       $message.append( this.$( '<p>' ).append(
                                // visualeditor-savedialog-label-error
                                // visualeditor-savedialog-label-warning
                                this.$( '<strong>' ).text( mw.msg( 
'visualeditor-savedialog-label-' + options.wrap ) ),
diff --git a/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js 
b/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js
index 8d8e354..c9af2a7 100644
--- a/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js
+++ b/modules/ve-mw/ui/dialogs/ve.ui.MWTemplateDialog.js
@@ -351,7 +351,8 @@
  * @returns {jQuery.Deferred}
  */
 ve.ui.MWTemplateDialog.prototype.checkRequiredParameters = function () {
-       var blankRequired = [], deferred = $.Deferred();
+       var blankRequired = [],
+               deferred = $.Deferred();
        $.each( this.bookletLayout.pages, function () {
                if ( !( this instanceof ve.ui.MWParameterPage ) ) {
                        return true;
diff --git a/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js 
b/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js
index 6a7761c..1028353 100644
--- a/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js
+++ b/modules/ve-mw/ui/pages/ve.ui.MWLanguagesPage.js
@@ -57,7 +57,9 @@
 };
 
 ve.ui.MWLanguagesPage.prototype.onLoadLanguageData = function ( languages ) {
-       var i, $languagesTable = this.$( '<table>' ), languageslength = 
languages.length;
+       var i,
+               $languagesTable = this.$( '<table>' ),
+               languageslength = languages.length;
 
        $languagesTable
                .addClass( 've-ui-mwLanguagesPage-languages-table' )
diff --git a/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js 
b/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
index 23d5800..c0c6055 100644
--- a/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
+++ b/modules/ve-mw/ui/pages/ve.ui.MWParameterPage.js
@@ -17,7 +17,8 @@
  * @param {Object} [config] Configuration options
  */
 ve.ui.MWParameterPage = function VeUiMWParameterPage( parameter, name, config 
) {
-       var paramName = parameter.getName(), page = this;
+       var paramName = parameter.getName(),
+               page = this;
 
        // Configuration initialization
        config = ve.extendObject( {
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js
index 6360c17..e009a39 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryInputWidget.js
@@ -62,7 +62,9 @@
  * @inheritdoc
  */
 ve.ui.MWCategoryInputWidget.prototype.getLookupCacheDataFromResponse = 
function ( data ) {
-       var result = [], linkCacheUpdate = {}, query = data.query || {};
+       var result = [],
+               linkCacheUpdate = {},
+               query = data.query || {};
 
        $.each( query.pages || [], function ( pageId, categoryPage ) {
                result.push( mw.Title.newFromText( categoryPage.title 
).getMainText() );
@@ -99,8 +101,10 @@
        var widget = this,
                exactMatch = false,
                itemWidgets = [],
-               existingCategoryItems = [], matchingCategoryItems = [],
-               hiddenCategoryItems = [], newCategoryItems = [],
+               existingCategoryItems = [],
+               matchingCategoryItems = [],
+               hiddenCategoryItems = [],
+               newCategoryItems = [],
                existingCategories = this.categoryWidget.getCategories(),
                linkCacheUpdate = {},
                canonicalQueryValue = mw.Title.newFromText( this.value ),
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
index ad9e4bb..74c2c26 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryPopupWidget.js
@@ -37,7 +37,7 @@
        this.sortKeyField = new OO.ui.FieldLayout( this.sortKeyInput, {
                $: this.$,
                align: 'top',
-               label: ve.msg ( 
'visualeditor-dialog-meta-categories-sortkey-label' )
+               label: ve.msg( 
'visualeditor-dialog-meta-categories-sortkey-label' )
        } );
        this.$sortKeyForm = this.$( '<form>' ).addClass( 
've-ui-mwCategoryPopupWidget-sortKeyForm' )
                .append( this.sortKeyField.$element );
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
index a6adecb..1824dfa 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWCategoryWidget.js
@@ -215,7 +215,8 @@
  * @return {jQuery.Promise}
  */
 ve.ui.MWCategoryWidget.prototype.queryCategoryStatus = function ( 
categoryNames ) {
-       var categoryWidget = this, categoryNamesToQuery = [];
+       var categoryWidget = this,
+               categoryNamesToQuery = [];
        // Get rid of any we already know the hidden status of.
        categoryNamesToQuery = $.grep( categoryNames, function ( categoryTitle 
) {
                var cacheEntry = ve.init.platform.linkCache.getCached( 
categoryTitle );
@@ -233,7 +234,8 @@
                ppprop: 'hiddencat',
                redirects: ''
        } ).then( function ( result ) {
-               var linkCacheUpdate = {}, normalisedTitles = {};
+               var linkCacheUpdate = {},
+                       normalisedTitles = {};
                if ( result && result.query && result.query.pages ) {
                        $.each( result.query.pages, function ( index, pageInfo 
) {
                                linkCacheUpdate[pageInfo.title] = {
@@ -357,7 +359,7 @@
        var gap, min, $lastItem,
                $input = this.input.$element;
 
-       if ( !$input.is( ':visible') ) {
+       if ( !$input.is( ':visible' ) ) {
                return;
        }
 
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
index e0ee2dd..460eafd 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWLinkTargetInputWidget.js
@@ -109,9 +109,11 @@
  * @returns {jqXHR} AJAX object without success or fail handlers attached
  */
 ve.ui.MWLinkTargetInputWidget.prototype.getLookupRequest = function () {
-       var widget = this, promiseAbortObject = { abort: function () {
+       var req,
+               widget = this,
+               promiseAbortObject = { abort: function () {
                // Do nothing. This is just so OOUI doesn't break due to abort 
being undefined.
-       } }, req;
+       } };
 
        if ( mw.Title.newFromText( this.value ) ) {
                return this.interwikiPrefixesPromise.then( function () {
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
index affd013..a2c8fc1 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWReferenceSearchWidget.js
@@ -120,7 +120,8 @@
  * @param {string[]} groupsChanged A list of groups which have changed in this 
transaction
  */
 ve.ui.MWReferenceSearchWidget.prototype.onInternalListUpdate = function ( 
groupsChanged ) {
-       for ( var i = 0, len = groupsChanged.length; i < len; i++ ) {
+       var i, len;
+       for ( i = 0, len = groupsChanged.length; i < len; i++ ) {
                if ( groupsChanged[i].indexOf( 'mwReference/' ) === 0 ) {
                        this.built = false;
                        break;
diff --git a/modules/ve-mw/ui/widgets/ve.ui.MWTitleInputWidget.js 
b/modules/ve-mw/ui/widgets/ve.ui.MWTitleInputWidget.js
index 088c0b5..dfe7c73 100644
--- a/modules/ve-mw/ui/widgets/ve.ui.MWTitleInputWidget.js
+++ b/modules/ve-mw/ui/widgets/ve.ui.MWTitleInputWidget.js
@@ -123,7 +123,7 @@
  */
 ve.ui.MWTitleInputWidget.prototype.getTitle = function () {
        var title = this.getValue(),
-               //mw.Title doesn't handle null well
+               // mw.Title doesn't handle null well
                titleObj = mw.Title.newFromText( title, this.namespace !== null 
? this.namespace : undefined );
 
        return titleObj;
diff --git a/package.json b/package.json
index 554ff70..68f3397 100644
--- a/package.json
+++ b/package.json
@@ -9,9 +9,9 @@
   "devDependencies": {
     "grunt": "0.4.5",
     "grunt-banana-checker": "0.2.0",
-    "grunt-contrib-csslint": "0.3.1",
-    "grunt-contrib-jshint": "0.10.0",
+    "grunt-contrib-csslint": "0.4.0",
+    "grunt-contrib-jshint": "0.11.0",
     "grunt-contrib-watch": "0.6.1",
-    "grunt-jscs": "0.8.1"
+    "grunt-jscs": "1.2.0"
   }
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I62d34444edbba65c8bd22d2fa5e50e16cabb0042
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Jforrester <jforres...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to