mediawiki/extensions/Jade (master)

sourcepatches
From f3319bb7219ac5cb3ebb8fdd13e749ab9265588c Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sun, 7 Mar 2021 00:53:42 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* eslint-config-wikimedia: 0.18.1 → 0.18.2
* oojs-ui: 0.35.1 → 0.41.1
  * https://npmjs.com/advisories/1518 (CVE-2020-11022)

Change-Id: I8bab726d2d18a8f115f02fc7a7b98a6da4418c0c
---
 package-lock.json | 134 +++++++++++++++++++++++-----------------------
 package.json      |   2 +-
 2 files changed, 67 insertions(+), 69 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 5520d97..c734127 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -242,9 +242,9 @@
 			}
 		},
 		"@eslint/eslintrc": {
-			"version": "0.3.0",
-			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz",
-			"integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==",
+			"version": "0.4.0",
+			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz",
+			"integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==",
 			"dev": true,
 			"requires": {
 				"ajv": "^6.12.4",
@@ -254,7 +254,6 @@
 				"ignore": "^4.0.6",
 				"import-fresh": "^3.2.1",
 				"js-yaml": "^3.13.1",
-				"lodash": "^4.17.20",
 				"minimatch": "^3.0.4",
 				"strip-json-comments": "^3.1.1"
 			}
@@ -869,9 +868,9 @@
 			"dev": true
 		},
 		"core-js": {
-			"version": "3.8.3",
-			"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
-			"integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+			"version": "3.9.1",
+			"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
+			"integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==",
 			"dev": true
 		},
 		"core-util-is": {
@@ -1295,13 +1294,13 @@
 			"dev": true
 		},
 		"eslint": {
-			"version": "7.18.0",
-			"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz",
-			"integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz",
+			"integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==",
 			"dev": true,
 			"requires": {
-				"@babel/code-frame": "^7.0.0",
-				"@eslint/eslintrc": "^0.3.0",
+				"@babel/code-frame": "7.12.11",
+				"@eslint/eslintrc": "^0.4.0",
 				"ajv": "^6.10.0",
 				"chalk": "^4.0.0",
 				"cross-spawn": "^7.0.2",
@@ -1312,9 +1311,9 @@
 				"eslint-utils": "^2.1.0",
 				"eslint-visitor-keys": "^2.0.0",
 				"espree": "^7.3.1",
-				"esquery": "^1.2.0",
+				"esquery": "^1.4.0",
 				"esutils": "^2.0.2",
-				"file-entry-cache": "^6.0.0",
+				"file-entry-cache": "^6.0.1",
 				"functional-red-black-tree": "^1.0.1",
 				"glob-parent": "^5.0.0",
 				"globals": "^12.1.0",
@@ -1337,12 +1336,23 @@
 				"table": "^6.0.4",
 				"text-table": "^0.2.0",
 				"v8-compile-cache": "^2.0.3"
+			},
+			"dependencies": {
+				"file-entry-cache": {
+					"version": "6.0.1",
+					"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+					"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+					"dev": true,
+					"requires": {
+						"flat-cache": "^3.0.4"
+					}
+				}
 			}
 		},
 		"eslint-config-wikimedia": {
-			"version": "0.18.1",
-			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.18.1.tgz",
-			"integrity": "sha512-93nHVH4CGxYwelbTjJQLr0xqn4XIe9WwWeGL4wMnELZW/Aceg52aT7AgIdV0659ReLzrCgxLPDvbeqB47LjBTQ==",
+			"version": "0.18.2",
+			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.18.2.tgz",
+			"integrity": "sha512-OllUgce2qODU/6481jg/a1kT/dygBDY1xhxXuAiQdYxJARV6LXyuiJw+wl1QBQz+huV9NXRxoJGC3L6x/NzC4g==",
 			"dev": true,
 			"requires": {
 				"eslint": "^7.17.0",
@@ -1350,12 +1360,12 @@
 				"eslint-plugin-es": "^4.1.0",
 				"eslint-plugin-jsdoc": "^30.7.13",
 				"eslint-plugin-json-es": "^1.5.1",
-				"eslint-plugin-mediawiki": "^0.2.6",
+				"eslint-plugin-mediawiki": "^0.2.7",
 				"eslint-plugin-mocha": "^8.0.0",
 				"eslint-plugin-no-jquery": "^2.5.0",
 				"eslint-plugin-node": "^11.1.0",
 				"eslint-plugin-qunit": "^5.2.0",
-				"eslint-plugin-vue": "^7.4.1",
+				"eslint-plugin-vue": "^7.7.0",
 				"eslint-plugin-wdio": "^6.0.12"
 			}
 		},
@@ -1409,56 +1419,29 @@
 			}
 		},
 		"eslint-plugin-json-es": {
-			"version": "1.5.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-json-es/-/eslint-plugin-json-es-1.5.1.tgz",
-			"integrity": "sha512-YMzAWMcmKOYWiH0MsN3JOr0AdtZ2Rvmk3YmscsX1rHYJZRsL4KRo+yj9ktRk7S7mgy+G5TORWJ5D3/vH/u7R5A==",
+			"version": "1.5.3",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-json-es/-/eslint-plugin-json-es-1.5.3.tgz",
+			"integrity": "sha512-9wWjwhoN+ipMel70ktkWy0H7jj9sm5OAbAy3N3F3AT0swpIofVsIjDXyjGZJwSzy9tZzDtI/aKIj2WsqMHw2QA==",
 			"dev": true,
 			"requires": {
-				"eslint-visitor-keys": "^1.3.0",
+				"eslint-visitor-keys": "^2.0.0",
 				"espree": "^7.3.1"
-			},
-			"dependencies": {
-				"eslint-visitor-keys": {
-					"version": "1.3.0",
-					"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
-					"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-					"dev": true
-				}
 			}
 		},
 		"eslint-plugin-mediawiki": {
-			"version": "0.2.6",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.6.tgz",
-			"integrity": "sha512-e7gx15H39ceam9AnSr6DDyfhMM9L43PVagHzclH3CF33DvWKi/OA+j2dqzJTuJcl5P/EmVIQHG5qoTaepkADsw==",
+			"version": "0.2.7",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.7.tgz",
+			"integrity": "sha512-2ZvPvLEwCIqrJxV1349bdX5Q03c30WccuUMCfB1Gh2IVxbBSrY0gbzOk/gPZeYigVhODt9xoFWUCIz8jwTWfrA==",
 			"dev": true,
 			"requires": {
-				"eslint-plugin-vue": "^6.2.2",
+				"eslint-plugin-vue": "^7.7.0",
 				"upath": "^1.2.0"
-			},
-			"dependencies": {
-				"eslint-plugin-vue": {
-					"version": "6.2.2",
-					"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
-					"integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
-					"dev": true,
-					"requires": {
-						"natural-compare": "^1.4.0",
-						"semver": "^5.6.0",
-						"vue-eslint-parser": "^7.0.0"
-					}
-				},
-				"semver": {
-					"version": "5.7.1",
-					"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-					"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-					"dev": true
-				}
 			}
 		},
 		"eslint-plugin-mocha": {
-			"version": "8.0.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.0.0.tgz",
-			"integrity": "sha512-n67etbWDz6NQM+HnTwZHyBwz/bLlYPOxUbw7bPuCyFujv7ZpaT/Vn6KTAbT02gf7nRljtYIjWcTxK/n8a57rQQ==",
+			"version": "8.1.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.1.0.tgz",
+			"integrity": "sha512-1EgHvXKRl7W3mq3sntZAi5T24agRMyiTPL4bSXe+B4GksYOjAPEWYx+J3eJg4It1l2NMNZJtk0gQyQ6mfiPhQg==",
 			"dev": true,
 			"requires": {
 				"eslint-utils": "^2.1.0",
@@ -1520,15 +1503,15 @@
 			}
 		},
 		"eslint-plugin-vue": {
-			"version": "7.5.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.5.0.tgz",
-			"integrity": "sha512-QnMMTcyV8PLxBz7QQNAwISSEs6LYk2LJvGlxalXvpCtfKnqo7qcY0aZTIxPe8QOnHd7WCwiMZLOJzg6A03T0Gw==",
+			"version": "7.7.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.7.0.tgz",
+			"integrity": "sha512-mYz4bpLGv5jx6YG/GvKkqbGSfV7uma2u1P3mLA41Q5vQl8W1MeuTneB8tfsLq6xxxesFubcrOC0BZBJ5R+eaCQ==",
 			"dev": true,
 			"requires": {
 				"eslint-utils": "^2.1.0",
 				"natural-compare": "^1.4.0",
 				"semver": "^7.3.2",
-				"vue-eslint-parser": "^7.4.1"
+				"vue-eslint-parser": "^7.6.0"
 			}
 		},
 		"eslint-plugin-wdio": {
@@ -1596,9 +1579,9 @@
 			"dev": true
 		},
 		"esquery": {
-			"version": "1.3.1",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
-			"integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+			"integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
 			"dev": true,
 			"requires": {
 				"estraverse": "^5.1.0"
@@ -4954,16 +4937,16 @@
 			}
 		},
 		"vue-eslint-parser": {
-			"version": "7.4.1",
-			"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz",
-			"integrity": "sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ==",
+			"version": "7.6.0",
+			"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz",
+			"integrity": "sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==",
 			"dev": true,
 			"requires": {
 				"debug": "^4.1.1",
 				"eslint-scope": "^5.0.0",
 				"eslint-visitor-keys": "^1.1.0",
 				"espree": "^6.2.1",
-				"esquery": "^1.0.1",
+				"esquery": "^1.4.0",
 				"lodash": "^4.17.15"
 			},
 			"dependencies": {
@@ -4983,6 +4966,21 @@
 						"acorn-jsx": "^5.2.0",
 						"eslint-visitor-keys": "^1.1.0"
 					}
+				},
+				"esquery": {
+					"version": "1.4.0",
+					"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+					"integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+					"dev": true,
+					"requires": {
+						"estraverse": "^5.1.0"
+					}
+				},
+				"estraverse": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+					"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+					"dev": true
 				}
 			}
 		},
diff --git a/package.json b/package.json
index 3b0b3ee..09d71d5 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
 		"test": "grunt test"
 	},
 	"devDependencies": {
-		"eslint-config-wikimedia": "0.18.1",
+		"eslint-config-wikimedia": "0.18.2",
 		"grunt": "1.3.0",
 		"grunt-banana-checker": "0.9.0",
 		"grunt-eslint": "23.0.0",
-- 
2.20.1

$ date
Sun Mar  7 00:49:11 UTC 2021

$ git clone file:///srv/git/mediawiki-extensions-Jade.git repo --depth=1 -b master
Cloning into 'repo'...

$ git config user.name libraryupgrader

$ git config user.email tools.libraryupgrader@tools.wmflabs.org

$ git submodule update --init

$ grr init
Installed commit-msg hook.

$ git show-ref refs/heads/master
444c6a95106326c00bdcdd9f43c83d54adccb088 refs/heads/master

$ composer install
Loading composer repositories with package information
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2 is now available and you should upgrade. See https://getcomposer.org/2
Updating dependencies (including require-dev)
Package operations: 32 installs, 0 updates, 0 removals
  - Installing squizlabs/php_codesniffer (3.5.8): Loading from cache
  - Installing composer/spdx-licenses (1.5.5): Loading from cache
  - Installing composer/semver (3.2.4): Loading from cache
  - Installing mediawiki/mediawiki-codesniffer (v35.0.0): Loading from cache
  - Installing symfony/polyfill-php80 (v1.22.1): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.22.1): Loading from cache
  - Installing symfony/polyfill-intl-normalizer (v1.22.1): Loading from cache
  - Installing symfony/polyfill-intl-grapheme (v1.22.1): Loading from cache
  - Installing symfony/polyfill-ctype (v1.22.1): Loading from cache
  - Installing symfony/string (v5.2.4): Loading from cache
  - Installing psr/container (1.1.1): Loading from cache
  - Installing symfony/service-contracts (v2.2.0): Loading from cache
  - Installing symfony/polyfill-php73 (v1.22.1): Loading from cache
  - Installing symfony/console (v5.2.4): Loading from cache
  - Installing psr/log (1.1.3): Loading from cache
  - Installing sabre/event (5.1.2): Loading from cache
  - Installing netresearch/jsonmapper (v2.1.0): Loading from cache
  - Installing microsoft/tolerant-php-parser (v0.0.23): Loading from cache
  - Installing phpdocumentor/reflection-common (2.2.0): Loading from cache
  - Installing webmozart/assert (1.9.1): Loading from cache
  - Installing phpdocumentor/type-resolver (1.4.0): Loading from cache
  - Installing phpdocumentor/reflection-docblock (5.2.2): Loading from cache
  - Installing felixfbecker/advanced-json-rpc (v3.2.0): Loading from cache
  - Installing composer/xdebug-handler (1.4.5): Loading from cache
  - Installing phan/phan (3.2.6): Loading from cache
  - Installing mediawiki/phan-taint-check-plugin (3.2.1): Loading from cache
  - Installing mediawiki/mediawiki-phan-config (0.10.6): Loading from cache
  - Installing mediawiki/minus-x (1.1.1): Loading from cache
  - Installing php-parallel-lint/php-console-color (v0.3): Loading from cache
  - Installing php-parallel-lint/php-console-highlighter (v0.5): Loading from cache
  - Installing php-parallel-lint/php-parallel-lint (v1.2.0): Loading from cache
  - Installing justinrainbow/json-schema (5.2.10): Loading from cache
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
phan/phan suggests installing ext-ast (Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.8+ is recommended.)
Writing lock file
Generating autoload files
12 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Upgrading n:eslint-config-wikimedia from 0.18.1 -> 0.18.2
$ npm install

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

added 577 packages from 344 contributors and audited 577 packages in 45.67s

68 packages are looking for funding
  run `npm fund` for details

found 1 moderate severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

$ npm update eslint -depth 10
+ eslint@7.21.0
added 1 package from 1 contributor, updated 3 packages and audited 578 packages in 41.022s

65 packages are looking for funding
  run `npm fund` for details

found 1 moderate severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

$ npm install grunt-eslint@23.0.0 --save-exact
+ grunt-eslint@23.0.0
updated 1 package and audited 578 packages in 5.445s

68 packages are looking for funding
  run `npm fund` for details

found 1 moderate severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

$ ./node_modules/.bin/eslint i18n/az.json package.json i18n/tr.json i18n/api/en.json i18n/yue.json i18n/es.json i18n/sh.json tests/data/invalid_judgment_additional_properties.json i18n/inh.json i18n/szy.json i18n/tly.json tests/data/invalid_judgment_none_preferred.json i18n/fy.json i18n/ro.json i18n/es-formal.json i18n/api/pt.json resources/widgets/ProposalWidget.js tests/data/invalid_judgment_bad_contentquality_data.json i18n/la.json i18n/jv.json i18n/bn.json i18n/te.json i18n/api/sh.json i18n/vec.json i18n/api/mni.json i18n/fa.json i18n/eu.json i18n/ps.json i18n/ka.json i18n/bg.json i18n/io.json tests/data/invalid_judgment_bad_user_ip.json i18n/be-tarask.json resources/ext.Jade.entityView.js tests/data/invalid_judgment_bad_score_data.json i18n/ce.json i18n/gd.json i18n/or.json i18n/lmo.json resources/widgets/EndorsementWidget.js i18n/api/roa-tara.json i18n/api/sat.json i18n/dsb.json i18n/api/pt-br.json i18n/api/ms.json package-lock.json tests/data/invalid_judgment_bad_type.json i18n/mwl.json i18n/api/ru.json i18n/fo.json i18n/sv.json i18n/ja.json i18n/diq.json i18n/cy.json i18n/api/tr.json i18n/api/zh-hant.json i18n/de.json resources/api/DeleteProposalClient.js i18n/ia.json i18n/sdc.json i18n/pa.json i18n/sr-ec.json resources/api/ProposeClient.js i18n/sd.json i18n/api/ast.json i18n/zh-hant.json resources/widgets/DiffWidget.js resources/dialogs/PromoteDialog.js tests/data/valid_revision_judgment_v2.json i18n/oc.json i18n/api/fr.json i18n/ug-arab.json i18n/frr.json i18n/gu.json tests/data/invalid_judgment_missing_required.json i18n/api/zh-hans.json i18n/lki.json resources/api/MoveEndorsementClient.js i18n/mr.json i18n/os.json i18n/ne.json i18n/sa.json i18n/tcy.json i18n/af.json i18n/hsb.json i18n/ui/qqq.json tests/data/valid_diff_judgment.json i18n/hy.json i18n/be.json i18n/ui/en.json tests/data/invalid_judgment_bad_score_schema.json i18n/gsw.json i18n/bho.json i18n/api/mk.json i18n/xsy.json resources/api/client.js resources/widgets/EndorsementListWidget.js Gruntfile.js i18n/is.json i18n/api/es.json i18n/pt-br.json i18n/ilo.json i18n/fit.json tests/data/invalid_judgment_additional_properties2.json i18n/sl.json resources/api/index.js i18n/sr-el.json tests/data/invalid_judgment_empty_endorsements.json i18n/lv.json resources/dialogs/index.js i18n/ur.json i18n/ru.json i18n/ast.json i18n/en.json composer.json i18n/lb.json i18n/api/ca.json resources/api/PromoteClient.js i18n/pt.json i18n/hu.json i18n/hr.json i18n/api/ko.json i18n/el.json i18n/khw.json i18n/bqi.json i18n/he.json resources/dialogs/MoveEndorsementDialog.js i18n/it.json resources/api/UpdateEndorsementClient.js i18n/kw.json i18n/lzh.json resources/dialogs/DeleteProposalDialog.js i18n/pnb.json i18n/ksw.json extension.json i18n/ml.json i18n/ku-latn.json i18n/nap.json i18n/bs.json i18n/bcl.json i18n/api/sv.json resources/widgets/FacetWidget.js i18n/api/sr-ec.json tests/data/invalid_judgment_bad_user_ip2.json i18n/skr-arab.json resources/widgets/FacetListWidget.js i18n/ami.json i18n/lt.json i18n/gl.json tests/data/invalid_judgment_two_preferred.json i18n/da.json tests/data/invalid_judgment_disallowed_score_schema.json i18n/gcr.json i18n/zh-hans.json tests/data/invalid_judgment_additional_properties3.json i18n/lij.json i18n/kk-cyrl.json i18n/api/lb.json i18n/gom-latn.json i18n/api/he.json i18n/api/nb.json i18n/vep.json resources/api/EndorseClient.js resources/widgets/ProposalListWidget.js i18n/eo.json i18n/mnw.json i18n/ba.json i18n/li.json i18n/api/sco.json jsonschema/judgment/v1.json i18n/br.json i18n/api/de.json i18n/tay.json tests/data/valid_revision_judgment.json i18n/lg.json i18n/api/el.json i18n/mk.json resources/dialogs/EndorseDialog.js i18n/tg-cyrl.json i18n/so.json i18n/sli.json i18n/yi.json i18n/awa.json resources/dialogs/ProposeNewLabelDialog.js i18n/fr.json i18n/api/qqq.json i18n/scn.json i18n/api/bcl.json i18n/nds-nl.json i18n/ban.json i18n/nb.json i18n/ko.json i18n/api/eo.json i18n/olo.json resources/widgets/index.js i18n/krc.json i18n/th.json i18n/roa-tara.json i18n/nl.json i18n/id.json i18n/sat.json i18n/kjp.json i18n/trv.json i18n/vi.json i18n/ta.json i18n/ckb.json i18n/km.json i18n/sk.json resources/dialogs/DeleteEndorsementDialog.js i18n/pl.json i18n/ca.json jsonschema/proposal/v2.json i18n/nn.json i18n/api/uk.json i18n/qqq.json i18n/mni.json i18n/cs.json i18n/my.json jsonschema/proposal/v1.json resources/api/UpdateProposalClient.js i18n/api/ar.json i18n/fi.json i18n/en-gb.json i18n/et.json resources/api/DeleteEndorsementClient.js i18n/uk.json i18n/hil.json i18n/ksh.json i18n/csb.json i18n/mai.json i18n/tt-cyrl.json i18n/sms.json i18n/ar.json i18n/hi.json tests/data/valid_editquality_entity.json i18n/szl.json i18n/as.json i18n/ms.json --fix

/src/repo/resources/api/EndorseClient.js
  11:0  warning  Expected JSDoc block to be aligned  jsdoc/check-alignment

/src/repo/resources/api/client.js
  77:2  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/resources/ext.Jade.entityView.js
  28:0  warning  Missing JSDoc @param "item" type  jsdoc/require-param-type

/src/repo/resources/widgets/EndorsementWidget.js
   51:0  warning  Missing JSDoc @param "userId" type                                    jsdoc/require-param-type
  140:0  warning  Missing JSDoc @param "userId" type                                    jsdoc/require-param-type
  192:0  warning  Missing JSDoc @param "date" type                                      jsdoc/require-param-type
  317:2  warning  Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1  compat/compat

/src/repo/resources/widgets/ProposalWidget.js
  332:2  warning  Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1  compat/compat

✖ 8 problems (0 errors, 8 warnings)
  0 errors and 1 warning potentially fixable with the `--fix` option.


$ ./node_modules/.bin/eslint i18n/az.json package.json i18n/tr.json i18n/api/en.json i18n/yue.json i18n/es.json i18n/sh.json tests/data/invalid_judgment_additional_properties.json i18n/inh.json i18n/szy.json i18n/tly.json tests/data/invalid_judgment_none_preferred.json i18n/fy.json i18n/ro.json i18n/es-formal.json i18n/api/pt.json resources/widgets/ProposalWidget.js tests/data/invalid_judgment_bad_contentquality_data.json i18n/la.json i18n/jv.json i18n/bn.json i18n/te.json i18n/api/sh.json i18n/vec.json i18n/api/mni.json i18n/fa.json i18n/eu.json i18n/ps.json i18n/ka.json i18n/bg.json i18n/io.json tests/data/invalid_judgment_bad_user_ip.json i18n/be-tarask.json resources/ext.Jade.entityView.js tests/data/invalid_judgment_bad_score_data.json i18n/ce.json i18n/gd.json i18n/or.json i18n/lmo.json resources/widgets/EndorsementWidget.js i18n/api/roa-tara.json i18n/api/sat.json i18n/dsb.json i18n/api/pt-br.json i18n/api/ms.json package-lock.json tests/data/invalid_judgment_bad_type.json i18n/mwl.json i18n/api/ru.json i18n/fo.json i18n/sv.json i18n/ja.json i18n/diq.json i18n/cy.json i18n/api/tr.json i18n/api/zh-hant.json i18n/de.json resources/api/DeleteProposalClient.js i18n/ia.json i18n/sdc.json i18n/pa.json i18n/sr-ec.json resources/api/ProposeClient.js i18n/sd.json i18n/api/ast.json i18n/zh-hant.json resources/widgets/DiffWidget.js resources/dialogs/PromoteDialog.js tests/data/valid_revision_judgment_v2.json i18n/oc.json i18n/api/fr.json i18n/ug-arab.json i18n/frr.json i18n/gu.json tests/data/invalid_judgment_missing_required.json i18n/api/zh-hans.json i18n/lki.json resources/api/MoveEndorsementClient.js i18n/mr.json i18n/os.json i18n/ne.json i18n/sa.json i18n/tcy.json i18n/af.json i18n/hsb.json i18n/ui/qqq.json tests/data/valid_diff_judgment.json i18n/hy.json i18n/be.json i18n/ui/en.json tests/data/invalid_judgment_bad_score_schema.json i18n/gsw.json i18n/bho.json i18n/api/mk.json i18n/xsy.json resources/api/client.js resources/widgets/EndorsementListWidget.js Gruntfile.js i18n/is.json i18n/api/es.json i18n/pt-br.json i18n/ilo.json i18n/fit.json tests/data/invalid_judgment_additional_properties2.json i18n/sl.json resources/api/index.js i18n/sr-el.json tests/data/invalid_judgment_empty_endorsements.json i18n/lv.json resources/dialogs/index.js i18n/ur.json i18n/ru.json i18n/ast.json i18n/en.json composer.json i18n/lb.json i18n/api/ca.json resources/api/PromoteClient.js i18n/pt.json i18n/hu.json i18n/hr.json i18n/api/ko.json i18n/el.json i18n/khw.json i18n/bqi.json i18n/he.json resources/dialogs/MoveEndorsementDialog.js i18n/it.json resources/api/UpdateEndorsementClient.js i18n/kw.json i18n/lzh.json resources/dialogs/DeleteProposalDialog.js i18n/pnb.json i18n/ksw.json extension.json i18n/ml.json i18n/ku-latn.json i18n/nap.json i18n/bs.json i18n/bcl.json i18n/api/sv.json resources/widgets/FacetWidget.js i18n/api/sr-ec.json tests/data/invalid_judgment_bad_user_ip2.json i18n/skr-arab.json resources/widgets/FacetListWidget.js i18n/ami.json i18n/lt.json i18n/gl.json tests/data/invalid_judgment_two_preferred.json i18n/da.json tests/data/invalid_judgment_disallowed_score_schema.json i18n/gcr.json i18n/zh-hans.json tests/data/invalid_judgment_additional_properties3.json i18n/lij.json i18n/kk-cyrl.json i18n/api/lb.json i18n/gom-latn.json i18n/api/he.json i18n/api/nb.json i18n/vep.json resources/api/EndorseClient.js resources/widgets/ProposalListWidget.js i18n/eo.json i18n/mnw.json i18n/ba.json i18n/li.json i18n/api/sco.json jsonschema/judgment/v1.json i18n/br.json i18n/api/de.json i18n/tay.json tests/data/valid_revision_judgment.json i18n/lg.json i18n/api/el.json i18n/mk.json resources/dialogs/EndorseDialog.js i18n/tg-cyrl.json i18n/so.json i18n/sli.json i18n/yi.json i18n/awa.json resources/dialogs/ProposeNewLabelDialog.js i18n/fr.json i18n/api/qqq.json i18n/scn.json i18n/api/bcl.json i18n/nds-nl.json i18n/ban.json i18n/nb.json i18n/ko.json i18n/api/eo.json i18n/olo.json resources/widgets/index.js i18n/krc.json i18n/th.json i18n/roa-tara.json i18n/nl.json i18n/id.json i18n/sat.json i18n/kjp.json i18n/trv.json i18n/vi.json i18n/ta.json i18n/ckb.json i18n/km.json i18n/sk.json resources/dialogs/DeleteEndorsementDialog.js i18n/pl.json i18n/ca.json jsonschema/proposal/v2.json i18n/nn.json i18n/api/uk.json i18n/qqq.json i18n/mni.json i18n/cs.json i18n/my.json jsonschema/proposal/v1.json resources/api/UpdateProposalClient.js i18n/api/ar.json i18n/fi.json i18n/en-gb.json i18n/et.json resources/api/DeleteEndorsementClient.js i18n/uk.json i18n/hil.json i18n/ksh.json i18n/csb.json i18n/mai.json i18n/tt-cyrl.json i18n/sms.json i18n/ar.json i18n/hi.json tests/data/valid_editquality_entity.json i18n/szl.json i18n/as.json i18n/ms.json -f json
[{"filePath":"/src/repo/Gruntfile.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/composer.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/extension.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/af.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ami.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/ar.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/ast.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/bcl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/ca.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/de.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/el.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/en.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/eo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/es.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/fr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/he.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/ko.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/lb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/mk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/mni.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/ms.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/nb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/pt-br.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/pt.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/qqq.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/roa-tara.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/ru.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/sat.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/sco.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/sh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/sr-ec.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/sv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/tr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/uk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/zh-hans.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/api/zh-hant.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/as.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ast.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/awa.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/az.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ba.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ban.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bcl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/be.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bg.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bho.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bqi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/br.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/bs.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ca.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ce.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ckb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cs.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/csb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/cy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/da.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/de.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/diq.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/dsb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/el.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en-gb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/en.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/eo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es-formal.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/es.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/et.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/eu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fa.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fit.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/frr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/fy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gcr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gd.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gom-latn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gsw.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/gu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/he.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hil.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hsb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hu.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/hy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/id.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ilo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/inh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/io.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/is.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/it.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ja.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/jv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ka.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/khw.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kjp.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kk-cyrl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/km.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/krc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ksh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ksw.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ku-latn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/kw.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/la.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lg.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/li.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lij.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lki.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lmo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lt.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/lzh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mai.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ml.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mni.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mnw.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/mwl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/my.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nap.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nds-nl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ne.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/nn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/oc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/olo.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/or.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/os.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pa.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pnb.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ps.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ro.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/roa-tara.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ru.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sa.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sat.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/scn.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sd.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sdc.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sh.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sli.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sms.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/so.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-ec.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sr-el.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/szl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/szy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ta.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tay.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tcy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/te.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tg-cyrl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/th.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tly.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/trv.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/tt-cyrl.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ug-arab.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ui/en.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ui/qqq.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/ur.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/vec.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/vep.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/vi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/xsy.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yi.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/yue.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/jsonschema/judgment/v1.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/jsonschema/proposal/v1.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/jsonschema/proposal/v2.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package-lock.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/package.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/DeleteEndorsementClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/DeleteProposalClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/EndorseClient.js","messages":[{"ruleId":"jsdoc/check-alignment","severity":1,"message":"Expected JSDoc block to be aligned.","line":11,"column":null,"nodeType":"Block","endLine":11,"endColumn":null,"fix":{"range":[15,335],"text":"/**\n * Api client for endorsing a proposal / jadeendorse.\n *\n * @extends jade.api.BaseClient\n *\n * @class\n * @classdesc Api client for endorsing a proposal.\n * @requires jade.api.BaseClient\n \n * @license GPL-3.0-or-later\n * @author Andy Craze < acraze@wikimedia.org >\n * @author Kevin Bazira < kbazira@wikimedia.org >\n */"}}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":1,"source":"'use strict';\n\n/**\n * Api client for endorsing a proposal / jadeendorse.\n *\n * @extends jade.api.BaseClient\n *\n * @class\n * @classdesc Api client for endorsing a proposal.\n * @requires jade.api.BaseClient\n\n * @license GPL-3.0-or-later\n * @author Andy Craze < acraze@wikimedia.org >\n * @author Kevin Bazira < kbazira@wikimedia.org >\n */\n\nvar BaseClient = require( './client.js' ),\n\tEndorseClient = function EndorseClient() {\n\t\tEndorseClient.super.apply( this, arguments );\n\t};\n\nOO.inheritClass( EndorseClient, BaseClient );\n\nEndorseClient.prototype.moduleName = 'jadeendorse';\n\n/**\n * Create an object of cleaned params that are expected by api module.\n *\n * @method buildParams\n * @description Create an object of cleaned params that are expected by api module.\n * @param {string} actionName - The name of the Action Api module to be executed.\n * @param {Object} data - The form data to be sent to api module.\n * @return {Object} Cleaned params that are expected by api module.\n */\nEndorseClient.prototype.buildParams = function ( actionName, data ) {\n\treturn {\n\t\taction: actionName,\n\t\ttitle: data.title,\n\t\tentitydata: data.entitydata,\n\t\tfacet: data.facet,\n\t\tlabeldata: data.labeldata,\n\t\tnomove: true,\n\t\tendorsementorigin: data.endorsementorigin || 'mw-api',\n\t\tendorsementcomment: data.endorsementcomment,\n\t\tformatversion: 2\n\t};\n};\n\nmodule.exports = EndorseClient;\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/MoveEndorsementClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/PromoteClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/ProposeClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/UpdateEndorsementClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/UpdateProposalClient.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/client.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":77,"column":2,"nodeType":"Block","endLine":85,"endColumn":5}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * Basic client for calling Jade api modules.\n *\n * @requires jade.widgets.FacetListWidget\n *\n * @class\n * @classdesc Basic client for calling Jade api modules.\n * @license GPL-3.0-or-later\n * @author Andy Craze < acraze@wikimedia.org >\n * @author Kevin Bazira < kbazira@wikimedia.org >\n */\n\nvar BaseClient = function BaseClient() {\n\n\tvar moduleName = this.moduleName;\n\tvar FacetListWidget = require( 'jade.widgets' ).FacetListWidget;\n\n\t/**\n\t * Check whether current page is a secondary integration page.\n\t *\n\t * @method isSecondaryIntegrationPage\n\t * @description Check whether current page is a secondary integration page.\n\t * @return {boolean} Response on whether current page is or is not a secondary integration.\n\t */\n\tvar isSecondaryIntegrationPage = function () {\n\t\treturn [ 'specialDiffPage', 'undoEditPage', 'rollbackPage' ]\n\t\t\t.indexOf( mw.config.values.jadeSecondaryIntegrationPage ) > -1;\n\t};\n\n\t/**\n\t * Close open window manager modals.\n\t *\n\t * @method closeOpenWindowManagerModals\n\t * @description Close any open window manager modals.\n\t */\n\tvar closeOpenWindowManagerModals = function () {\n\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\tif ( $( '.oo-ui-windowManager-modal' ).length ) {\n\t\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t\t$( '.oo-ui-windowManager-modal' ).remove();\n\t\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t\t$( 'html, body' ).css( {\n\t\t\t\toverflow: 'auto',\n\t\t\t\theight: 'auto'\n\t\t\t} );\n\t\t}\n\t};\n\n\t/**\n\t * Update Jade entity data.\n\t *\n\t * @method updateJadeEntityData\n\t * @description Update Jade entity data in the mw.config object.\n\t * @param {Object} data - The latest Jade entity data.\n\t */\n\tvar updateJadeEntityData = function ( data ) {\n\t\tmw.config.values.entityData = data;\n\t};\n\n\t/**\n\t * Update Jade elements on secondary integration page.\n\t *\n\t * @method updateJadeElementsOnSecondaryIntegrationPage\n\t * @description Update Jade elements that are on a secondary integration page.\n\t * @param {Object} data - The latest Jade entity data.\n\t */\n\tvar updateJadeElementsOnSecondaryIntegrationPage = function ( data ) {\n\t\tvar secondaryIntegrationPageFacetsList = new FacetListWidget( {\n\t\t\tentityData: data\n\t\t} );\n\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t$( '#jade-secondary-integration' ).html( secondaryIntegrationPageFacetsList.$element );\n\t};\n\n\t/**\n\t * Reload the page if no error found in data, otherwise return data.\n\t *\n\t * @callback requestCallback\n\t * @method requestCallback\n\t * @description Reload page or return error data.\n\t * @param {Object} data - The data returned from api response.\n\t * @param {Object} err\n\t */\n\tthis.requestCallback = function ( data, err ) {\n\t\tif ( !data.error ) {\n\t\t\tvar bubbleNotificationMessageKey = moduleName.replace( 'jade', 'jade-' );\n\t\t\tif ( isSecondaryIntegrationPage() ) {\n\t\t\t\tcloseOpenWindowManagerModals();\n\t\t\t\tupdateJadeEntityData( data.data );\n\t\t\t\tupdateJadeElementsOnSecondaryIntegrationPage( data.data );\n\t\t\t\tmw.notify( mw.message( bubbleNotificationMessageKey ), {\n\t\t\t\t\tautoHide: true,\n\t\t\t\t\tautoHideSeconds: 6,\n\t\t\t\t\ttype: 'info'\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tsessionStorage.loadBubbleNotificationAfterPageLoad = true;\n\t\t\t\tsessionStorage.bubbleNotificationMessage = bubbleNotificationMessageKey;\n\t\t\t\tlocation.reload();\n\t\t\t}\n\t\t} else {\n\t\t\treturn data;\n\t\t}\n\t};\n\n\t/**\n\t * Execute call to MW api.\n\t *\n\t * @method execute\n\t * @description Execute call to MW api.\n\t * @param {Object} params - The form data to be sent to api module.\n\t * @return {Promise} Promise object represents the api response.\n\t */\n\tthis.execute = function ( params ) {\n\t\tvar cleanedParams = this.buildParams( moduleName, params );\n\t\tvar api = new mw.Api();\n\t\tvar res = api.postWithEditToken( cleanedParams ).then( this.requestCallback )\n\t\t\t.catch( function ( err ) { return JSON.stringify( err ); } );\n\t\treturn res;\n\t};\n\n};\n\nBaseClient.prototype.moduleName = '';\n\n/**\n * Create an object of cleaned params that are expected by api module.\n *\n * @method buildParams\n * @description Create an object of cleaned params that are expected by api module.\n * @param {string} actionName - The name of the Action Api module to be executed.\n * @param {Object} data - The form data to be sent to api module.\n * @return {Object} Cleaned params that are expected by api module.\n */\nBaseClient.prototype.buildParams = function ( actionName, data ) {\n\treturn {\n\t\taction: actionName\n\t};\n};\n\nmodule.exports = BaseClient;\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/api/index.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/DeleteEndorsementDialog.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/DeleteProposalDialog.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/EndorseDialog.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/MoveEndorsementDialog.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/PromoteDialog.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/ProposeNewLabelDialog.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/dialogs/index.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/ext.Jade.entityView.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"item\" type.","line":28,"column":null,"nodeType":"Block","endLine":28,"endColumn":null}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Render Jade Entity page content.\n *\n * @requires jade.widgets.DiffWidget\n * @requires jade.widgets.FacetListWidget\n *\n * @license GPL-3.0-or-later\n * @author Andy Craze < acraze@wikimedia.org >\n * @author Kevin Bazira < kbazira@wikimedia.org >\n */\n$( function () {\n\t'use strict';\n\tvar DiffWidget = require( 'jade.widgets' ).DiffWidget;\n\tvar FacetListWidget = require( 'jade.widgets' ).FacetListWidget;\n\n\t// Check if entity page does not exist yet.\n\t// eslint-disable-next-line no-jquery/no-global-selector\n\tif ( $( '.noarticletext' )[ 0 ] ) {\n\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t$( '.noarticletext' ).hide();\n\t}\n\n\t/**\n\t * Remove Jade SessionStorage item if it exists.\n\t *\n\t * @method removeJadeSessionStorageItem\n\t * @description Remove Jade SessionStorage item.\n\t * @param item\n\t */\n\tthis.removeJadeSessionStorageItem = function ( item ) {\n\t\tif ( sessionStorage.getItem( item ) ) {\n\t\t\tsessionStorage.removeItem( item );\n\t\t}\n\t};\n\n\t// Show bubble notification based on sessionStorage data\n\tif ( sessionStorage.loadBubbleNotificationAfterPageLoad ) {\n\t\tmw.notify( mw.message( sessionStorage.bubbleNotificationMessage ), {\n\t\t\tautoHide: true,\n\t\t\tautoHideSeconds: 6,\n\t\t\ttype: 'info'\n\t\t} );\n\t\tthis.removeJadeSessionStorageItem( 'loadBubbleNotificationAfterPageLoad' );\n\t\tthis.removeJadeSessionStorageItem( 'bubbleNotificationMessage' );\n\t}\n\n\tthis.diff = new DiffWidget();\n\n\t/**\n\t * Load entityData sent from server.\n\t * If entityData is empty, then render an empty Jade entity.\n\t *\n\t * @method loadEntityData\n\t * @description Load entityData sent from server.\n\t * @return {Object} entity data\n\t */\n\tthis.loadEntityData = function () {\n\t\tvar data = mw.config.get( 'entityData' );\n\t\tif ( Object.keys( data ).length === 0 || data === '{}' ) {\n\t\t\t// entityData is empty, so render an empty Jade entity.\n\t\t\tdata = { facets: { editquality: { proposals: [] } } };\n\t\t}\n\t\treturn data;\n\t};\n\n\tthis.facetsList = new FacetListWidget( {\n\t\tentityData: this.loadEntityData()\n\t} );\n\n\tthis.stack = new OO.ui.StackLayout( {\n\t\titems: [\n\t\t\tnew OO.ui.PanelLayout( {\n\t\t\t\tclasses: [ 'jade-entity-diff-panel' ],\n\t\t\t\t$content: this.diff.$element,\n\t\t\t\tpadded: true,\n\t\t\t\tscrollable: true,\n\t\t\t\texpanded: true\n\t\t\t} )\n\t\t],\n\t\tcontinuous: true,\n\t\tclasses: [ 'jade-entity-view-stack' ]\n\t} );\n\n\tvar $hrElement = $( '<hr>' ).addClass( 'jade-entity-view-split' );\n\tvar jadeSecondaryIntegrationPage = mw.config.get( 'jadeSecondaryIntegrationPage' );\n\tvar $jadeSecondaryIntegrationElement = $( '<div>' )\n\t\t// The following classes are used here:\n\t\t// * jade-secondaryIntegrationPage\n\t\t// * jade-specialDiffPage\n\t\t// * jade-undoEditPage\n\t\t// * jade-rollbackPage\n\t\t.addClass( 'jade-secondaryIntegrationPage jade-' + jadeSecondaryIntegrationPage )\n\t\t.attr( 'id', 'jade-secondary-integration' );\n\tvar $viewportMeta = $( '<meta>' )\n\t\t.attr( {\n\t\t\tname: 'viewport',\n\t\t\tcontent: 'width=device-width, initial-scale=1'\n\t\t} );\n\t// eslint-disable-next-line no-jquery/no-global-selector\n\t$( 'head' ).append( $viewportMeta );\n\n\tif ( jadeSecondaryIntegrationPage === 'specialDiffPage' ) {\n\t\t$jadeSecondaryIntegrationElement\n\t\t\t.insertBefore( '#mw-oldid' )\n\t\t\t.append( this.facetsList.$element );\n\t} else if ( jadeSecondaryIntegrationPage === 'undoEditPage' ) {\n\t\t$jadeSecondaryIntegrationElement\n\t\t\t.insertAfter( '#wikiDiff' )\n\t\t\t.append( this.facetsList.$element );\n\t} else if ( jadeSecondaryIntegrationPage === 'rollbackPage' ) {\n\t\t$jadeSecondaryIntegrationElement\n\t\t\t.insertAfter( '#mw-returnto' )\n\t\t\t.append( this.facetsList.$element, $hrElement );\n\t} else {\n\t\t// eslint-disable-next-line no-jquery/no-global-selector\n\t\t$( '#mw-content-text' ).append(\n\t\t\tthis.stack.$element,\n\t\t\t$hrElement,\n\t\t\tthis.facetsList.$element\n\t\t);\n\t}\n\n} );\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/DiffWidget.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/EndorsementListWidget.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/EndorsementWidget.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"userId\" type.","line":51,"column":null,"nodeType":"Block","endLine":51,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"userId\" type.","line":140,"column":null,"nodeType":"Block","endLine":140,"endColumn":null},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"date\" type.","line":192,"column":null,"nodeType":"Block","endLine":192,"endColumn":null},{"ruleId":"compat/compat","severity":1,"message":"Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1","line":317,"column":2,"nodeType":"MemberExpression","endLine":317,"endColumn":17}],"errorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * Widget for a single proposal endorsement.\n *\n * @extends OO.ui.OptionWidget\n *\n * @constructor\n * @param {Object} [config]\n * @cfg {jQuery} $element\n * @cfg {Object} [endorsement] Object containing endorsement data.\n * @cfg {Object} [proposal] Object containing proposal data.\n * @cfg {Object} [numProposal] integer describing the total number of proposals\n * in this facet.\n *\n * @classdesc Widget for a single proposal endorsement.\n * @requires jade.api.UpdateEndorsementClient\n * @requires jade.dialogs.MoveEndorsementDialog\n * @requires jade.dialogs.MoveEndorsementDialog\n *\n * @license GPL-3.0-or-later\n * @author Andy Craze < acraze@wikimedia.org >\n * @author Kevin Bazira < kbazira@wikimedia.org >\n */\n\nvar UpdateEndorsementClient = require( 'jade.api' ).UpdateEndorsementClient;\n\nvar MoveEndorsementDialog = require( 'jade.dialogs' ).MoveEndorsementDialog,\n\tDeleteEndorsementDialog = require( 'jade.dialogs' ).DeleteEndorsementDialog;\n\nvar EndorsementWidget = function ( config ) {\n\tconfig = config || {};\n\tEndorsementWidget.parent.call( this, config );\n\n\tthis.endorsement = config.endorsement;\n\tthis.proposal = config.proposal;\n\tthis.proposals = config.proposals;\n\tthis.numProposals = config.numProposal;\n\tthis.menuEdit = mw.message( 'jade-ui-menu-edit' ).text();\n\tthis.menuMove = mw.message( 'jade-ui-menu-move' ).text();\n\tthis.menuDelete = mw.message( 'jade-ui-menu-delete' ).text();\n\tthis.editButton = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-endorsementMenu-edit' ],\n\t\tdata: this,\n\t\tlabel: this.menuEdit\n\t} );\n\n\t/**\n\t * @method userEndorsed\n\t * @description Check if an endorsement author id belongs to current user.\n\t * @param userId {number} user id of endorsement author.\n\t * @return {boolean} If true, then the currentUser matches the userId.\n\t */\n\tthis.userEndorsed = function ( userId ) {\n\t\tvar endorsed = false;\n\t\tvar currentUser = mw.config.values.wgUserId;\n\t\tif ( userId === currentUser ) {\n\t\t\tendorsed = true;\n\t\t}\n\t\treturn endorsed;\n\t};\n\tthis.moveButton = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-endorsementMenu-move' ],\n\t\tdata: this,\n\t\tlabel: this.menuMove,\n\t\tdisabled: !( this.numProposals > 1 && this.userEndorsed( this.endorsement.author.id ) )\n\t} );\n\tthis.deleteButton = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-endorsementMenu-delete' ],\n\t\tdata: this,\n\t\tlabel: this.menuDelete\n\t} );\n\tthis.menuStack = new OO.ui.SelectWidget( {\n\t\titems: [ this.editButton, this.moveButton, this.deleteButton ],\n\t\tclasses: [ 'jade-endorsementWidget-endorsementMenu' ]\n\t} );\n\tthis.menuStack.on( 'choose', function ( cmd ) {\n\t\tvar windowManager = new OO.ui.WindowManager();\n\t\tvar processDialog;\n\t\tif ( cmd.label === cmd.data.menuDelete ) {\n\t\t\t$( document.body ).append( windowManager.$element );\n\t\t\t// Create a new dialog window.\n\t\t\tprocessDialog = new DeleteEndorsementDialog( {\n\t\t\t\tsize: 'large',\n\t\t\t\tproposal: cmd.data.proposal,\n\t\t\t\tendorsement: cmd.data.endorsement\n\t\t\t} );\n\n\t\t\t// Add windows to window manager using the addWindows() method.\n\t\t\twindowManager.addWindows( [ processDialog ] );\n\n\t\t\t// Open the window.\n\t\t\twindowManager.openWindow( processDialog );\n\t\t} else if ( cmd.label === cmd.data.menuMove ) {\n\t\t\t$( document.body ).append( windowManager.$element );\n\t\t\t// Create a new dialog window.\n\t\t\tprocessDialog = new MoveEndorsementDialog( {\n\t\t\t\tsize: 'large',\n\t\t\t\tproposal: cmd.data.proposal,\n\t\t\t\tendorsement: cmd.data.endorsement,\n\t\t\t\tproposals: cmd.data.proposals\n\t\t\t} );\n\n\t\t\t// Add windows to window manager using the addWindows() method.\n\t\t\twindowManager.addWindows( [ processDialog ] );\n\n\t\t\t// Open the window.\n\t\t\twindowManager.openWindow( processDialog );\n\t\t} else if ( cmd.label === cmd.data.menuEdit ) {\n\t\t\tcmd.data.menuButton.toggle();\n\t\t\tcmd.data.commentLabel.toggle();\n\t\t\tcmd.data.editForm.toggle();\n\t\t\tcmd.data.editBox.focus();\n\t\t}\n\t} );\n\tthis.commentLabel = new OO.ui.LabelWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-comment' ],\n\t\tlabel: $( this.endorsement.commentWithParsedWikitext )\n\t} );\n\tvar userPageMissing = function ( pageTitle ) {\n\t\tvar params = {\n\t\t\t\taction: 'query',\n\t\t\t\ttitles: pageTitle,\n\t\t\t\tprop: 'info',\n\t\t\t\tinprop: 'url|talkid',\n\t\t\t\tformat: 'json'\n\t\t\t},\n\t\t\tapi = new mw.Api();\n\t\treturn api.get( params ).then( function ( data ) {\n\t\t\t// missing or invalid pages have -1 index\n\t\t\treturn !!data.query.pages[ -1 ];\n\t\t} );\n\t};\n\n\t/**\n\t * Retrieve the html markup string for an endorsement author.\n\t *\n\t * @method getUserName\n\t * @description Retrieve the html markup for an endorsement author.\n\t * @param userId {number} user id of endorsement author.\n\t * @return {Promise} Promise object represents html markup string for endorsement author.\n\t */\n\tthis.getUserName = function () {\n\t\tvar params = {\n\t\t\t\taction: 'query',\n\t\t\t\tlist: 'users',\n\t\t\t\tususerids: String( this.endorsement.author.id ),\n\t\t\t\tformat: 'json'\n\t\t\t},\n\t\t\tapi = new mw.Api();\n\t\treturn api.get( params ).then( async function ( data ) {\n\t\t\tvar userName = data.query.users[ 0 ].name;\n\t\t\tvar $baseDiv = $( '<div>' );\n\t\t\tvar userUrl = '/wiki/User:' + userName;\n\t\t\tvar talkUrl = '/wiki/User_talk:' + userName;\n\t\t\tvar contribUrl = '/wiki/Special:Contributions/' + userName;\n\t\t\tvar userLinkClass = ( await userPageMissing( 'User:' + userName ) ) ? 'jade-endorsementWidget-author-missing-userPage' : '';\n\t\t\tvar $user = $( '<a class=\"' + userLinkClass + '\" >' ).attr( 'href', userUrl ).text( userName );\n\t\t\tvar talkLinkClass = ( await userPageMissing( 'User_talk:' + userName ) ) ? 'jade-endorsementWidget-author-missing-userTalkPage' : '';\n\t\t\tvar $talk = $( '<a class=\"' + talkLinkClass + '\" >' ).attr( 'href', talkUrl ).text( 'talk' );\n\t\t\tvar $contrib = $( '<a>' ).attr( 'href', contribUrl ).text( 'contrib' );\n\t\t\t$baseDiv.append( $user ).append( ' (' ).append( $talk ).append( '•' ).append( $contrib ).append( ')' );\n\t\t\treturn $baseDiv;\n\t\t} );\n\t};\n\tthis.authorLabel = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-author' ]\n\t} );\n\n\t/**\n\t * Populate the authorLabel widget with user data.\n\t *\n\t * @async\n\t * @method buildAuthor\n\t * @description Populate the authorLabel widget with user data.\n\t */\n\tthis.buildAuthor = async function () {\n\t\tvar name;\n\t\tif ( this.endorsement.author.ip ) {\n\t\t\tname = this.endorsement.author.ip;\n\t\t\tthis.authorLabel.setLabel( name );\n\t\t} else {\n\t\t\tvar aname = await this.getUserName();\n\t\t\tthis.authorLabel.setLabel( aname );\n\t\t}\n\t};\n\tthis.buildAuthor();\n\n\t/**\n\t * Create UTC date string.\n\t *\n\t * @param date\n\t * @method buildDate\n\t * @description Create UTC date string.\n\t * @return {string} string with date in UTC format.\n\t */\n\tthis.buildDate = function ( date ) {\n\t\tvar local = new Date( date );\n\t\treturn local.toUTCString();\n\t};\n\tthis.createdLabel = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-created' ],\n\t\tlabel: this.buildDate( this.endorsement.created )\n\t} );\n\tthis.infoStack = new OO.ui.SelectWidget( {\n\t\titems: [ this.authorLabel, this.createdLabel ],\n\t\tclasses: [ 'jade-endorsementWidget-infoStack' ]\n\t} );\n\n\tthis.menuButton = new OO.ui.PopupButtonWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-menuBtn' ],\n\t\tframed: false,\n\t\ticon: 'ellipsis',\n\t\tpopup: {\n\t\t\t$content: this.menuStack.$element,\n\t\t\tpadded: true,\n\t\t\tanchor: false,\n\t\t\talign: 'forwards',\n\t\t\twidth: '90px'\n\t\t}\n\t} );\n\tthis.row = new OO.ui.HorizontalLayout( {\n\t\titems: [\n\t\t\tthis.commentLabel,\n\t\t\tthis.infoStack,\n\t\t\tthis.menuButton\n\t\t]\n\t} );\n\n\tthis.editFormSubmit = new OO.ui.ButtonInputWidget( {\n\t\tclasses: [ 'jade-endorsementWidget-editForm-submitBtn' ],\n\t\ttype: 'submit',\n\t\tname: 'publishAndEndorse',\n\t\tlabel: mw.message( 'jade-ui-edit-publish-btn' ).text(),\n\t\tflags: [\n\t\t\t'primary',\n\t\t\t'progressive'\n\t\t],\n\t\talign: 'right'\n\t} );\n\tthis.editFormCancel = new OO.ui.ButtonWidget( {\n\n\t\tframed: false,\n\t\tlabel: mw.message( 'jade-ui-cancel-btn' ).text(),\n\t\tclasses: [\n\t\t\t'jade-endorsementWidget-editForm-cancelBtn'\n\t\t]\n\t} );\n\tthis.editBox = new OO.ui.TextInputWidget( {\n\t\tclasses: [\n\t\t\t'jade-endorsementWidget-editForm-text'\n\t\t],\n\t\tplaceholder: '(optional)',\n\t\tvalue: this.endorsement.comment\n\t} );\n\n\tthis.editForm = new OO.ui.FieldsetLayout( {\n\t\tclasses: [\n\t\t\t'jade-endorsementWidget-editForm'\n\t\t],\n\t\tlabel: null,\n\t\titems: [\n\t\t\tnew OO.ui.FieldLayout( this.editBox, {\n\t\t\t\talign: 'top',\n\t\t\t\tlabel: null\n\t\t\t} ),\n\t\t\tnew OO.ui.FieldLayout( new OO.ui.Widget( {\n\t\t\t\tclasses: [ 'jade-endorsementWidget-editForm-buttons' ],\n\t\t\t\tcontent: [\n\t\t\t\t\tnew OO.ui.HorizontalLayout( {\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\tthis.editFormCancel,\n\t\t\t\t\t\t\tthis.editFormSubmit\n\t\t\t\t\t\t]\n\t\t\t\t\t} )\n\t\t\t\t]\n\t\t\t} ), {\n\t\t\t\talign: 'top',\n\t\t\t\tlabel: null\n\t\t\t} )\n\t\t]\n\t} );\n\tthis.editForm.toggle();\n\n\tthis.$element\n\t\t.addClass( 'jade-endorsementWidget' )\n\t\t.append( this.row.$element )\n\t\t.append( this.editForm.$element );\n\n\tthis.editFormSubmit.connect( this, {\n\t\tclick: 'onSubmitButtonClick'\n\t} );\n\n\tthis.editFormCancel.connect( this, {\n\t\tclick: 'onCancelButtonClick'\n\t} );\n\n};\n\nOO.inheritClass( EndorsementWidget, OO.ui.OptionWidget );\n\n/**\n * Update an endorsement comment using the MW api and reloads the page.\n *\n * @method onSubmitButtonClick\n * @description Updates an endorsement comment on submit button click.\n */\nEndorsementWidget.prototype.onSubmitButtonClick = function () {\n\tvar params = {\n\t\ttitle: mw.config.get( 'entityTitle' ).prefixedText,\n\t\tfacet: 'editquality',\n\t\tlabeldata: JSON.stringify( this.proposal.labeldata ),\n\t\tendorsementcomment: this.editBox.value\n\t};\n\tvar client = new UpdateEndorsementClient( params );\n\tvar res = client.execute( params );\n\tPromise.resolve( res );\n};\n\n/**\n * Hide the endorsement edit form on cancel button click.\n *\n * @method onCancelButtonClick\n * @description Hide the endorsement edit form on cancel button click.\n */\nEndorsementWidget.prototype.onCancelButtonClick = function () {\n\tthis.editForm.toggle();\n\tthis.commentLabel.toggle();\n\tthis.menuButton.toggle();\n};\n\n/**\n * Hide menu widget for use in dialog widget content.\n *\n * @method setDisplayMode\n * @description Hide menu widget for use in dialog widget content.\n */\nEndorsementWidget.prototype.setDisplayMode = function () {\n\tthis.menuButton.toggle();\n};\n\nmodule.exports = EndorsementWidget;\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/FacetListWidget.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/FacetWidget.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/ProposalListWidget.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/ProposalWidget.js","messages":[{"ruleId":"compat/compat","severity":1,"message":"Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1","line":332,"column":2,"nodeType":"MemberExpression","endLine":332,"endColumn":17}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"'use strict';\n\n/**\n * Widget for a single proposal.\n *\n * @extends OO.ui.OptionWidget\n *\n * @constructor\n * @param {Object} [config]\n * @cfg {jQuery} $element\n * @cfg {Object} [creationTime] timestamp showing when proposal was made.\n * @cfg {Object} [proposal] Object containing proposal data.\n * @cfg {Object} [numProposal] integer describing the total number of proposals\n * in this facet.\n *\n * @classdesc Widget for a single proposal.\n * @requires jade.api.UpdateProposalClient\n * @requires jade.dialogs.EndorseDialog\n * @requires jade.dialogs.DeleteProposalDialog\n * @requires jade.dialogs.PromoteDialog\n * @requires jade.widgets.EndorsementListWidget\n * @requires jade.widgets.EndorsementWidget\n *\n * @license GPL-3.0-or-later\n * @author Andy Craze < acraze@wikimedia.org >\n * @author Kevin Bazira < kbazira@wikimedia.org >\n */\n\nvar UpdateProposalClient = require( 'jade.api' ).UpdateProposalClient;\n\nvar EndorsementListWidget = require( './EndorsementListWidget.js' );\nvar EndorsementWidget = require( './EndorsementWidget.js' );\n\nvar EndorseDialog = require( 'jade.dialogs' ).EndorseDialog;\nvar DeleteProposalDialog = require( 'jade.dialogs' ).DeleteProposalDialog;\nvar PromoteDialog = require( 'jade.dialogs' ).PromoteDialog;\n\nvar ProposalWidget = function ( config ) {\n\tconfig = config || {};\n\tProposalWidget.parent.call( this, config );\n\n\tthis.creationTime = config.creationTime;\n\tthis.proposal = config.proposal;\n\tthis.proposals = config.proposals;\n\tthis.numProposal = config.numProposal;\n\tthis.menuEdit = mw.message( 'jade-ui-menu-edit' ).text();\n\tthis.menuPromote = mw.message( 'jade-ui-menu-promote' ).text();\n\tthis.menuDelete = mw.message( 'jade-ui-menu-delete' ).text();\n\tthis.editButton = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-proposalWidget-menu-edit' ],\n\t\tdata: this,\n\t\tlabel: this.menuEdit\n\n\t} );\n\tthis.promoteButton = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-proposalWidget-menu-promote' ],\n\t\tdata: this,\n\t\tlabel: this.menuPromote,\n\t\tdisabled: this.proposal.preferred\n\t} );\n\tthis.deleteProposalButton = new OO.ui.OptionWidget( {\n\t\tclasses: [ 'jade-proposalWidget-menu-delete' ],\n\t\tdata: this,\n\t\tlabel: this.menuDelete\n\t} );\n\tthis.menuStack = new OO.ui.SelectWidget( {\n\t\titems: [ this.editButton, this.promoteButton, this.deleteProposalButton ],\n\t\tclasses: [ 'jade-proposalWidget-menu' ]\n\t} );\n\tthis.menuStack.on( 'choose', function ( cmd ) {\n\t\tvar windowManager = new OO.ui.WindowManager();\n\t\tvar processDialog;\n\t\tif ( cmd.label === cmd.data.menuDelete ) {\n\t\t\t$( document.body ).append( windowManager.$element );\n\t\t\t// Create a new dialog window.\n\t\t\tprocessDialog = new DeleteProposalDialog( {\n\t\t\t\tsize: 'large',\n\t\t\t\tproposal: cmd.data.proposal\n\t\t\t} );\n\n\t\t\t// Add windows to window manager using the addWindows() method.\n\t\t\twindowManager.addWindows( [ processDialog ] );\n\n\t\t\t// Open the window.\n\t\t\twindowManager.openWindow( processDialog );\n\t\t} else if ( cmd.label === cmd.data.menuPromote ) {\n\t\t\t$( document.body ).append( windowManager.$element );\n\t\t\t// Create a new dialog window.\n\t\t\tprocessDialog = new PromoteDialog( {\n\t\t\t\tsize: 'large',\n\t\t\t\tproposal: cmd.data.proposal\n\t\t\t} );\n\n\t\t\t// Add windows to window manager using the addWindows() method.\n\t\t\twindowManager.addWindows( [ processDialog ] );\n\n\t\t\t// Open the window.\n\t\t\twindowManager.openWindow( processDialog );\n\t\t} else if ( cmd.label === cmd.data.menuEdit ) {\n\t\t\tcmd.data.menuButton.toggle();\n\t\t\tcmd.data.notesLabel.toggle();\n\t\t\tcmd.data.editForm.toggle();\n\t\t\tcmd.data.editBox.focus();\n\t\t}\n\t} );\n\tthis.menuButton = new OO.ui.PopupButtonWidget( {\n\t\tclasses: [ 'jade-proposalWidget-menuBtn' ],\n\t\tframed: false,\n\t\ticon: 'ellipsis',\n\t\tpopup: {\n\t\t\t$content: this.menuStack.$element,\n\t\t\tpadded: true,\n\t\t\tanchor: false,\n\t\t\talign: 'forward',\n\t\t\twidth: '90px'\n\t\t}\n\t} );\n\n\t/**\n\t * Populate the labelHeader widget with proposal labeldata.\n\t *\n\t * @method renderLabel\n\t * @description Populate the labelHeader widget with proposal labeldata.\n\t */\n\tthis.renderLabel = function () {\n\t\tvar icon1 = 'articleCheck';\n\t\tvar label1 = mw.message( 'jade-ui-productive-label' ).text();\n\t\tvar flags1 = 'progressive';\n\t\tvar classes1 = [ 'jade-proposalWidget-label-productive' ];\n\t\tif ( this.proposal.labeldata.damaging ) {\n\t\t\ticon1 = 'error';\n\t\t\tlabel1 = mw.message( 'jade-ui-damaging-label' ).text();\n\t\t\tflags1 = [ 'destructive', 'error' ];\n\t\t\tclasses1 = [ 'jade-proposalWidget-label-damaging' ];\n\t\t}\n\t\tthis.damagingButton = new OO.ui.ButtonWidget( {\n\t\t\t// Classes used here:\n\t\t\t// * jade-proposalWidget-label-productive\n\t\t\t// * jade-proposalWidget-label-damaging\n\t\t\tclasses: classes1,\n\t\t\tframed: false,\n\t\t\talign: 'right',\n\t\t\ticon: icon1,\n\t\t\tlabel: label1,\n\t\t\tflags: flags1\n\t\t} );\n\t\tvar icon2 = 'heart';\n\t\tvar label2 = mw.message( 'jade-ui-goodfaith-label' ).text();\n\t\tvar flags2 = 'progressive';\n\t\tif ( !this.proposal.labeldata.goodfaith ) {\n\t\t\ticon2 = 'userAnonymous';\n\t\t\tlabel2 = mw.message( 'jade-ui-badfaith-label' ).text();\n\t\t\tflags2 = '';\n\t\t}\n\t\tthis.goodfaithButton = new OO.ui.ButtonWidget( {\n\t\t\tclasses: [ 'jade-proposalWidget-label-goodfaith' ],\n\t\t\tframed: false,\n\t\t\ticon: icon2,\n\t\t\tlabel: label2,\n\t\t\tflags: flags2\n\t\t} );\n\t\tthis.labelStr = new OO.ui.LabelWidget( { label: $( '<b>' ).text( 'Label:' ) } );\n\t\tthis.labelHeader = new OO.ui.HorizontalLayout( {\n\t\t\tclasses: [ 'jade-proposalWidget-endorsements-label' ]\n\t\t} );\n\n\t\tthis.labelHeader.addItems( [\n\t\t\tthis.labelStr,\n\t\t\tthis.damagingButton,\n\t\t\tthis.goodfaithButton,\n\t\t\tthis.menuButton\n\t\t] );\n\t};\n\tthis.renderLabel();\n\tthis.editFormSubmit = new OO.ui.ButtonInputWidget( {\n\t\tclasses: [ 'jade-proposalWidget-editForm-submitBtn' ],\n\t\ttype: 'submit',\n\t\tname: 'publish',\n\t\tlabel: mw.message( 'jade-ui-edit-publish-btn' ).text(),\n\t\tflags: [\n\t\t\t'primary',\n\t\t\t'progressive'\n\t\t],\n\t\talign: 'right'\n\t} );\n\tthis.editFormCancel = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'jade-proposalWidget-editForm-cancelBtn' ],\n\t\tframed: false,\n\t\tlabel: mw.message( 'jade-ui-cancel-btn' ).text()\n\t} );\n\tthis.editBox = new OO.ui.MultilineTextInputWidget( {\n\t\tclasses: [ 'jade-proposalWidget-editForm-text' ],\n\t\tplaceholder: mw.message( 'jade-ui-proposenewlabel-comment-placeholder' ).text(),\n\t\tvalue: this.proposal.notes,\n\t\tautosize: true,\n\t\tmaxRows: 10\n\t} );\n\n\tthis.editForm = new OO.ui.FieldsetLayout( {\n\t\tclasses: [ 'jade-proposalWidget-editForm' ],\n\t\tlabel: null,\n\t\titems: [\n\t\t\tnew OO.ui.FieldLayout( this.editBox, {\n\t\t\t\talign: 'top',\n\t\t\t\tlabel: null\n\t\t\t} ),\n\t\t\tnew OO.ui.FieldLayout( new OO.ui.Widget( {\n\t\t\t\tclasses: [ 'jade-proposalWidget-editForm-buttons' ],\n\t\t\t\tcontent: [\n\t\t\t\t\tnew OO.ui.HorizontalLayout( {\n\t\t\t\t\t\titems: [\n\t\t\t\t\t\t\tthis.editFormCancel,\n\t\t\t\t\t\t\tthis.editFormSubmit\n\t\t\t\t\t\t]\n\t\t\t\t\t} )\n\t\t\t\t]\n\t\t\t} ), {\n\t\t\t\talign: 'top',\n\t\t\t\tlabel: null\n\t\t\t} )\n\t\t]\n\t} );\n\tthis.editForm.toggle();\n\tthis.notesLabel = new OO.ui.LabelWidget( {\n\t\tclasses: [ 'jade-proposalWidget-notes' ],\n\t\tlabel: $( this.proposal.notesWithParsedWikitext )\n\t} );\n\tthis.endorsementsButton = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'jade-proposalWidget-endorsementsButton' ],\n\t\tframed: false,\n\t\tlabel: mw.message( 'jade-ui-proposal-endorsements' ).text() + ' (' + this.proposal.endorsements.length + ')'\n\t} );\n\tthis.collapseIcon = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'jade-proposalWidget-endorsements-collapseBtn' ],\n\t\tframed: false,\n\t\ticon: 'collapse',\n\t\ttitle: 'collapse',\n\t\talign: 'left'\n\t} );\n\tthis.expandIcon = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'jade-proposalWidget-endorsements-expandBtn' ],\n\t\tframed: false,\n\t\ticon: 'expand',\n\t\ttitle: 'expand',\n\t\talign: 'left'\n\t} );\n\tthis.collapseIcon.toggle();\n\t// if ( this.numProposal == 1 ) {\n\t// this.expandIcon.toggle();\n\t// }\n\tthis.endorseButton = new OO.ui.ButtonWidget( {\n\t\tclasses: [ 'jade-proposalWidget-endorseBtn' ],\n\t\ticon: 'add',\n\t\tlabel: '1',\n\t\tflags: [\n\t\t\t'progressive'\n\t\t]\n\t} );\n\tthis.header = new OO.ui.HorizontalLayout( {\n\t\tclasses: [ 'jade-proposalWidget-endorsements-toggle' ]\n\t} );\n\tthis.header.addItems( [\n\t\tthis.endorsementsButton,\n\t\tnew OO.ui.FieldLayout( this.collapseIcon ),\n\t\tnew OO.ui.FieldLayout( this.expandIcon ),\n\t\tthis.endorseButton\n\t] );\n\n\tthis.endorsementList = new EndorsementListWidget( {\n\t} );\n\tthis.endorsementList.toggle();\n\tfor ( var eIdx in this.proposal.endorsements ) {\n\t\tvar endorsement = this.proposal.endorsements[ eIdx ];\n\t\tthis.endorsementList.addItems( [\n\t\t\tnew EndorsementWidget( {\n\t\t\t\tendorsement: endorsement,\n\t\t\t\tproposal: this.proposal,\n\t\t\t\tproposals: this.proposals,\n\t\t\t\tnumProposal: this.numProposal\n\t\t\t} )\n\t\t] );\n\t}\n\n\tthis.$element\n\t\t.addClass( 'jade-proposalWidget' )\n\t\t.append( this.labelHeader.$element )\n\t\t.append( this.editForm.$element )\n\t\t.append( this.notesLabel.$element )\n\t\t.append( this.header.$element )\n\t\t.append( this.endorsementList.$element );\n\n\tthis.endorseButton.connect( this, {\n\t\tclick: 'onEndorseButtonClick'\n\t} );\n\tthis.endorsementsButton.connect( this, {\n\t\tclick: 'onToggleButtonClick'\n\t} );\n\tthis.expandIcon.connect( this, {\n\t\tclick: 'onToggleButtonClick'\n\t} );\n\n\tthis.collapseIcon.connect( this, {\n\t\tclick: 'onToggleButtonClick'\n\t} );\n\tthis.editFormSubmit.connect( this, {\n\t\tclick: 'onSubmitButtonClick'\n\t} );\n\n\tthis.editFormCancel.connect( this, {\n\t\tclick: 'onCancelButtonClick'\n\t} );\n\n};\n\nOO.inheritClass( ProposalWidget, OO.ui.OptionWidget );\n\n/**\n * Update proposal notes using the MW api and reloads the page.\n *\n * @method onSubmitButtonClick\n * @description Updates proposal notes on submit button click.\n */\nProposalWidget.prototype.onSubmitButtonClick = function () {\n\tvar params = {\n\t\ttitle: mw.config.get( 'entityTitle' ).prefixedText,\n\t\tfacet: 'editquality', // TODO - remove this hardcoding\n\t\tlabeldata: JSON.stringify( this.proposal.labeldata ),\n\t\tnotes: this.editBox.value\n\t};\n\tvar client = new UpdateProposalClient( params );\n\tvar res = client.execute( params );\n\tPromise.resolve( res );\n};\n\n/**\n * Hide the notes edit form on cancel button click.\n *\n * @method onCancelButtonClick\n * @description Hide the notes edit form on cancel button click.\n */\nProposalWidget.prototype.onCancelButtonClick = function () {\n\tthis.editForm.toggle();\n\tthis.notesLabel.toggle();\n\tthis.menuButton.toggle();\n};\n\n/**\n * Toggle visibility of endorsementList and change expand/collapse icon.\n *\n * @method onToggleButtonClick\n * @description Toggle visibility of endorsementList and change expand/collapse icon.\n */\nProposalWidget.prototype.onToggleButtonClick = function () {\n\tthis.endorsementList.toggle();\n\tthis.expandIcon.toggle();\n\tthis.collapseIcon.toggle();\n};\n\n/**\n * Display the EndorseDialog popup on endorse button click.\n *\n * @method onEndorseButtonClick\n * @description Display the EndorseDialog popup on endorse button click.\n */\nProposalWidget.prototype.onEndorseButtonClick = function () {\n\tvar windowManager = new OO.ui.WindowManager();\n\t$( document.body ).append( windowManager.$element );\n\t// Create a new dialog window.\n\tvar processDialog = new EndorseDialog( {\n\t\tsize: 'large',\n\t\tproposal: this.proposal\n\t} );\n\n\t// Add windows to window manager using the addWindows() method.\n\twindowManager.addWindows( [ processDialog ] );\n\n\t// Open the window.\n\twindowManager.openWindow( processDialog );\n\n};\n\n/**\n * Hide menu, endorseButton & expandIcon widgets for use in dialog widget content.\n *\n * @method setDisplayMode\n * @description Hide menu, endorseButton & expandIcon widgets for use in dialog widget content.\n */\nProposalWidget.prototype.setDisplayMode = function () {\n\tthis.endorseButton.toggle();\n\tthis.expandIcon.toggle();\n\tthis.menuButton.toggle();\n};\n\nmodule.exports = ProposalWidget;\n","usedDeprecatedRules":[]},{"filePath":"/src/repo/resources/widgets/index.js","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_additional_properties.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_additional_properties2.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_additional_properties3.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_bad_contentquality_data.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_bad_score_data.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_bad_score_schema.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_bad_type.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_bad_user_ip.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_bad_user_ip2.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_disallowed_score_schema.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_empty_endorsements.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_missing_required.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_none_preferred.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/invalid_judgment_two_preferred.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/valid_diff_judgment.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/valid_editquality_entity.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/valid_revision_judgment.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]},{"filePath":"/src/repo/tests/data/valid_revision_judgment_v2.json","messages":[],"errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]}]

$ npm ci
npm WARN prepare removing existing node_modules/ before installation

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

added 578 packages in 12.496s

$ npm test

> @ test /src/repo
> grunt test

Running "eslint:all" (eslint) task

/src/repo/resources/api/client.js
  77:2  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/resources/api/EndorseClient.js
  11:0  warning  Expected JSDoc block to be aligned  jsdoc/check-alignment

/src/repo/resources/ext.Jade.entityView.js
  28:0  warning  Missing JSDoc @param "item" type  jsdoc/require-param-type

/src/repo/resources/widgets/EndorsementWidget.js
   51:0  warning  Missing JSDoc @param "userId" type                                    jsdoc/require-param-type
  140:0  warning  Missing JSDoc @param "userId" type                                    jsdoc/require-param-type
  192:0  warning  Missing JSDoc @param "date" type                                      jsdoc/require-param-type
  317:2  warning  Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1  compat/compat

/src/repo/resources/widgets/ProposalWidget.js
  332:2  warning  Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1  compat/compat

✖ 8 problems (0 errors, 8 warnings)
  0 errors and 1 warning potentially fixable with the `--fix` option.


Running "banana:Jade" (banana) task
>> 3 message directories checked.

Running "stylelint:all" (stylelint) task
>> Linted 14 files without errors

Done.

Attempting to npm audit fix
$ npm audit fix --only=dev
up to date in 4.008s

68 packages are looking for funding
  run `npm fund` for details

fixed 0 of 1 vulnerability in 578 scanned packages

Verifying that tests still pass
$ npm ci
npm WARN prepare removing existing node_modules/ before installation

> core-js@3.9.1 postinstall /src/repo/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

added 578 packages in 12.179s

$ npm test

> @ test /src/repo
> grunt test

Running "eslint:all" (eslint) task

/src/repo/resources/api/client.js
  77:2  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/resources/api/EndorseClient.js
  11:0  warning  Expected JSDoc block to be aligned  jsdoc/check-alignment

/src/repo/resources/ext.Jade.entityView.js
  28:0  warning  Missing JSDoc @param "item" type  jsdoc/require-param-type

/src/repo/resources/widgets/EndorsementWidget.js
   51:0  warning  Missing JSDoc @param "userId" type                                    jsdoc/require-param-type
  140:0  warning  Missing JSDoc @param "userId" type                                    jsdoc/require-param-type
  192:0  warning  Missing JSDoc @param "date" type                                      jsdoc/require-param-type
  317:2  warning  Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1  compat/compat

/src/repo/resources/widgets/ProposalWidget.js
  332:2  warning  Promise.resolve() is not supported in Safari 5.1, IE 11, android 4.1  compat/compat

✖ 8 problems (0 errors, 8 warnings)
  0 errors and 1 warning potentially fixable with the `--fix` option.


Running "banana:Jade" (banana) task
>> 3 message directories checked.

Running "stylelint:all" (stylelint) task
>> Linted 14 files without errors

Done.

Upgrading n:oojs-ui from 0.35.1 -> 0.41.1
$ git add .

$ git commit -F /tmp/tmpzfd19vjs
[master f3319bb] build: Updating npm dependencies
 2 files changed, 67 insertions(+), 69 deletions(-)

$ git format-patch HEAD~1 --stdout
From f3319bb7219ac5cb3ebb8fdd13e749ab9265588c Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sun, 7 Mar 2021 00:53:42 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* eslint-config-wikimedia: 0.18.1 → 0.18.2
* oojs-ui: 0.35.1 → 0.41.1
  * https://npmjs.com/advisories/1518 (CVE-2020-11022)

Change-Id: I8bab726d2d18a8f115f02fc7a7b98a6da4418c0c
---
 package-lock.json | 134 +++++++++++++++++++++++-----------------------
 package.json      |   2 +-
 2 files changed, 67 insertions(+), 69 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 5520d97..c734127 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -242,9 +242,9 @@
 			}
 		},
 		"@eslint/eslintrc": {
-			"version": "0.3.0",
-			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz",
-			"integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==",
+			"version": "0.4.0",
+			"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz",
+			"integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==",
 			"dev": true,
 			"requires": {
 				"ajv": "^6.12.4",
@@ -254,7 +254,6 @@
 				"ignore": "^4.0.6",
 				"import-fresh": "^3.2.1",
 				"js-yaml": "^3.13.1",
-				"lodash": "^4.17.20",
 				"minimatch": "^3.0.4",
 				"strip-json-comments": "^3.1.1"
 			}
@@ -869,9 +868,9 @@
 			"dev": true
 		},
 		"core-js": {
-			"version": "3.8.3",
-			"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
-			"integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+			"version": "3.9.1",
+			"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz",
+			"integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==",
 			"dev": true
 		},
 		"core-util-is": {
@@ -1295,13 +1294,13 @@
 			"dev": true
 		},
 		"eslint": {
-			"version": "7.18.0",
-			"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz",
-			"integrity": "sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ==",
+			"version": "7.21.0",
+			"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.21.0.tgz",
+			"integrity": "sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==",
 			"dev": true,
 			"requires": {
-				"@babel/code-frame": "^7.0.0",
-				"@eslint/eslintrc": "^0.3.0",
+				"@babel/code-frame": "7.12.11",
+				"@eslint/eslintrc": "^0.4.0",
 				"ajv": "^6.10.0",
 				"chalk": "^4.0.0",
 				"cross-spawn": "^7.0.2",
@@ -1312,9 +1311,9 @@
 				"eslint-utils": "^2.1.0",
 				"eslint-visitor-keys": "^2.0.0",
 				"espree": "^7.3.1",
-				"esquery": "^1.2.0",
+				"esquery": "^1.4.0",
 				"esutils": "^2.0.2",
-				"file-entry-cache": "^6.0.0",
+				"file-entry-cache": "^6.0.1",
 				"functional-red-black-tree": "^1.0.1",
 				"glob-parent": "^5.0.0",
 				"globals": "^12.1.0",
@@ -1337,12 +1336,23 @@
 				"table": "^6.0.4",
 				"text-table": "^0.2.0",
 				"v8-compile-cache": "^2.0.3"
+			},
+			"dependencies": {
+				"file-entry-cache": {
+					"version": "6.0.1",
+					"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+					"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+					"dev": true,
+					"requires": {
+						"flat-cache": "^3.0.4"
+					}
+				}
 			}
 		},
 		"eslint-config-wikimedia": {
-			"version": "0.18.1",
-			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.18.1.tgz",
-			"integrity": "sha512-93nHVH4CGxYwelbTjJQLr0xqn4XIe9WwWeGL4wMnELZW/Aceg52aT7AgIdV0659ReLzrCgxLPDvbeqB47LjBTQ==",
+			"version": "0.18.2",
+			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.18.2.tgz",
+			"integrity": "sha512-OllUgce2qODU/6481jg/a1kT/dygBDY1xhxXuAiQdYxJARV6LXyuiJw+wl1QBQz+huV9NXRxoJGC3L6x/NzC4g==",
 			"dev": true,
 			"requires": {
 				"eslint": "^7.17.0",
@@ -1350,12 +1360,12 @@
 				"eslint-plugin-es": "^4.1.0",
 				"eslint-plugin-jsdoc": "^30.7.13",
 				"eslint-plugin-json-es": "^1.5.1",
-				"eslint-plugin-mediawiki": "^0.2.6",
+				"eslint-plugin-mediawiki": "^0.2.7",
 				"eslint-plugin-mocha": "^8.0.0",
 				"eslint-plugin-no-jquery": "^2.5.0",
 				"eslint-plugin-node": "^11.1.0",
 				"eslint-plugin-qunit": "^5.2.0",
-				"eslint-plugin-vue": "^7.4.1",
+				"eslint-plugin-vue": "^7.7.0",
 				"eslint-plugin-wdio": "^6.0.12"
 			}
 		},
@@ -1409,56 +1419,29 @@
 			}
 		},
 		"eslint-plugin-json-es": {
-			"version": "1.5.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-json-es/-/eslint-plugin-json-es-1.5.1.tgz",
-			"integrity": "sha512-YMzAWMcmKOYWiH0MsN3JOr0AdtZ2Rvmk3YmscsX1rHYJZRsL4KRo+yj9ktRk7S7mgy+G5TORWJ5D3/vH/u7R5A==",
+			"version": "1.5.3",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-json-es/-/eslint-plugin-json-es-1.5.3.tgz",
+			"integrity": "sha512-9wWjwhoN+ipMel70ktkWy0H7jj9sm5OAbAy3N3F3AT0swpIofVsIjDXyjGZJwSzy9tZzDtI/aKIj2WsqMHw2QA==",
 			"dev": true,
 			"requires": {
-				"eslint-visitor-keys": "^1.3.0",
+				"eslint-visitor-keys": "^2.0.0",
 				"espree": "^7.3.1"
-			},
-			"dependencies": {
-				"eslint-visitor-keys": {
-					"version": "1.3.0",
-					"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
-					"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
-					"dev": true
-				}
 			}
 		},
 		"eslint-plugin-mediawiki": {
-			"version": "0.2.6",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.6.tgz",
-			"integrity": "sha512-e7gx15H39ceam9AnSr6DDyfhMM9L43PVagHzclH3CF33DvWKi/OA+j2dqzJTuJcl5P/EmVIQHG5qoTaepkADsw==",
+			"version": "0.2.7",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.2.7.tgz",
+			"integrity": "sha512-2ZvPvLEwCIqrJxV1349bdX5Q03c30WccuUMCfB1Gh2IVxbBSrY0gbzOk/gPZeYigVhODt9xoFWUCIz8jwTWfrA==",
 			"dev": true,
 			"requires": {
-				"eslint-plugin-vue": "^6.2.2",
+				"eslint-plugin-vue": "^7.7.0",
 				"upath": "^1.2.0"
-			},
-			"dependencies": {
-				"eslint-plugin-vue": {
-					"version": "6.2.2",
-					"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
-					"integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
-					"dev": true,
-					"requires": {
-						"natural-compare": "^1.4.0",
-						"semver": "^5.6.0",
-						"vue-eslint-parser": "^7.0.0"
-					}
-				},
-				"semver": {
-					"version": "5.7.1",
-					"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-					"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-					"dev": true
-				}
 			}
 		},
 		"eslint-plugin-mocha": {
-			"version": "8.0.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.0.0.tgz",
-			"integrity": "sha512-n67etbWDz6NQM+HnTwZHyBwz/bLlYPOxUbw7bPuCyFujv7ZpaT/Vn6KTAbT02gf7nRljtYIjWcTxK/n8a57rQQ==",
+			"version": "8.1.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-8.1.0.tgz",
+			"integrity": "sha512-1EgHvXKRl7W3mq3sntZAi5T24agRMyiTPL4bSXe+B4GksYOjAPEWYx+J3eJg4It1l2NMNZJtk0gQyQ6mfiPhQg==",
 			"dev": true,
 			"requires": {
 				"eslint-utils": "^2.1.0",
@@ -1520,15 +1503,15 @@
 			}
 		},
 		"eslint-plugin-vue": {
-			"version": "7.5.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.5.0.tgz",
-			"integrity": "sha512-QnMMTcyV8PLxBz7QQNAwISSEs6LYk2LJvGlxalXvpCtfKnqo7qcY0aZTIxPe8QOnHd7WCwiMZLOJzg6A03T0Gw==",
+			"version": "7.7.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.7.0.tgz",
+			"integrity": "sha512-mYz4bpLGv5jx6YG/GvKkqbGSfV7uma2u1P3mLA41Q5vQl8W1MeuTneB8tfsLq6xxxesFubcrOC0BZBJ5R+eaCQ==",
 			"dev": true,
 			"requires": {
 				"eslint-utils": "^2.1.0",
 				"natural-compare": "^1.4.0",
 				"semver": "^7.3.2",
-				"vue-eslint-parser": "^7.4.1"
+				"vue-eslint-parser": "^7.6.0"
 			}
 		},
 		"eslint-plugin-wdio": {
@@ -1596,9 +1579,9 @@
 			"dev": true
 		},
 		"esquery": {
-			"version": "1.3.1",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz",
-			"integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==",
+			"version": "1.4.0",
+			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+			"integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
 			"dev": true,
 			"requires": {
 				"estraverse": "^5.1.0"
@@ -4954,16 +4937,16 @@
 			}
 		},
 		"vue-eslint-parser": {
-			"version": "7.4.1",
-			"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.4.1.tgz",
-			"integrity": "sha512-AFvhdxpFvliYq1xt/biNBslTHE/zbEvSnr1qfHA/KxRIpErmEDrQZlQnvEexednRHmLfDNOMuDYwZL5xkLzIXQ==",
+			"version": "7.6.0",
+			"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz",
+			"integrity": "sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==",
 			"dev": true,
 			"requires": {
 				"debug": "^4.1.1",
 				"eslint-scope": "^5.0.0",
 				"eslint-visitor-keys": "^1.1.0",
 				"espree": "^6.2.1",
-				"esquery": "^1.0.1",
+				"esquery": "^1.4.0",
 				"lodash": "^4.17.15"
 			},
 			"dependencies": {
@@ -4983,6 +4966,21 @@
 						"acorn-jsx": "^5.2.0",
 						"eslint-visitor-keys": "^1.1.0"
 					}
+				},
+				"esquery": {
+					"version": "1.4.0",
+					"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
+					"integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+					"dev": true,
+					"requires": {
+						"estraverse": "^5.1.0"
+					}
+				},
+				"estraverse": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+					"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+					"dev": true
 				}
 			}
 		},
diff --git a/package.json b/package.json
index 3b0b3ee..09d71d5 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
 		"test": "grunt test"
 	},
 	"devDependencies": {
-		"eslint-config-wikimedia": "0.18.1",
+		"eslint-config-wikimedia": "0.18.2",
 		"grunt": "1.3.0",
 		"grunt-banana-checker": "0.9.0",
 		"grunt-eslint": "23.0.0",
-- 
2.20.1

composer dependencies

Dependencies
Development dependencies

npm dependencies

Dependencies
Development dependencies

Logs

Source code is licensed under the AGPL.