mediawiki/extensions/PageForms: main (log #2467273)

sourcepatches

This run took 72 seconds.

From a2eeaed4186dd78269fb16f0fca4ea5e84565206 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Wed, 6 May 2026 08:00:37 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: 50.0.0 → 51.0.0

npm:
* eslint-config-wikimedia: 0.32.3 → 0.32.4

Change-Id: I787f4e79cb92e2e530fae6598a3dd749a679527b
---
 composer.json     |   2 +-
 package-lock.json | 860 ++++++++++++++++++++++++----------------------
 package.json      |   2 +-
 3 files changed, 450 insertions(+), 414 deletions(-)

diff --git a/composer.json b/composer.json
index c59ac0e..73b656f 100644
--- a/composer.json
+++ b/composer.json
@@ -34,7 +34,7 @@
 		}
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "50.0.0",
+		"mediawiki/mediawiki-codesniffer": "51.0.0",
 		"mediawiki/mediawiki-phan-config": "0.20.0",
 		"mediawiki/minus-x": "2.0.1",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
diff --git a/package-lock.json b/package-lock.json
index 0c9cef3..855ac40 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,7 +6,7 @@
 		"": {
 			"name": "PageForms",
 			"devDependencies": {
-				"eslint-config-wikimedia": "0.32.3",
+				"eslint-config-wikimedia": "0.32.4",
 				"grunt": "1.6.2",
 				"grunt-banana-checker": "0.13.0",
 				"grunt-eslint": "24.3.0"
@@ -45,19 +45,32 @@
 			}
 		},
 		"node_modules/@es-joy/jsdoccomment": {
-			"version": "0.76.0",
-			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz",
-			"integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==",
+			"version": "0.86.0",
+			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz",
+			"integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==",
 			"dev": true,
 			"dependencies": {
 				"@types/estree": "^1.0.8",
-				"@typescript-eslint/types": "^8.46.0",
-				"comment-parser": "1.4.1",
-				"esquery": "^1.6.0",
-				"jsdoc-type-pratt-parser": "~6.10.0"
+				"@typescript-eslint/types": "^8.58.0",
+				"comment-parser": "1.4.6",
+				"esquery": "^1.7.0",
+				"jsdoc-type-pratt-parser": "~7.2.0"
 			},
 			"engines": {
-				"node": ">=20.11.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
+			}
+		},
+		"node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": {
+			"version": "8.59.2",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+			"integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
+			"dev": true,
+			"engines": {
+				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/typescript-eslint"
 			}
 		},
 		"node_modules/@es-joy/resolve.exports": {
@@ -70,9 +83,9 @@
 			}
 		},
 		"node_modules/@eslint-community/eslint-utils": {
-			"version": "4.7.0",
-			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
-			"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+			"version": "4.9.1",
+			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+			"integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
 			"dev": true,
 			"dependencies": {
 				"eslint-visitor-keys": "^3.4.3"
@@ -182,9 +195,9 @@
 			"dev": true
 		},
 		"node_modules/@mdn/browser-compat-data": {
-			"version": "5.7.6",
-			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
-			"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+			"version": "6.1.5",
+			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-6.1.5.tgz",
+			"integrity": "sha512-PzdZZzRhcXvKB0begee28n5lvwAcinGKYuLZOVxHAZm+n7y01ddEGfdS1ZXRuVcV+ndG6mSEAE8vgudom5UjYg==",
 			"dev": true
 		},
 		"node_modules/@nodelib/fs.scandir": {
@@ -307,20 +320,19 @@
 			"dev": true
 		},
 		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz",
-			"integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz",
+			"integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==",
 			"dev": true,
 			"dependencies": {
-				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/type-utils": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"graphemer": "^1.4.0",
-				"ignore": "^7.0.0",
+				"@eslint-community/regexpp": "^4.12.2",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/type-utils": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"ignore": "^7.0.5",
 				"natural-compare": "^1.4.0",
-				"ts-api-utils": "^2.1.0"
+				"ts-api-utils": "^2.4.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -330,7 +342,7 @@
 				"url": "https://opencollective.com/typescript-eslint"
 			},
 			"peerDependencies": {
-				"@typescript-eslint/parser": "^8.46.0",
+				"@typescript-eslint/parser": "^8.54.0",
 				"eslint": "^8.57.0 || ^9.0.0",
 				"typescript": ">=4.8.4 <6.0.0"
 			}
@@ -345,16 +357,16 @@
 			}
 		},
 		"node_modules/@typescript-eslint/parser": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz",
-			"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz",
+			"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -369,14 +381,14 @@
 			}
 		},
 		"node_modules/@typescript-eslint/project-service": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz",
-			"integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz",
+			"integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/tsconfig-utils": "^8.46.0",
-				"@typescript-eslint/types": "^8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/tsconfig-utils": "^8.54.0",
+				"@typescript-eslint/types": "^8.54.0",
+				"debug": "^4.4.3"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -390,13 +402,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz",
-			"integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz",
+			"integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -407,9 +419,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/tsconfig-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz",
-			"integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz",
+			"integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==",
 			"dev": true,
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -423,16 +435,16 @@
 			}
 		},
 		"node_modules/@typescript-eslint/type-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz",
-			"integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz",
+			"integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"debug": "^4.3.4",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"debug": "^4.4.3",
+				"ts-api-utils": "^2.4.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -447,9 +459,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/types": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz",
-			"integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
+			"integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
 			"dev": true,
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -460,21 +472,20 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz",
-			"integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz",
+			"integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/project-service": "8.46.0",
-				"@typescript-eslint/tsconfig-utils": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4",
-				"fast-glob": "^3.3.2",
-				"is-glob": "^4.0.3",
-				"minimatch": "^9.0.4",
-				"semver": "^7.6.0",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/project-service": "8.54.0",
+				"@typescript-eslint/tsconfig-utils": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3",
+				"minimatch": "^9.0.5",
+				"semver": "^7.7.3",
+				"tinyglobby": "^0.2.15",
+				"ts-api-utils": "^2.4.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -488,9 +499,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
-			"integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+			"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -512,15 +523,15 @@
 			}
 		},
 		"node_modules/@typescript-eslint/utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz",
-			"integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz",
+			"integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==",
 			"dev": true,
 			"dependencies": {
-				"@eslint-community/eslint-utils": "^4.7.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0"
+				"@eslint-community/eslint-utils": "^4.9.1",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -535,12 +546,12 @@
 			}
 		},
 		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz",
-			"integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz",
+			"integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.46.0",
+				"@typescript-eslint/types": "8.54.0",
 				"eslint-visitor-keys": "^4.2.1"
 			},
 			"engines": {
@@ -576,9 +587,9 @@
 			"dev": true
 		},
 		"node_modules/acorn": {
-			"version": "8.15.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-			"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+			"version": "8.16.0",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+			"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
 			"dev": true,
 			"bin": {
 				"acorn": "bin/acorn"
@@ -672,6 +683,12 @@
 				"@mdn/browser-compat-data": "^5.6.19"
 			}
 		},
+		"node_modules/ast-metadata-inferer/node_modules/@mdn/browser-compat-data": {
+			"version": "5.7.6",
+			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
+			"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+			"dev": true
+		},
 		"node_modules/async": {
 			"version": "3.2.3",
 			"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
@@ -914,9 +931,9 @@
 			}
 		},
 		"node_modules/comment-parser": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
-			"integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
+			"version": "1.4.6",
+			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz",
+			"integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==",
 			"dev": true,
 			"engines": {
 				"node": ">= 12.0.0"
@@ -1036,13 +1053,13 @@
 			"dev": true
 		},
 		"node_modules/enhanced-resolve": {
-			"version": "5.18.3",
-			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
-			"integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+			"version": "5.21.0",
+			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
+			"integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==",
 			"dev": true,
 			"dependencies": {
 				"graceful-fs": "^4.2.4",
-				"tapable": "^2.2.0"
+				"tapable": "^2.3.3"
 			},
 			"engines": {
 				"node": ">=10.13.0"
@@ -1150,46 +1167,47 @@
 			}
 		},
 		"node_modules/eslint-config-wikimedia": {
-			"version": "0.32.3",
-			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.3.tgz",
-			"integrity": "sha512-Ekz2/ozpCCjQl3VbC6dW7ChqoW7FRilLDxmJ+FJOZhIxxzZSZR5QqQOAGWSZAlG1ONkZbYV/TPwGLWZcrNxyaA==",
+			"version": "0.32.4",
+			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.4.tgz",
+			"integrity": "sha512-zcHJYss2vo8HK5PzkFuaV9mzaSGRuhA+jFGoQ4rNIwWz0usZsuQ2LYpkKxrbCVX1CbV0PzG+jJ6p0cLI+G37JQ==",
 			"dev": true,
 			"dependencies": {
 				"@stylistic/eslint-plugin": "^3.1.0",
-				"@typescript-eslint/eslint-plugin": "8.46.0",
-				"@typescript-eslint/parser": "8.46.0",
+				"@typescript-eslint/eslint-plugin": "8.54.0",
+				"@typescript-eslint/parser": "8.54.0",
 				"browserslist-config-wikimedia": "^0.7.0",
-				"eslint": "^8.57.0",
-				"eslint-plugin-compat": "^6.0.2",
+				"eslint-plugin-compat": "^6.1.0",
 				"eslint-plugin-es-x": "^8.7.0",
-				"eslint-plugin-jest": "^29.0.1",
-				"eslint-plugin-jsdoc": "61.3.0",
+				"eslint-plugin-jest": "^29.12.2",
+				"eslint-plugin-jsdoc": "^62.9.0",
 				"eslint-plugin-json-es": "^1.6.0",
-				"eslint-plugin-mediawiki": "^0.8.2",
+				"eslint-plugin-mediawiki": "^0.8.3",
 				"eslint-plugin-mocha": "^10.5.0",
-				"eslint-plugin-n": "^17.23.1",
-				"eslint-plugin-no-jquery": "^3.1.1",
-				"eslint-plugin-qunit": "^8.2.5",
-				"eslint-plugin-security": "^3.0.1",
+				"eslint-plugin-n": "^17.24.0",
+				"eslint-plugin-no-jquery": "^4.0.0",
+				"eslint-plugin-qunit": "^8.2.6",
+				"eslint-plugin-security": "^4.0.0",
 				"eslint-plugin-unicorn": "^56.0.1",
 				"eslint-plugin-vue": "^9.33.0",
-				"eslint-plugin-wdio": "^9.16.2",
+				"eslint-plugin-wdio": "9.23.0",
 				"eslint-plugin-yml": "^1.19.0"
 			},
 			"engines": {
 				"node": ">=20 <25"
+			},
+			"peerDependencies": {
+				"eslint": "^8.57.0"
 			}
 		},
 		"node_modules/eslint-plugin-compat": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.2.tgz",
-			"integrity": "sha512-1ME+YfJjmOz1blH0nPZpHgjMGK4kjgEeoYqGCqoBPQ/mGu/dJzdoP0f1C8H2jcWZjzhZjAMccbM/VdXhPORIfA==",
+			"version": "6.2.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.2.1.tgz",
+			"integrity": "sha512-gLKqUH+lQcCL+HzsROUjBDvakc5Zaga51Y4ZAkPCXc41pzKBfyluqTr2j8zOx8QQQb7zyglu1LVoL5aSNWf2SQ==",
 			"dev": true,
 			"dependencies": {
-				"@mdn/browser-compat-data": "^5.5.35",
+				"@mdn/browser-compat-data": "^6.1.1",
 				"ast-metadata-inferer": "^0.8.1",
-				"browserslist": "^4.24.2",
-				"caniuse-lite": "^1.0.30001687",
+				"browserslist": "^4.25.2",
 				"find-up": "^5.0.0",
 				"globals": "^15.7.0",
 				"lodash.memoize": "^4.1.2",
@@ -1199,7 +1217,7 @@
 				"node": ">=18.x"
 			},
 			"peerDependencies": {
-				"eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+				"eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
 			}
 		},
 		"node_modules/eslint-plugin-compat/node_modules/globals": {
@@ -1265,57 +1283,57 @@
 			}
 		},
 		"node_modules/eslint-plugin-jsdoc": {
-			"version": "61.3.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.3.0.tgz",
-			"integrity": "sha512-E4m/5J5lrasd63Z74q4CCZ4PFnywnnrcvA7zZ98802NPhrZKKTp5NH+XAT+afcjXp2ps2/OQF5gPSWCT2XFCJg==",
+			"version": "62.9.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz",
+			"integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==",
 			"dev": true,
 			"dependencies": {
-				"@es-joy/jsdoccomment": "~0.76.0",
+				"@es-joy/jsdoccomment": "~0.86.0",
 				"@es-joy/resolve.exports": "1.2.0",
 				"are-docs-informative": "^0.0.2",
-				"comment-parser": "1.4.1",
+				"comment-parser": "1.4.6",
 				"debug": "^4.4.3",
 				"escape-string-regexp": "^4.0.0",
-				"espree": "^10.4.0",
-				"esquery": "^1.6.0",
+				"espree": "^11.2.0",
+				"esquery": "^1.7.0",
 				"html-entities": "^2.6.0",
 				"object-deep-merge": "^2.0.0",
 				"parse-imports-exports": "^0.2.4",
-				"semver": "^7.7.3",
+				"semver": "^7.7.4",
 				"spdx-expression-parse": "^4.0.0",
 				"to-valid-identifier": "^1.0.0"
 			},
 			"engines": {
-				"node": ">=20.11.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
 			},
 			"peerDependencies": {
-				"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
+				"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
 			}
 		},
 		"node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": {
-			"version": "4.2.1",
-			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-			"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+			"integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
 			"dev": true,
 			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
 			},
 			"funding": {
 				"url": "https://opencollective.com/eslint"
 			}
 		},
 		"node_modules/eslint-plugin-jsdoc/node_modules/espree": {
-			"version": "10.4.0",
-			"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
-			"integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+			"version": "11.2.0",
+			"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+			"integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
 			"dev": true,
 			"dependencies": {
-				"acorn": "^8.15.0",
+				"acorn": "^8.16.0",
 				"acorn-jsx": "^5.3.2",
-				"eslint-visitor-keys": "^4.2.1"
+				"eslint-visitor-keys": "^5.0.1"
 			},
 			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
 			},
 			"funding": {
 				"url": "https://opencollective.com/eslint"
@@ -1335,9 +1353,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-mediawiki": {
-			"version": "0.8.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.2.tgz",
-			"integrity": "sha512-ydYrpkzm8IVVDQA96QPF3HnFd2xjkIEh7gixD2gvOqUbUZF0p36LtpWXOFAlPWAvHLePWbNNTD5ovd3d4hEtog==",
+			"version": "0.8.3",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.3.tgz",
+			"integrity": "sha512-RQKZd40C1taMDk5N9+aFLEBGBB95RNG7Gc54EsJ8pHsJu8//nIdpxNFWPtQz6RNxz6pZUXBnMCxzkMOLM3Mm1w==",
 			"dev": true,
 			"dependencies": {
 				"upath": "^2.0.1"
@@ -1364,9 +1382,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-n": {
-			"version": "17.23.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz",
-			"integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==",
+			"version": "17.24.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz",
+			"integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.5.0",
@@ -1438,31 +1456,34 @@
 			}
 		},
 		"node_modules/eslint-plugin-no-jquery": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.1.1.tgz",
-			"integrity": "sha512-LTLO3jH/Tjr1pmxCEqtV6qmt+OChv8La4fwgG470JRpgxyFF4NOzoC9CRy92GIWD3Yjl0qLEgPmD2FLQWcNEjg==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-4.0.0.tgz",
+			"integrity": "sha512-ZR631D3qIQfgjKOAcgvYa5cB8xdTvFXAD5MbK5x5WltLSwFxmGnoaTXNtnptFU7py07ALrIe5dZRYncu4RD/Ug==",
 			"dev": true,
 			"peerDependencies": {
-				"eslint": ">=8.0.0"
+				"eslint": ">=8.0.0 <9.0.0"
 			}
 		},
 		"node_modules/eslint-plugin-qunit": {
-			"version": "8.2.5",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.5.tgz",
-			"integrity": "sha512-qr7RJCYImKQjB+39q4q46i1l7p1V3joHzBE5CAYfxn5tfVFjrnjn/tw7q/kDyweU9kAIcLul0Dx/KWVUCb3BgA==",
+			"version": "8.2.6",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.6.tgz",
+			"integrity": "sha512-S1jC/DIW9J8VtNX4uG1vlf5FZVrfQFlcuiYmvTHR2IICUhubHqpWA5o+qS1tujh+81Gs39omKV2D4OXfbSJE5g==",
 			"dev": true,
 			"dependencies": {
-				"eslint-utils": "^3.0.0",
+				"@eslint-community/eslint-utils": "^4.4.0",
 				"requireindex": "^1.2.0"
 			},
 			"engines": {
 				"node": "^16.0.0 || ^18.0.0 || >=20.0.0"
+			},
+			"peerDependencies": {
+				"eslint": ">=8.38.0"
 			}
 		},
 		"node_modules/eslint-plugin-security": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz",
-			"integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-4.0.0.tgz",
+			"integrity": "sha512-tfuQT8K/Li1ZxhFzyD8wPIKtlzZxqBcPr9q0jFMQ77wWAbKBVEhaMPVQRTMTvCMUDhwBe5vPVqQPwAGk/ASfxQ==",
 			"dev": true,
 			"dependencies": {
 				"safe-regex": "^2.1.1"
@@ -1542,9 +1563,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-wdio": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.16.2.tgz",
-			"integrity": "sha512-qkqsPgxN70OnUPWMjmzJbSbvm2+Q087JIGss53/OFI4Y46xKlV5VLhLiYealaAibAiXmnfWKd0tERjZAzVL87A==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.23.0.tgz",
+			"integrity": "sha512-8tcpupzp2Qmv+uSfhzeHi42LVA9PyjkpMBPclSIkPxBfXpj4fMrejwAHu1PROh1OmJN1VQcGQUTWvSzyRcV2vA==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.20.0"
@@ -1677,9 +1698,9 @@
 			}
 		},
 		"node_modules/esquery": {
-			"version": "1.6.0",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
-			"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+			"version": "1.7.0",
+			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+			"integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
 			"dev": true,
 			"dependencies": {
 				"estraverse": "^5.1.0"
@@ -1766,34 +1787,6 @@
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 			"dev": true
 		},
-		"node_modules/fast-glob": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-			"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-			"dev": true,
-			"dependencies": {
-				"@nodelib/fs.stat": "^2.0.2",
-				"@nodelib/fs.walk": "^1.2.3",
-				"glob-parent": "^5.1.2",
-				"merge2": "^1.3.0",
-				"micromatch": "^4.0.8"
-			},
-			"engines": {
-				"node": ">=8.6.0"
-			}
-		},
-		"node_modules/fast-glob/node_modules/glob-parent": {
-			"version": "5.1.2",
-			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-			"dev": true,
-			"dependencies": {
-				"is-glob": "^4.0.1"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
 		"node_modules/fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -1952,9 +1945,9 @@
 			}
 		},
 		"node_modules/get-tsconfig": {
-			"version": "4.13.0",
-			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
-			"integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+			"version": "4.14.0",
+			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+			"integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
 			"dev": true,
 			"dependencies": {
 				"resolve-pkg-maps": "^1.0.0"
@@ -2530,9 +2523,9 @@
 			}
 		},
 		"node_modules/jsdoc-type-pratt-parser": {
-			"version": "6.10.0",
-			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz",
-			"integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==",
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz",
+			"integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==",
 			"dev": true,
 			"engines": {
 				"node": ">=20.0.0"
@@ -2699,15 +2692,6 @@
 				"node": ">=0.10.0"
 			}
 		},
-		"node_modules/merge2": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-			"dev": true,
-			"engines": {
-				"node": ">= 8"
-			}
-		},
 		"node_modules/micromatch": {
 			"version": "4.0.8",
 			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
@@ -3427,9 +3411,9 @@
 			"dev": true
 		},
 		"node_modules/semver": {
-			"version": "7.7.3",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-			"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+			"version": "7.7.4",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+			"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
 			"dev": true,
 			"bin": {
 				"semver": "bin/semver.js"
@@ -3556,9 +3540,9 @@
 			}
 		},
 		"node_modules/tapable": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
-			"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+			"integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
 			"dev": true,
 			"engines": {
 				"node": ">=6"
@@ -3574,6 +3558,51 @@
 			"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
 			"dev": true
 		},
+		"node_modules/tinyglobby": {
+			"version": "0.2.16",
+			"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+			"integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+			"dev": true,
+			"dependencies": {
+				"fdir": "^6.5.0",
+				"picomatch": "^4.0.4"
+			},
+			"engines": {
+				"node": ">=12.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/SuperchupuDev"
+			}
+		},
+		"node_modules/tinyglobby/node_modules/fdir": {
+			"version": "6.5.0",
+			"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+			"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12.0.0"
+			},
+			"peerDependencies": {
+				"picomatch": "^3 || ^4"
+			},
+			"peerDependenciesMeta": {
+				"picomatch": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/tinyglobby/node_modules/picomatch": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+			"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/jonschlinkert"
+			}
+		},
 		"node_modules/to-regex-range": {
 			"version": "5.0.1",
 			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -3603,9 +3632,9 @@
 			}
 		},
 		"node_modules/ts-api-utils": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
-			"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
+			"integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.12"
@@ -3918,16 +3947,24 @@
 			"dev": true
 		},
 		"@es-joy/jsdoccomment": {
-			"version": "0.76.0",
-			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz",
-			"integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==",
+			"version": "0.86.0",
+			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz",
+			"integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==",
 			"dev": true,
 			"requires": {
 				"@types/estree": "^1.0.8",
-				"@typescript-eslint/types": "^8.46.0",
-				"comment-parser": "1.4.1",
-				"esquery": "^1.6.0",
-				"jsdoc-type-pratt-parser": "~6.10.0"
+				"@typescript-eslint/types": "^8.58.0",
+				"comment-parser": "1.4.6",
+				"esquery": "^1.7.0",
+				"jsdoc-type-pratt-parser": "~7.2.0"
+			},
+			"dependencies": {
+				"@typescript-eslint/types": {
+					"version": "8.59.2",
+					"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+					"integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
+					"dev": true
+				}
 			}
 		},
 		"@es-joy/resolve.exports": {
@@ -3937,9 +3974,9 @@
 			"dev": true
 		},
 		"@eslint-community/eslint-utils": {
-			"version": "4.7.0",
-			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
-			"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+			"version": "4.9.1",
+			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+			"integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
 			"dev": true,
 			"requires": {
 				"eslint-visitor-keys": "^3.4.3"
@@ -4015,9 +4052,9 @@
 			"dev": true
 		},
 		"@mdn/browser-compat-data": {
-			"version": "5.7.6",
-			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
-			"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+			"version": "6.1.5",
+			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-6.1.5.tgz",
+			"integrity": "sha512-PzdZZzRhcXvKB0begee28n5lvwAcinGKYuLZOVxHAZm+n7y01ddEGfdS1ZXRuVcV+ndG6mSEAE8vgudom5UjYg==",
 			"dev": true
 		},
 		"@nodelib/fs.scandir": {
@@ -4103,20 +4140,19 @@
 			"dev": true
 		},
 		"@typescript-eslint/eslint-plugin": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz",
-			"integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz",
+			"integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==",
 			"dev": true,
 			"requires": {
-				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/type-utils": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"graphemer": "^1.4.0",
-				"ignore": "^7.0.0",
+				"@eslint-community/regexpp": "^4.12.2",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/type-utils": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"ignore": "^7.0.5",
 				"natural-compare": "^1.4.0",
-				"ts-api-utils": "^2.1.0"
+				"ts-api-utils": "^2.4.0"
 			},
 			"dependencies": {
 				"ignore": {
@@ -4128,87 +4164,86 @@
 			}
 		},
 		"@typescript-eslint/parser": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz",
-			"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz",
+			"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3"
 			}
 		},
 		"@typescript-eslint/project-service": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz",
-			"integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz",
+			"integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/tsconfig-utils": "^8.46.0",
-				"@typescript-eslint/types": "^8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/tsconfig-utils": "^8.54.0",
+				"@typescript-eslint/types": "^8.54.0",
+				"debug": "^4.4.3"
 			}
 		},
 		"@typescript-eslint/scope-manager": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz",
-			"integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz",
+			"integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0"
 			}
 		},
 		"@typescript-eslint/tsconfig-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz",
-			"integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz",
+			"integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==",
 			"dev": true,
 			"requires": {}
 		},
 		"@typescript-eslint/type-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz",
-			"integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz",
+			"integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"debug": "^4.3.4",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"debug": "^4.4.3",
+				"ts-api-utils": "^2.4.0"
 			}
 		},
 		"@typescript-eslint/types": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz",
-			"integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
+			"integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
 			"dev": true
 		},
 		"@typescript-eslint/typescript-estree": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz",
-			"integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz",
+			"integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/project-service": "8.46.0",
-				"@typescript-eslint/tsconfig-utils": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4",
-				"fast-glob": "^3.3.2",
-				"is-glob": "^4.0.3",
-				"minimatch": "^9.0.4",
-				"semver": "^7.6.0",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/project-service": "8.54.0",
+				"@typescript-eslint/tsconfig-utils": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3",
+				"minimatch": "^9.0.5",
+				"semver": "^7.7.3",
+				"tinyglobby": "^0.2.15",
+				"ts-api-utils": "^2.4.0"
 			},
 			"dependencies": {
 				"brace-expansion": {
-					"version": "2.0.3",
-					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
-					"integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+					"version": "2.1.0",
+					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+					"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
 					"dev": true,
 					"requires": {
 						"balanced-match": "^1.0.0"
@@ -4226,24 +4261,24 @@
 			}
 		},
 		"@typescript-eslint/utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz",
-			"integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz",
+			"integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==",
 			"dev": true,
 			"requires": {
-				"@eslint-community/eslint-utils": "^4.7.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0"
+				"@eslint-community/eslint-utils": "^4.9.1",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0"
 			}
 		},
 		"@typescript-eslint/visitor-keys": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz",
-			"integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz",
+			"integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "8.46.0",
+				"@typescript-eslint/types": "8.54.0",
 				"eslint-visitor-keys": "^4.2.1"
 			},
 			"dependencies": {
@@ -4268,9 +4303,9 @@
 			"dev": true
 		},
 		"acorn": {
-			"version": "8.15.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-			"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+			"version": "8.16.0",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+			"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
 			"dev": true
 		},
 		"acorn-jsx": {
@@ -4340,6 +4375,14 @@
 			"dev": true,
 			"requires": {
 				"@mdn/browser-compat-data": "^5.6.19"
+			},
+			"dependencies": {
+				"@mdn/browser-compat-data": {
+					"version": "5.7.6",
+					"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
+					"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+					"dev": true
+				}
 			}
 		},
 		"async": {
@@ -4503,9 +4546,9 @@
 			"dev": true
 		},
 		"comment-parser": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
-			"integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
+			"version": "1.4.6",
+			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz",
+			"integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==",
 			"dev": true
 		},
 		"concat-map": {
@@ -4589,13 +4632,13 @@
 			"dev": true
 		},
 		"enhanced-resolve": {
-			"version": "5.18.3",
-			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
-			"integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+			"version": "5.21.0",
+			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
+			"integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==",
 			"dev": true,
 			"requires": {
 				"graceful-fs": "^4.2.4",
-				"tapable": "^2.2.0"
+				"tapable": "^2.3.3"
 			}
 		},
 		"error-ex": {
@@ -4692,43 +4735,41 @@
 			}
 		},
 		"eslint-config-wikimedia": {
-			"version": "0.32.3",
-			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.3.tgz",
-			"integrity": "sha512-Ekz2/ozpCCjQl3VbC6dW7ChqoW7FRilLDxmJ+FJOZhIxxzZSZR5QqQOAGWSZAlG1ONkZbYV/TPwGLWZcrNxyaA==",
+			"version": "0.32.4",
+			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.4.tgz",
+			"integrity": "sha512-zcHJYss2vo8HK5PzkFuaV9mzaSGRuhA+jFGoQ4rNIwWz0usZsuQ2LYpkKxrbCVX1CbV0PzG+jJ6p0cLI+G37JQ==",
 			"dev": true,
 			"requires": {
 				"@stylistic/eslint-plugin": "^3.1.0",
-				"@typescript-eslint/eslint-plugin": "8.46.0",
-				"@typescript-eslint/parser": "8.46.0",
+				"@typescript-eslint/eslint-plugin": "8.54.0",
+				"@typescript-eslint/parser": "8.54.0",
 				"browserslist-config-wikimedia": "^0.7.0",
-				"eslint": "^8.57.0",
-				"eslint-plugin-compat": "^6.0.2",
+				"eslint-plugin-compat": "^6.1.0",
 				"eslint-plugin-es-x": "^8.7.0",
-				"eslint-plugin-jest": "^29.0.1",
-				"eslint-plugin-jsdoc": "61.3.0",
+				"eslint-plugin-jest": "^29.12.2",
+				"eslint-plugin-jsdoc": "^62.9.0",
 				"eslint-plugin-json-es": "^1.6.0",
-				"eslint-plugin-mediawiki": "^0.8.2",
+				"eslint-plugin-mediawiki": "^0.8.3",
 				"eslint-plugin-mocha": "^10.5.0",
-				"eslint-plugin-n": "^17.23.1",
-				"eslint-plugin-no-jquery": "^3.1.1",
-				"eslint-plugin-qunit": "^8.2.5",
-				"eslint-plugin-security": "^3.0.1",
+				"eslint-plugin-n": "^17.24.0",
+				"eslint-plugin-no-jquery": "^4.0.0",
+				"eslint-plugin-qunit": "^8.2.6",
+				"eslint-plugin-security": "^4.0.0",
 				"eslint-plugin-unicorn": "^56.0.1",
 				"eslint-plugin-vue": "^9.33.0",
-				"eslint-plugin-wdio": "^9.16.2",
+				"eslint-plugin-wdio": "9.23.0",
 				"eslint-plugin-yml": "^1.19.0"
 			}
 		},
 		"eslint-plugin-compat": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.2.tgz",
-			"integrity": "sha512-1ME+YfJjmOz1blH0nPZpHgjMGK4kjgEeoYqGCqoBPQ/mGu/dJzdoP0f1C8H2jcWZjzhZjAMccbM/VdXhPORIfA==",
+			"version": "6.2.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.2.1.tgz",
+			"integrity": "sha512-gLKqUH+lQcCL+HzsROUjBDvakc5Zaga51Y4ZAkPCXc41pzKBfyluqTr2j8zOx8QQQb7zyglu1LVoL5aSNWf2SQ==",
 			"dev": true,
 			"requires": {
-				"@mdn/browser-compat-data": "^5.5.35",
+				"@mdn/browser-compat-data": "^6.1.1",
 				"ast-metadata-inferer": "^0.8.1",
-				"browserslist": "^4.24.2",
-				"caniuse-lite": "^1.0.30001687",
+				"browserslist": "^4.25.2",
 				"find-up": "^5.0.0",
 				"globals": "^15.7.0",
 				"lodash.memoize": "^4.1.2",
@@ -4764,42 +4805,42 @@
 			}
 		},
 		"eslint-plugin-jsdoc": {
-			"version": "61.3.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.3.0.tgz",
-			"integrity": "sha512-E4m/5J5lrasd63Z74q4CCZ4PFnywnnrcvA7zZ98802NPhrZKKTp5NH+XAT+afcjXp2ps2/OQF5gPSWCT2XFCJg==",
+			"version": "62.9.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz",
+			"integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==",
 			"dev": true,
 			"requires": {
-				"@es-joy/jsdoccomment": "~0.76.0",
+				"@es-joy/jsdoccomment": "~0.86.0",
 				"@es-joy/resolve.exports": "1.2.0",
 				"are-docs-informative": "^0.0.2",
-				"comment-parser": "1.4.1",
+				"comment-parser": "1.4.6",
 				"debug": "^4.4.3",
 				"escape-string-regexp": "^4.0.0",
-				"espree": "^10.4.0",
-				"esquery": "^1.6.0",
+				"espree": "^11.2.0",
+				"esquery": "^1.7.0",
 				"html-entities": "^2.6.0",
 				"object-deep-merge": "^2.0.0",
 				"parse-imports-exports": "^0.2.4",
-				"semver": "^7.7.3",
+				"semver": "^7.7.4",
 				"spdx-expression-parse": "^4.0.0",
 				"to-valid-identifier": "^1.0.0"
 			},
 			"dependencies": {
 				"eslint-visitor-keys": {
-					"version": "4.2.1",
-					"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-					"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+					"version": "5.0.1",
+					"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+					"integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
 					"dev": true
 				},
 				"espree": {
-					"version": "10.4.0",
-					"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
-					"integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+					"version": "11.2.0",
+					"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+					"integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
 					"dev": true,
 					"requires": {
-						"acorn": "^8.15.0",
+						"acorn": "^8.16.0",
 						"acorn-jsx": "^5.3.2",
-						"eslint-visitor-keys": "^4.2.1"
+						"eslint-visitor-keys": "^5.0.1"
 					}
 				}
 			}
@@ -4815,9 +4856,9 @@
 			}
 		},
 		"eslint-plugin-mediawiki": {
-			"version": "0.8.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.2.tgz",
-			"integrity": "sha512-ydYrpkzm8IVVDQA96QPF3HnFd2xjkIEh7gixD2gvOqUbUZF0p36LtpWXOFAlPWAvHLePWbNNTD5ovd3d4hEtog==",
+			"version": "0.8.3",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.3.tgz",
+			"integrity": "sha512-RQKZd40C1taMDk5N9+aFLEBGBB95RNG7Gc54EsJ8pHsJu8//nIdpxNFWPtQz6RNxz6pZUXBnMCxzkMOLM3Mm1w==",
 			"dev": true,
 			"requires": {
 				"upath": "^2.0.1"
@@ -4835,9 +4876,9 @@
 			}
 		},
 		"eslint-plugin-n": {
-			"version": "17.23.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz",
-			"integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==",
+			"version": "17.24.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz",
+			"integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==",
 			"dev": true,
 			"requires": {
 				"@eslint-community/eslint-utils": "^4.5.0",
@@ -4880,26 +4921,26 @@
 			}
 		},
 		"eslint-plugin-no-jquery": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.1.1.tgz",
-			"integrity": "sha512-LTLO3jH/Tjr1pmxCEqtV6qmt+OChv8La4fwgG470JRpgxyFF4NOzoC9CRy92GIWD3Yjl0qLEgPmD2FLQWcNEjg==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-4.0.0.tgz",
+			"integrity": "sha512-ZR631D3qIQfgjKOAcgvYa5cB8xdTvFXAD5MbK5x5WltLSwFxmGnoaTXNtnptFU7py07ALrIe5dZRYncu4RD/Ug==",
 			"dev": true,
 			"requires": {}
 		},
 		"eslint-plugin-qunit": {
-			"version": "8.2.5",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.5.tgz",
-			"integrity": "sha512-qr7RJCYImKQjB+39q4q46i1l7p1V3joHzBE5CAYfxn5tfVFjrnjn/tw7q/kDyweU9kAIcLul0Dx/KWVUCb3BgA==",
+			"version": "8.2.6",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.6.tgz",
+			"integrity": "sha512-S1jC/DIW9J8VtNX4uG1vlf5FZVrfQFlcuiYmvTHR2IICUhubHqpWA5o+qS1tujh+81Gs39omKV2D4OXfbSJE5g==",
 			"dev": true,
 			"requires": {
-				"eslint-utils": "^3.0.0",
+				"@eslint-community/eslint-utils": "^4.4.0",
 				"requireindex": "^1.2.0"
 			}
 		},
 		"eslint-plugin-security": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz",
-			"integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-4.0.0.tgz",
+			"integrity": "sha512-tfuQT8K/Li1ZxhFzyD8wPIKtlzZxqBcPr9q0jFMQ77wWAbKBVEhaMPVQRTMTvCMUDhwBe5vPVqQPwAGk/ASfxQ==",
 			"dev": true,
 			"requires": {
 				"safe-regex": "^2.1.1"
@@ -4954,9 +4995,9 @@
 			}
 		},
 		"eslint-plugin-wdio": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.16.2.tgz",
-			"integrity": "sha512-qkqsPgxN70OnUPWMjmzJbSbvm2+Q087JIGss53/OFI4Y46xKlV5VLhLiYealaAibAiXmnfWKd0tERjZAzVL87A==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.23.0.tgz",
+			"integrity": "sha512-8tcpupzp2Qmv+uSfhzeHi42LVA9PyjkpMBPclSIkPxBfXpj4fMrejwAHu1PROh1OmJN1VQcGQUTWvSzyRcV2vA==",
 			"dev": true
 		},
 		"eslint-plugin-yml": {
@@ -5024,9 +5065,9 @@
 			"dev": true
 		},
 		"esquery": {
-			"version": "1.6.0",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
-			"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+			"version": "1.7.0",
+			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+			"integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
 			"dev": true,
 			"requires": {
 				"estraverse": "^5.1.0"
@@ -5092,30 +5133,6 @@
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 			"dev": true
 		},
-		"fast-glob": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-			"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-			"dev": true,
-			"requires": {
-				"@nodelib/fs.stat": "^2.0.2",
-				"@nodelib/fs.walk": "^1.2.3",
-				"glob-parent": "^5.1.2",
-				"merge2": "^1.3.0",
-				"micromatch": "^4.0.8"
-			},
-			"dependencies": {
-				"glob-parent": {
-					"version": "5.1.2",
-					"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-					"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-					"dev": true,
-					"requires": {
-						"is-glob": "^4.0.1"
-					}
-				}
-			}
-		},
 		"fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -5241,9 +5258,9 @@
 			"dev": true
 		},
 		"get-tsconfig": {
-			"version": "4.13.0",
-			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
-			"integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+			"version": "4.14.0",
+			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+			"integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
 			"dev": true,
 			"requires": {
 				"resolve-pkg-maps": "^1.0.0"
@@ -5671,9 +5688,9 @@
 			}
 		},
 		"jsdoc-type-pratt-parser": {
-			"version": "6.10.0",
-			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz",
-			"integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==",
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz",
+			"integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==",
 			"dev": true
 		},
 		"jsesc": {
@@ -5809,12 +5826,6 @@
 			"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
 			"dev": true
 		},
-		"merge2": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-			"dev": true
-		},
 		"micromatch": {
 			"version": "4.0.8",
 			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
@@ -6339,9 +6350,9 @@
 			"dev": true
 		},
 		"semver": {
-			"version": "7.7.3",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-			"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+			"version": "7.7.4",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+			"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
 			"dev": true
 		},
 		"shebang-command": {
@@ -6440,9 +6451,9 @@
 			"dev": true
 		},
 		"tapable": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
-			"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+			"integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
 			"dev": true
 		},
 		"text-table": {
@@ -6451,6 +6462,31 @@
 			"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
 			"dev": true
 		},
+		"tinyglobby": {
+			"version": "0.2.16",
+			"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+			"integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+			"dev": true,
+			"requires": {
+				"fdir": "^6.5.0",
+				"picomatch": "^4.0.4"
+			},
+			"dependencies": {
+				"fdir": {
+					"version": "6.5.0",
+					"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+					"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+					"dev": true,
+					"requires": {}
+				},
+				"picomatch": {
+					"version": "4.0.4",
+					"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+					"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+					"dev": true
+				}
+			}
+		},
 		"to-regex-range": {
 			"version": "5.0.1",
 			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -6471,9 +6507,9 @@
 			}
 		},
 		"ts-api-utils": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
-			"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
+			"integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
 			"dev": true,
 			"requires": {}
 		},
diff --git a/package.json b/package.json
index 3992c7c..a258731 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
 		"test": "grunt test"
 	},
 	"devDependencies": {
-		"eslint-config-wikimedia": "0.32.3",
+		"eslint-config-wikimedia": "0.32.4",
 		"grunt": "1.6.2",
 		"grunt-banana-checker": "0.13.0",
 		"grunt-eslint": "24.3.0"
-- 
2.47.3

$ date
--- stdout ---
Wed May  6 07:59:31 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-PageForms.git /src/repo --depth=1 -b master
--- stderr ---
Cloning into '/src/repo'...
--- stdout ---

--- end ---
$ git config user.name libraryupgrader
--- stdout ---

--- end ---
$ git config user.email tools.libraryupgrader@tools.wmflabs.org
--- stdout ---

--- end ---
$ git submodule update --init
--- stdout ---

--- end ---
$ grr init
--- stdout ---
Installed commit-msg hook.

--- end ---
$ git show-ref refs/heads/master
--- stdout ---
b779433c21c30ab5e9ea6d64b35ee23868e97044 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 321,
      "optional": 0,
      "peer": 1,
      "peerOptional": 0,
      "total": 321
    }
  }
}

--- end ---
$ /usr/bin/composer install
--- stderr ---
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 38 installs, 0 updates, 0 removals
  - Locking composer/installers (v2.3.0)
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.4)
  - Locking composer/spdx-licenses (1.5.10)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking danog/advanced-json-rpc (v3.2.3)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
  - Locking doctrine/deprecations (1.1.6)
  - Locking mediawiki/mediawiki-codesniffer (v50.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.20.0)
  - Locking mediawiki/minus-x (2.0.1)
  - Locking mediawiki/phan-taint-check-plugin (9.1.0)
  - Locking netresearch/jsonmapper (v5.0.1)
  - Locking phan/phan (6.0.2)
  - Locking phan/tolerant-php-parser (v0.2.0)
  - Locking phan/var_representation_polyfill (0.1.4)
  - Locking php-parallel-lint/php-console-color (v1.0.1)
  - Locking php-parallel-lint/php-console-highlighter (v1.0.0)
  - Locking php-parallel-lint/php-parallel-lint (v1.4.0)
  - Locking phpcsstandards/phpcsextra (1.4.0)
  - Locking phpcsstandards/phpcsutils (1.2.2)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (6.0.3)
  - Locking phpdocumentor/type-resolver (2.0.0)
  - Locking phpstan/phpdoc-parser (2.3.2)
  - Locking psr/container (2.0.2)
  - Locking psr/log (3.0.2)
  - Locking sabre/event (6.1.0)
  - Locking squizlabs/php_codesniffer (3.13.5)
  - Locking symfony/console (v8.0.9)
  - Locking symfony/deprecation-contracts (v3.6.0)
  - Locking symfony/polyfill-ctype (v1.37.0)
  - Locking symfony/polyfill-intl-grapheme (v1.37.0)
  - Locking symfony/polyfill-intl-normalizer (v1.37.0)
  - Locking symfony/polyfill-mbstring (v1.37.0)
  - Locking symfony/service-contracts (v3.6.1)
  - Locking symfony/string (v8.0.8)
  - Locking webmozart/assert (2.3.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 38 installs, 0 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Installing composer/installers (v2.3.0): Extracting archive
  - Installing squizlabs/php_codesniffer (3.13.5): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.2.2): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.37.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.10): Extracting archive
  - Installing composer/semver (3.4.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v50.0.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.37.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.37.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.37.0): Extracting archive
  - Installing symfony/string (v8.0.8): Extracting archive
  - Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.6.1): Extracting archive
  - Installing symfony/console (v8.0.9): Extracting archive
  - Installing sabre/event (6.1.0): Extracting archive
  - Installing phan/var_representation_polyfill (0.1.4): Extracting archive
  - Installing phan/tolerant-php-parser (v0.2.0): Extracting archive
  - Installing netresearch/jsonmapper (v5.0.1): Extracting archive
  - Installing webmozart/assert (2.3.0): Extracting archive
  - Installing phpstan/phpdoc-parser (2.3.2): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing doctrine/deprecations (1.1.6): Extracting archive
  - Installing phpdocumentor/type-resolver (2.0.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (6.0.3): Extracting archive
  - Installing danog/advanced-json-rpc (v3.2.3): Extracting archive
  - Installing psr/log (3.0.2): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (6.0.2): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (9.1.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.20.0): Extracting archive
  - Installing mediawiki/minus-x (2.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-color (v1.0.1): Extracting archive
  - Installing php-parallel-lint/php-console-highlighter (v1.0.0): Extracting archive
  - Installing php-parallel-lint/php-parallel-lint (v1.4.0): Extracting archive
  0/35 [>---------------------------]   0%
 27/35 [=====================>------]  77%
 35/35 [============================] 100%
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
Upgrading n:eslint-config-wikimedia from 0.32.3 -> 0.32.4
$ /usr/bin/npm install
--- stderr ---
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---

added 323 packages, and audited 324 packages in 5s

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

found 0 vulnerabilities

--- end ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
$ /usr/bin/npm install grunt-eslint@24.3.0 --save-exact
--- stdout ---

up to date, audited 324 packages in 899ms

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

found 0 vulnerabilities

--- end ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
$ ./node_modules/.bin/eslint i18n/mk.json i18n/tg-latn.json i18n/sc.json i18n/tk.json i18n/tet.json i18n/inh.json i18n/lmo.json libs/PF_maps.offline.js i18n/rue.json libs/PF_regexp.js i18n/ha.json i18n/vep.json libs/PF_collapsible.js i18n/arz.json i18n/isv-latn.json i18n/hi.json i18n/et.json i18n/sco.json libs/PF_popupform.js i18n/pap.json libs/PF_simpleupload.js i18n/got.json i18n/grc.json i18n/uz.json composer.json i18n/fit.json i18n/jbo.json i18n/hr.json i18n/ne.json i18n/de.json i18n/th.json i18n/wa.json i18n/haw.json i18n/bs.json i18n/ru.json i18n/pms.json i18n/tcy.json i18n/ca.json libs/PF_CreateProperty.js i18n/id.json i18n/uk.json i18n/ps.json libs/ext.pf.select2.tokens.js i18n/km.json i18n/sa.json i18n/an.json i18n/sw.json libs/PF_imagePreview.js i18n/tt-cyrl.json i18n/ky.json i18n/lb.json i18n/pt-br.json i18n/dag.json i18n/stq.json i18n/yi.json libs/PF_autogrow.js i18n/roa-tara.json i18n/za.json i18n/vi.json i18n/wuu-hans.json libs/PF_SpreadsheetComboBoxInput.js i18n/ko.json i18n/fr.json i18n/as.json libs/PF_tree.js i18n/syl.json i18n/vo.json i18n/yue-hant.json i18n/lki.json i18n/mnw.json i18n/gsw.json i18n/gl.json i18n/avk.json i18n/ml.json i18n/tyv.json i18n/myv.json i18n/si.json i18n/hy.json i18n/pl.json i18n/tw.json libs/PF_maps.js libs/PF_editWarning.js i18n/fi.json libs/PF_datepicker.js libs/ext.pf.js i18n/qqq.json i18n/te.json i18n/nn.json i18n/ce.json i18n/lt.json i18n/pam.json i18n/tg-cyrl.json i18n/hu.json i18n/rif.json i18n/ttj.json i18n/pdc.json i18n/nl.json i18n/gcr.json i18n/br.json i18n/shn.json libs/PF_checkboxes.js i18n/nb.json i18n/frp.json libs/PF_submit.js i18n/ja.json i18n/es.json libs/PF_FullCalendar.js i18n/udm.json i18n/pfl.json i18n/pt.json libs/PF_CreateForm.js i18n/cs.json libs/PF_wikieditor.js i18n/az.json libs/PF_SpreadsheetAutocompleteWidget.js i18n/ht.json i18n/blk.json i18n/mr.json i18n/tly.json i18n/pnb.json i18n/be.json i18n/zh-tw.json i18n/ga.json i18n/mwl.json i18n/ast.json i18n/nqo.json i18n/sjd.json i18n/it.json i18n/da.json libs/PF_PageSchemas.js i18n/kea.json libs/PF_timepicker.js i18n/zh-hans.json i18n/aln.json i18n/frr.json i18n/azb.json i18n/ta.json extension.json i18n/be-tarask.json i18n/ff.json i18n/sl.json Gruntfile.js i18n/ba.json i18n/sk.json i18n/gv.json i18n/bg.json i18n/am.json libs/PF_rating.js libs/PF_ComboBoxInput.js i18n/eo.json i18n/zh-hant.json i18n/dsb.json i18n/he.json libs/PF_autoedit.js i18n/krj.json libs/PF_datetimepicker.js i18n/sr-el.json i18n/so.json i18n/tr.json i18n/li.json i18n/ur.json i18n/pa.json i18n/fy.json i18n/ka.json i18n/gom-latn.json i18n/kjp.json i18n/en.json i18n/gu.json i18n/bar.json package.json i18n/mt.json i18n/kw.json i18n/kiu.json i18n/ia.json i18n/ro.json i18n/ksh.json i18n/ig.json i18n/bug-bugi.json i18n/bcc.json i18n/sah.json i18n/sh-latn.json i18n/atj.json i18n/is.json i18n/tl.json i18n/sd.json i18n/lv.json i18n/sv.json package-lock.json libs/PF_AutoEditRating.js i18n/mzn.json i18n/ms.json i18n/io.json libs/uploadable/init.js i18n/sms.json i18n/nds.json i18n/krc.json libs/PF_formInput.js i18n/my.json i18n/cu.json i18n/szl.json i18n/szy.json i18n/sq.json i18n/mn.json i18n/fa.json i18n/scn.json libs/PageForms.js libs/ext.pf.select2.base.js i18n/diq.json i18n/kri.json libs/PF_AutocompleteWidget.js i18n/fo.json i18n/ckb.json i18n/sr-ec.json i18n/mhr.json i18n/se.json i18n/bgn.json i18n/ti.json libs/PF_CreateTemplate.js i18n/om.json libs/PF_CreateClass.js i18n/ug-arab.json i18n/kab.json i18n/nds-nl.json i18n/af.json i18n/nso.json i18n/bjn.json i18n/oc.json i18n/rmc.json i18n/nah.json i18n/zgh.json i18n/hsb.json i18n/or.json i18n/os.json i18n/bcl.json libs/PF_preview.js i18n/bn.json i18n/kn.json libs/PF_spreadsheet.js i18n/eu.json i18n/tzm.json i18n/ar.json i18n/su.json libs/widgets/mw.widgets.PFDateInputWidget.js i18n/cv.json i18n/ku-latn.json i18n/el.json i18n/min.json i18n/jv.json i18n/bug.json i18n/skr-arab.json libs/uploadable/Booklet.js i18n/arc.json i18n/smn.json --fix
--- stderr ---
[baseline-browser-mapping] The data in this module is over two months old.  To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
--- stdout ---

/src/repo/libs/PF_AutoEditRating.js
  63:23  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  65:4   warning  Prefer .then to .done                                                         no-jquery/no-done-fail

/src/repo/libs/PF_AutocompleteWidget.js
   68:3   warning  'value' is never reassigned. Use 'const' instead          prefer-const
   69:3   warning  'deferred' is never reassigned. Use 'const' instead       prefer-const
   73:2   warning  'api' is never reassigned. Use 'const' instead            prefer-const
   74:2   warning  'requestParams' is never reassigned. Use 'const' instead  prefer-const
  100:3   warning  'items' is never reassigned. Use 'const' instead          prefer-const
  139:18  warning  Prefer `String#slice()` over `String#substr()`            unicorn/prefer-string-slice

/src/repo/libs/PF_ComboBoxInput.js
  129:9   warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  145:51  warning  ES2015 default parameters are forbidden                                       es-x/no-default-parameters
  146:7   warning  'input_id' is never reassigned. Use 'const' instead                           prefer-const
  147:4   warning  'values' is never reassigned. Use 'const' instead                             prefer-const
  148:4   warning  'dep_on' is never reassigned. Use 'const' instead                             prefer-const
  149:4   warning  'self' is never reassigned. Use 'const' instead                               prefer-const
  154:4   warning  'wgPageFormsAutocompleteOnAllChars' is never reassigned. Use 'const' instead  prefer-const
  158:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  165:5   warning  'data_type' is never reassigned. Use 'const' instead                          prefer-const
  550:18  warning  Prefer `String#slice()` over `String#substr()`                                unicorn/prefer-string-slice

/src/repo/libs/PF_CreateClass.js
  32:2  warning  Unexpected var, use let or const instead  no-var
  38:2  warning  Unexpected var, use let or const instead  no-var

/src/repo/libs/PF_CreateForm.js
  60:3  warning  Expected no linebreak before this expression  implicit-arrow-linebreak

/src/repo/libs/PF_FullCalendar.js
   59:7   warning  'events' is never reassigned. Use 'const' instead                             prefer-const
   59:90  warning  'eventsNoDate' is never reassigned. Use 'const' instead                       prefer-const
  669:11  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  871:11  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_SpreadsheetAutocompleteWidget.js
   42:3   warning  'deferred' is never reassigned. Use 'const' instead               prefer-const
   52:2   warning  'api' is never reassigned. Use 'const' instead                    prefer-const
   53:2   warning  'requestParams' is never reassigned. Use 'const' instead          prefer-const
  100:3   warning  'items' is never reassigned. Use 'const' instead                  prefer-const
  122:7   warning  'self' is never reassigned. Use 'const' instead                   prefer-const
  123:4   warning  'wgPageFormsEDSettings' is never reassigned. Use 'const' instead  prefer-const
  124:4   warning  'name' is never reassigned. Use 'const' instead                   prefer-const
  125:4   warning  'edgValues' is never reassigned. Use 'const' instead              prefer-const
  177:17  warning  Prefer `String#slice()` over `String#substr()`                    unicorn/prefer-string-slice
  224:2   warning  '$baseElement' is never reassigned. Use 'const' instead           prefer-const

/src/repo/libs/PF_SpreadsheetComboBoxInput.js
   30:6   warning  'data_source' is never reassigned. Use 'const' instead                          prefer-const
   31:3   warning  'data_type' is never reassigned. Use 'const' instead                            prefer-const
   33:3   warning  'self' is never reassigned. Use 'const' instead                                 prefer-const
   34:3   warning  'values' is never reassigned. Use 'const' instead                               prefer-const
   50:5   warning  Unexpected var, use let or const instead                                        no-var
   54:7   warning  Unexpected var, use let or const instead                                        no-var
   54:11  warning  'valueFilter' declared on line 56 column 11 is used outside of binding context  block-scoped-var
   56:7   warning  Unexpected var, use let or const instead                                        no-var
   56:11  warning  'valueFilter' declared on line 54 column 11 is used outside of binding context  block-scoped-var
   58:11  warning  'valueFilter' declared on line 54 column 11 is used outside of binding context  block-scoped-var
   58:11  warning  'valueFilter' declared on line 56 column 11 is used outside of binding context  block-scoped-var
  114:13  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  114:20  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  114:37  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  116:20  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  116:62  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  130:1   warning  Missing JSDoc @return type                                                      jsdoc/require-returns-type
  145:17  warning  Prefer `String#slice()` over `String#substr()`                                  unicorn/prefer-string-slice
  189:1   warning  The type 'integer' is undefined                                                 jsdoc/no-undefined-types
  196:2   warning  jQuery collection names must match the variablePattern                          no-jquery/variable-pattern
  196:2   warning  'baseElement' is never reassigned. Use 'const' instead                          prefer-const

/src/repo/libs/PF_autoedit.js
   15:18  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
   89:23  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  100:4   warning  Prefer .then to .done                                                         no-jquery/no-done-fail

/src/repo/libs/PF_checkboxes.js
  4:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  5:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type

/src/repo/libs/PF_collapsible.js
  30:8  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_datepicker.js
   4:1  warning  Missing JSDoc @param "$" type                                                 jsdoc/require-param-type
   5:1  warning  Missing JSDoc @param "oo" type                                                jsdoc/require-param-type
   6:1  warning  Missing JSDoc @param "mw" type                                                jsdoc/require-param-type
   7:1  warning  Missing JSDoc @param "pf" type                                                jsdoc/require-param-type
  18:9  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_datetimepicker.js
  4:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  5:1  warning  Missing JSDoc @param "oo" type  jsdoc/require-param-type
  6:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type
  7:1  warning  Missing JSDoc @param "pf" type  jsdoc/require-param-type

/src/repo/libs/PF_editWarning.js
  21:44  warning  'origValues' is never reassigned. Use 'const' instead                         prefer-const
  22:4   warning  '$allInputs' is never reassigned. Use 'const' instead                         prefer-const
  32:9   warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  40:3   warning  'allowCloseWindow' is never reassigned. Use 'const' instead                   prefer-const
  61:11  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_formInput.js
   6:1  warning  Missing JSDoc @param "$" type             jsdoc/require-param-type
   7:1  warning  Missing JSDoc @param "mw" type            jsdoc/require-param-type
  21:4  warning  ES2015 'for-of' statements are forbidden  es-x/no-for-of-loops
  82:4  warning  ES2015 'for-of' statements are forbidden  es-x/no-for-of-loops

/src/repo/libs/PF_imagePreview.js
  4:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  5:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type

/src/repo/libs/PF_maps.js
  236:4  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/libs/PF_maps.offline.js
  258:7  warning  'addressText' is never reassigned. Use 'const' instead  prefer-const
  272:4  warning  Prefer .then to .done                                   no-jquery/no-done-fail

/src/repo/libs/PF_popupform.js
  315:3   warning  jQuery collection names must match the variablePattern                        no-jquery/variable-pattern
  586:3   warning  ES2024 Resizable ArrayBuffer is forbidden                                     es-x/no-resizable-and-growable-arraybuffers
  604:5   warning  Unexpected var, use let or const instead                                      no-var
  695:12  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  709:12  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_preview.js
  56:3  warning  ES2024 Resizable ArrayBuffer is forbidden  es-x/no-resizable-and-growable-arraybuffers

/src/repo/libs/PF_rating.js
  43:4  warning  Selector extensions are not allowed  no-jquery/no-sizzle

/src/repo/libs/PF_simpleupload.js
   5:1  warning  Missing JSDoc @param "$" type                            jsdoc/require-param-type
   6:1  warning  Missing JSDoc @param "mw" type                           jsdoc/require-param-type
  45:4  warning  'loadingImage' is never reassigned. Use 'const' instead  prefer-const

/src/repo/libs/PF_spreadsheet.js
  326:3   warning  'editor' is never reassigned. Use 'const' instead                            prefer-const
  373:7   warning  'templateName' is never reassigned. Use 'const' instead                      prefer-const
  374:4   warning  'formName' is never reassigned. Use 'const' instead                          prefer-const
  376:4   warning  'editMultiplePages' is never reassigned. Use 'const' instead                 prefer-const
  394:3   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  440:3   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  534:5   warning  Unexpected var, use let or const instead                                     no-var
  687:6   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  690:7   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  706:6   warning  Unexpected var, use let or const instead                                     no-var
  751:12  warning  'columnParams' is already declared in the upper scope on line 853 column 11  no-shadow
  863:10  warning  'numberOfColumns' is never reassigned. Use 'const' instead                   prefer-const
  863:28  warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle
  867:6   warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle
  924:7   warning  'templateName' is never reassigned. Use 'const' instead                      prefer-const
  925:4   warning  'table' is never reassigned. Use 'const' instead                             prefer-const
  927:4   warning  'editMultiplePages' is never reassigned. Use 'const' instead                 prefer-const
  928:27  warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle
  933:4   warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle

/src/repo/libs/PF_submit.js
  142:46  warning  Prefer `String#slice()` over `String#substring()`                   unicorn/prefer-string-slice
  175:10  warning  '$form' is already declared in the upper scope on line 14 column 6  no-shadow

/src/repo/libs/PF_timepicker.js
  62:9  warning  Selector extensions are not allowed  no-jquery/no-sizzle

/src/repo/libs/PF_tree.js
  6:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  7:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type
  8:1  warning  Missing JSDoc @param "pf" type  jsdoc/require-param-type

/src/repo/libs/PageForms.js
   201:10  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
   232:19  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
   243:9   warning  Selector extensions are not allowed                                                                  no-jquery/no-sizzle
   293:3   warning  'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead                                   prefer-const
   345:6   warning  'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead                                   prefer-const
   371:6   warning  'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead                                   prefer-const
   771:3   warning  Unexpected var, use let or const instead                                                             no-var
   840:2   warning  Unexpected var, use let or const instead                                                             no-var
   840:6   warning  'negative' declared on line 843 column 7 is used outside of binding context                          block-scoped-var
   843:3   warning  Unexpected var, use let or const instead                                                             no-var
   849:7   warning  'negative' declared on line 843 column 7 is used outside of binding context                          block-scoped-var
  1023:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1024:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1030:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1031:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1125:9   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1232:9   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1246:1   warning  JSDoc @return declaration present but return expression not available in function                    jsdoc/require-returns-check
  1265:10  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1269:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1474:27  warning  Selector extensions are not allowed                                                                  no-jquery/no-sizzle
  1490:3   warning  'wgPageFormsCargoFields' is never reassigned. Use 'const' instead                                    prefer-const
  1491:3   warning  'wgPageFormsFieldProperties' is never reassigned. Use 'const' instead                                prefer-const
  1565:4   warning  'dependentField' is never reassigned. Use 'const' instead                                            prefer-const
  1574:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1703:9   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1710:10  warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1789:19  warning  OOUI button has no label. Even icon-only buttons should set a label with invisibleLabel set to true  mediawiki/no-unlabeled-buttonwidget
  1970:30  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1983:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1987:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1992:7   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state

/src/repo/libs/ext.pf.select2.base.js
  313:6  warning  Prefer `String#slice()` over `String#substr()`  unicorn/prefer-string-slice
  314:6  warning  Prefer `String#slice()` over `String#substr()`  unicorn/prefer-string-slice

/src/repo/libs/widgets/mw.widgets.PFDateInputWidget.js
  24:2  warning  Missing JSDoc @return declaration                                 jsdoc/require-returns
  30:1  warning  Missing JSDoc @param "date" type                                  jsdoc/require-param-type
  31:1  warning  Missing JSDoc @param "format" type                                jsdoc/require-param-type
  43:4  warning  'inputFormat' is never reassigned. Use 'const' instead            prefer-const
  44:4  warning  'value' is never reassigned. Use 'const' instead                  prefer-const
  45:4  warning  'valid' is never reassigned. Use 'const' instead                  prefer-const
  53:3  warning  'mom' is never reassigned. Use 'const' instead                    prefer-const
  78:4  warning  'inputFormat' is never reassigned. Use 'const' instead            prefer-const
  84:3  warning  'moment' is never reassigned. Use 'const' instead                 prefer-const
  85:3  warning  'parsedDatePartsLength' is never reassigned. Use 'const' instead  prefer-const

✖ 164 problems (0 errors, 164 warnings)


--- end ---
$ ./node_modules/.bin/eslint i18n/mk.json i18n/tg-latn.json i18n/sc.json i18n/tk.json i18n/tet.json i18n/inh.json i18n/lmo.json libs/PF_maps.offline.js i18n/rue.json libs/PF_regexp.js i18n/ha.json i18n/vep.json libs/PF_collapsible.js i18n/arz.json i18n/isv-latn.json i18n/hi.json i18n/et.json i18n/sco.json libs/PF_popupform.js i18n/pap.json libs/PF_simpleupload.js i18n/got.json i18n/grc.json i18n/uz.json composer.json i18n/fit.json i18n/jbo.json i18n/hr.json i18n/ne.json i18n/de.json i18n/th.json i18n/wa.json i18n/haw.json i18n/bs.json i18n/ru.json i18n/pms.json i18n/tcy.json i18n/ca.json libs/PF_CreateProperty.js i18n/id.json i18n/uk.json i18n/ps.json libs/ext.pf.select2.tokens.js i18n/km.json i18n/sa.json i18n/an.json i18n/sw.json libs/PF_imagePreview.js i18n/tt-cyrl.json i18n/ky.json i18n/lb.json i18n/pt-br.json i18n/dag.json i18n/stq.json i18n/yi.json libs/PF_autogrow.js i18n/roa-tara.json i18n/za.json i18n/vi.json i18n/wuu-hans.json libs/PF_SpreadsheetComboBoxInput.js i18n/ko.json i18n/fr.json i18n/as.json libs/PF_tree.js i18n/syl.json i18n/vo.json i18n/yue-hant.json i18n/lki.json i18n/mnw.json i18n/gsw.json i18n/gl.json i18n/avk.json i18n/ml.json i18n/tyv.json i18n/myv.json i18n/si.json i18n/hy.json i18n/pl.json i18n/tw.json libs/PF_maps.js libs/PF_editWarning.js i18n/fi.json libs/PF_datepicker.js libs/ext.pf.js i18n/qqq.json i18n/te.json i18n/nn.json i18n/ce.json i18n/lt.json i18n/pam.json i18n/tg-cyrl.json i18n/hu.json i18n/rif.json i18n/ttj.json i18n/pdc.json i18n/nl.json i18n/gcr.json i18n/br.json i18n/shn.json libs/PF_checkboxes.js i18n/nb.json i18n/frp.json libs/PF_submit.js i18n/ja.json i18n/es.json libs/PF_FullCalendar.js i18n/udm.json i18n/pfl.json i18n/pt.json libs/PF_CreateForm.js i18n/cs.json libs/PF_wikieditor.js i18n/az.json libs/PF_SpreadsheetAutocompleteWidget.js i18n/ht.json i18n/blk.json i18n/mr.json i18n/tly.json i18n/pnb.json i18n/be.json i18n/zh-tw.json i18n/ga.json i18n/mwl.json i18n/ast.json i18n/nqo.json i18n/sjd.json i18n/it.json i18n/da.json libs/PF_PageSchemas.js i18n/kea.json libs/PF_timepicker.js i18n/zh-hans.json i18n/aln.json i18n/frr.json i18n/azb.json i18n/ta.json extension.json i18n/be-tarask.json i18n/ff.json i18n/sl.json Gruntfile.js i18n/ba.json i18n/sk.json i18n/gv.json i18n/bg.json i18n/am.json libs/PF_rating.js libs/PF_ComboBoxInput.js i18n/eo.json i18n/zh-hant.json i18n/dsb.json i18n/he.json libs/PF_autoedit.js i18n/krj.json libs/PF_datetimepicker.js i18n/sr-el.json i18n/so.json i18n/tr.json i18n/li.json i18n/ur.json i18n/pa.json i18n/fy.json i18n/ka.json i18n/gom-latn.json i18n/kjp.json i18n/en.json i18n/gu.json i18n/bar.json package.json i18n/mt.json i18n/kw.json i18n/kiu.json i18n/ia.json i18n/ro.json i18n/ksh.json i18n/ig.json i18n/bug-bugi.json i18n/bcc.json i18n/sah.json i18n/sh-latn.json i18n/atj.json i18n/is.json i18n/tl.json i18n/sd.json i18n/lv.json i18n/sv.json package-lock.json libs/PF_AutoEditRating.js i18n/mzn.json i18n/ms.json i18n/io.json libs/uploadable/init.js i18n/sms.json i18n/nds.json i18n/krc.json libs/PF_formInput.js i18n/my.json i18n/cu.json i18n/szl.json i18n/szy.json i18n/sq.json i18n/mn.json i18n/fa.json i18n/scn.json libs/PageForms.js libs/ext.pf.select2.base.js i18n/diq.json i18n/kri.json libs/PF_AutocompleteWidget.js i18n/fo.json i18n/ckb.json i18n/sr-ec.json i18n/mhr.json i18n/se.json i18n/bgn.json i18n/ti.json libs/PF_CreateTemplate.js i18n/om.json libs/PF_CreateClass.js i18n/ug-arab.json i18n/kab.json i18n/nds-nl.json i18n/af.json i18n/nso.json i18n/bjn.json i18n/oc.json i18n/rmc.json i18n/nah.json i18n/zgh.json i18n/hsb.json i18n/or.json i18n/os.json i18n/bcl.json libs/PF_preview.js i18n/bn.json i18n/kn.json libs/PF_spreadsheet.js i18n/eu.json i18n/tzm.json i18n/ar.json i18n/su.json libs/widgets/mw.widgets.PFDateInputWidget.js i18n/cv.json i18n/ku-latn.json i18n/el.json i18n/min.json i18n/jv.json i18n/bug.json i18n/skr-arab.json libs/uploadable/Booklet.js i18n/arc.json i18n/smn.json -f json
--- stderr ---
[baseline-browser-mapping] The data in this module is over two months old.  To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
--- stdout ---
[{"filePath":"/src/repo/Gruntfile.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/composer.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/extension.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/af.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/aln.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/am.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/an.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/arc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/arz.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/as.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ast.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/atj.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/avk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/az.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/azb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ba.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bar.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bcc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bcl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/be-tarask.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/be.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bg.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bgn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bjn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/blk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bs.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bug-bugi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/bug.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ca.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ce.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ckb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/cs.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/cu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/cv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/da.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/dag.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/de.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/diq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/dsb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/en.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/eo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/es.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/et.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/eu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ff.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fit.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/frp.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/frr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/fy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ga.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/gcr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/gl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/gom-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/got.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/grc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/gsw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/gu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/gv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ha.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/haw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/he.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/hi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/hr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/hsb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ht.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/hu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/hy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ia.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/id.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ig.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/inh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/io.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/is.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/isv-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/it.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ja.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/jbo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/jv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ka.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kea.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kiu.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kjp.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/km.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ko.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/krc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kri.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/krj.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ksh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ku-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/kw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ky.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/lb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/li.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/lki.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/lmo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/lt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/lv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mhr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/min.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ml.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mnw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mwl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/my.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/myv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/mzn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nah.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nds-nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nds.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ne.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nqo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/nso.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/oc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/om.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/or.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/os.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pam.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pap.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pdc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pfl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pnb.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ps.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pt-br.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/pt.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/qqq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/rif.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/rmc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ro.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/roa-tara.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ru.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/rue.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sah.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sc.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/scn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sco.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sd.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/se.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sh-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/shn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/si.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sjd.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/skr-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/smn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sms.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/so.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sr-ec.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sr-el.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/stq.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/su.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/sw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/syl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/szl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/szy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ta.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tcy.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/te.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tet.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tg-cyrl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tg-latn.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/th.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ti.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tly.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tr.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tt-cyrl.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ttj.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tyv.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/tzm.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/udm.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ug-arab.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/uk.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/ur.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/uz.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/vep.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/vi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/vo.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/wa.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/wuu-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/yi.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/yue-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/za.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/zgh.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/zh-hans.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/zh-hant.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/i18n/zh-tw.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_AutoEditRating.js","messages":[{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":63,"column":23,"nodeType":"CallExpression","endLine":63,"endColumn":60},{"ruleId":"no-jquery/no-done-fail","severity":1,"message":"Prefer .then to .done","line":65,"column":4,"nodeType":"CallExpression","endLine":70,"endColumn":8}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function( $, mw ) {\n\t'use strict';\n\n\tfunction sendData( $jtrigger ) {\n\t\tconst $jautoedit = $jtrigger.closest( '.autoedit' );\n\t\tconst $jresult = $jautoedit.find( '.autoedit-result' );\n\n\t\t$jresult.attr( 'class', 'autoedit-result autoedit-result-wait' );\n\t\t$jresult.text( mw.msg( 'pf-autoedit-wait' ) );\n\n\t\t// data array to be sent to the server\n\t\tconst data = {\n\t\t\taction: 'pfautoedit',\n\t\t\tformat: 'json'\n\t\t};\n\n\t\t// add form values to the data\n\t\tdata.query = $jautoedit.find( 'form.autoedit-data' )\n\t\t\t.serialize();\n\t\t$.ajax( {\n\t\t\ttype: 'POST', // request type ( GET or POST )\n\t\t\turl: mw.util.wikiScript( 'api' ), // URL to which the request is sent\n\t\t\tdata: data, // data to be sent to the server\n\t\t\tdataType: 'json', // type of data expected back from the server\n\t\t\tsuccess: function( result ) {\n\t\t\t\t$jresult.empty()\n\t\t\t\t\t.append( result.responseText );\n\t\t\t\tif ( result.status === 200 ) {\n\t\t\t\t\t$jresult.removeClass( 'autoedit-result-wait' )\n\t\t\t\t\t\t.addClass( 'autoedit-result-ok' );\n\t\t\t\t} else {\n\t\t\t\t\t$jresult.removeClass( 'autoedit-result-wait' )\n\t\t\t\t\t\t.addClass( 'autoedit-result-error' );\n\t\t\t\t}\n\t\t\t}, // function to be called if the request succeeds\n\t\t\terror: function( jqXHR ) {\n\t\t\t\t\tconst result = jQuery.parseJSON( jqXHR.responseText );\n\t\t\t\t\tlet text = result.responseText;\n\n\t\t\t\t\tfor ( let i = 0; i < result.errors.length; i++ ) {\n\t\t\t\t\t\ttext += ' ' + result.errors[ i ].message;\n\t\t\t\t\t}\n\n\t\t\t\t\t$jresult.empty()\n\t\t\t\t\t\t.append( text );\n\t\t\t\t\t$jresult.removeClass( 'autoedit-result-wait' )\n\t\t\t\t\t\t.addClass( 'autoedit-result-error' );\n\t\t\t\t} // function to be called if the request fails\n\t\t} );\n\t}\n\n\tfunction handleAutoEditRating( $jtrigger, value ) {\n\t\tif ( mw.config.get( 'wgUserName' ) === null &&\n\t\t\t!confirm( mw.msg( 'pf_autoedit_anoneditwarning' ) ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst $jautoedit = $jtrigger.closest( '.autoedit' );\n\t\tconst $jeditdata = $jautoedit.find( 'form.autoedit-data' );\n\t\t$jeditdata.find( '#ratingInput' )\n\t\t\t.attr( \"value\", value );;\n\t\tconst targetpage = $jeditdata.find( 'input[name=target]' )\n\t\t\t.val();\n\t\tconst confirmEdit = $jeditdata.hasClass( 'confirm-edit' );\n\t\tif ( confirmEdit ) {\n\t\t\tOO.ui.confirm( mw.msg( 'pf_autoedit_confirm', targetpage ) )\n\t\t\t\t.done( (confirmed) => {\n\t\t\t\t\tif ( confirmed ) {\n\t\t\t\t\t\tsendData( $jtrigger );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t} else {\n\t\t\tsendData( $jtrigger );\n\t\t}\n\t};\n\n\tjQuery.fn.applyRatingInput = function( fromCalendar ) {\n\t\tconst starWidth = $( this )\n\t\t\t.attr( 'data-starwidth' );\n\t\tlet curValue = $( this )\n\t\t\t.attr( 'data-curvalue' );;\n\t\tconst numStars = $( this )\n\t\t\t.attr( 'data-numstars' );\n\t\tconst allowsHalf = $( this )\n\t\t\t.attr( 'data-allows-half' );\n\n\t\tif ( curValue === '' || curValue === undefined ) {\n\t\t\tcurValue = 0;\n\t\t}\n\n\t\tconst ratingsSettings = {\n\t\t\tnormalFill: '#ddd',\n\t\t\tstarWidth: starWidth,\n\t\t\tnumStars: numStars,\n\t\t\tmaxValue: numStars,\n\t\t\trating: curValue\n\t\t};\n\n\t\tif ( allowsHalf === undefined ) {\n\t\t\tratingsSettings.fullStar = true;\n\t\t} else {\n\t\t\tratingsSettings.halfStar = true;\n\t\t}\n\n\t\t$( this )\n\t\t\t.rateYo( ratingsSettings )\n\t\t\t.on( \"rateyo.set\", function( e, data ) {\n\t\t\t\thandleAutoEditRating( $( this )\n\t\t\t\t\t.parent(), data.rating );\n\t\t\t} );\n\t};\n\n\t$( function() {\n\t\t$( this )\n\t\t\t.find( '.pfRating' )\n\t\t\t.each( function() {\n\t\t\t\t$( this )\n\t\t\t\t\t.applyRatingInput();\n\t\t\t} )\n\t} );\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_AutocompleteWidget.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'value' is never reassigned. Use 'const' instead.","line":68,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":68,"endColumn":8},{"ruleId":"prefer-const","severity":1,"message":"'deferred' is never reassigned. Use 'const' instead.","line":69,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":69,"endColumn":11},{"ruleId":"prefer-const","severity":1,"message":"'api' is never reassigned. Use 'const' instead.","line":73,"column":2,"nodeType":"Identifier","messageId":"useConst","endLine":73,"endColumn":5},{"ruleId":"prefer-const","severity":1,"message":"'requestParams' is never reassigned. Use 'const' instead.","line":74,"column":2,"nodeType":"Identifier","messageId":"useConst","endLine":74,"endColumn":15},{"ruleId":"prefer-const","severity":1,"message":"'items' is never reassigned. Use 'const' instead.","line":100,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":100,"endColumn":8},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substr()`.","line":139,"column":18,"nodeType":"CallExpression","messageId":"substr","endLine":139,"endColumn":58}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":6,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * An OOUI-based widget for an autocompleting text input that uses the\n * Page Forms 'pfautocomplete' API.\n *\n * @class\n * @extends OO.ui.TextInputWidget\n *\n * @constructor\n * @param {Object} config Configuration options\n * @author Yaron Koren\n * @author Sahaj Khandelwal\n * @author Yash Varshney\n */\n\npf.AutocompleteWidget = function( config ) {\n\t// Parent constructor\n\tconst textInputConfig = {\n\t\tname: 'page_name',\n\t\t// The following classes are used here:\n\t\t// * pfPageNameWithNamespace\n\t\t// * pfPageNameWithoutNamespace\n\t\tclasses: config.classes,\n\t\t// This turns off the local, browser-based autocompletion,\n\t\t// which would normally suggest values that the user has\n\t\t// typed before on that computer.\n\t\tautocomplete: false\n\t};\n\tif ( config.value !== undefined ) {\n\t\ttextInputConfig.value = config.value;\n\t}\n\tif ( config.placeholder !== undefined ) {\n\t\ttextInputConfig.placeholder = config.placeholder;\n\t}\n\tif ( config.autofocus !== undefined ) {\n\t\ttextInputConfig.autofocus = config.autofocus;\n\t}\n\tOO.ui.TextInputWidget.call( this, textInputConfig );\n\t// Mixin constructors\n\tif ( config.autocompletedatatype !== undefined ) {\n\t\tOO.ui.mixin.LookupElement.call( this, { highlightFirst: false } );\n\t}\n\n\tthis.config = config;\n\n\t// Initialization\n\tif ( config.size !== undefined && config.size !== '' ) {\n\t\tthis.$element.css('width', 'initial');\n\t\tthis.$input.css('width', 'initial');\n\t\tthis.$input.attr('size', config.size);\n\t}\n\n\t// dataCache will temporarily store entity id => entity data mappings of\n\t// entities, so that if we somehow then alter the text (add characters,\n\t// remove some) and then adjust our typing to form a known item,\n\t// it'll recognize it and know what the id was, without us having to\n\t// select it anew\n\tthis.dataCache = {};\n};\n\nOO.inheritClass( pf.AutocompleteWidget, OO.ui.TextInputWidget );\nOO.mixinClass( pf.AutocompleteWidget, OO.ui.mixin.LookupElement );\n\n/**\n * @inheritdoc\n */\npf.AutocompleteWidget.prototype.getLookupRequest = function() {\n\tlet\n\t\tvalue = this.getValue(),\n\t\tdeferred = $.Deferred(),\n\t\tapi,\n\t\trequestParams;\n\n\tapi = new mw.Api();\n\trequestParams = {\n\t\taction: 'pfautocomplete',\n\t\tformat: 'json',\n\t\tsubstr: value\n\t};\n\n\tif ( this.config.autocompletedatatype == 'category' ) {\n\t\trequestParams.category = this.config.autocompletesettings;\n\t} else if ( this.config.autocompletedatatype == 'namespace' ) {\n\t\trequestParams.namespace = this.config.autocompletesettings;\n\t}\n\n\treturn api.get( requestParams );\n};\n/**\n * @inheritdoc\n */\npf.AutocompleteWidget.prototype.getLookupCacheDataFromResponse = function( response ) {\n\treturn response || [];\n};\n/**\n * @inheritdoc\n */\npf.AutocompleteWidget.prototype.getLookupMenuOptionsFromData = function( data ) {\n\tlet i,\n\t\titem,\n\t\titems = [];\n\n\tdata = data.pfautocomplete;\n\tif ( this.maxSuggestions !== undefined ) {\n\t\tdata = data.slice( 0, this.maxSuggestions - 1 );\n\t}\n\tif ( !data ) {\n\t\treturn [];\n\t} else if ( data.length === 0 ) {\n\t\t// Generate a disabled option with a helpful message in case no results are found.\n\t\treturn [\n\t\t\tnew OO.ui.MenuOptionWidget( {\n\t\t\t\tdisabled: true,\n\t\t\t\tlabel: mw.message( 'pf-autocomplete-no-matches' ).text()\n\t\t\t} )\n\t\t];\n\t}\n\tfor ( i = 0; i < data.length; i++ ) {\n\t\titem = new OO.ui.MenuOptionWidget( {\n\t\t\t// this data will be passed to onLookupMenuChoose when item is selected\n\t\t\tdata: data[ i ].title.toString(),\n\t\t\tlabel: this.highlightText( data[ i ].title.toString() )\n\t\t} );\n\t\titems.push( item );\n\t}\n\treturn items;\n};\n\npf.AutocompleteWidget.prototype.highlightText = function( suggestion ) {\n\tconst searchTerm = this.getValue();\n\tconst searchRegexp = new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" +\n\t\tsearchTerm.replace(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/gi, \"\\\\$1\") +\n\t\t\")(?![^<>]*>)(?![^&;]+;)\", \"gi\");\n\tconst itemLabel = suggestion;\n\tconst loc = itemLabel.search(searchRegexp);\n\tlet t;\n\n\tif (loc >= 0) {\n\t\tt = itemLabel.slice(0, Math.max(0, loc)) +\n\t\t\t '<strong>' + itemLabel.substr(loc, searchTerm.length) + '</strong>' +\n\t\t\titemLabel.slice(loc + searchTerm.length);\n\t} else {\n\t\tt = itemLabel;\n\t}\n\n\treturn new OO.ui.HtmlSnippet( t );\n};\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_ComboBoxInput.js","messages":[{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":129,"column":9,"nodeType":"CallExpression","endLine":129,"endColumn":65},{"ruleId":"es-x/no-default-parameters","severity":1,"message":"ES2015 default parameters are forbidden.","line":145,"column":51,"nodeType":"AssignmentPattern","messageId":"forbidden","endLine":145,"endColumn":71},{"ruleId":"prefer-const","severity":1,"message":"'input_id' is never reassigned. Use 'const' instead.","line":146,"column":7,"nodeType":"Identifier","messageId":"useConst","endLine":146,"endColumn":15},{"ruleId":"prefer-const","severity":1,"message":"'values' is never reassigned. Use 'const' instead.","line":147,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":147,"endColumn":10},{"ruleId":"prefer-const","severity":1,"message":"'dep_on' is never reassigned. Use 'const' instead.","line":148,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":148,"endColumn":10},{"ruleId":"prefer-const","severity":1,"message":"'self' is never reassigned. Use 'const' instead.","line":149,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":149,"endColumn":8},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsAutocompleteOnAllChars' is never reassigned. Use 'const' instead.","line":154,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":154,"endColumn":37},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":158,"column":8,"nodeType":"CallExpression","endLine":158,"endColumn":48},{"ruleId":"prefer-const","severity":1,"message":"'data_type' is never reassigned. Use 'const' instead.","line":165,"column":5,"nodeType":"Identifier","messageId":"useConst","endLine":165,"endColumn":14},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substr()`.","line":550,"column":18,"nodeType":"CallExpression","messageId":"substr","endLine":550,"endColumn":58}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * PF_ComboBoxInput.js\n *\n * JavaScript code to use OOUI ComboBoxInput widget for comboBox.\n *\n * @class\n * @extends OO.ui.ComboBoxInputWidget\n * @param {jQuery} $\n * @param {Object} mw\n * @param {Object} pf\n * @license GNU GPL v2+\n * @author Jatin Mehta\n * @author Priyanshu Varshney\n * @author Yaron Koren\n * @author Sahaj Khandelwal\n * @author Yash Varshney\n * @author Dennis Groenewegen\n */\n(function($, mw, pf) {\n\tlet apiRequest = null;\n\n\tpf.ComboBoxInput = function(config) {\n\t\tthis.config = config || {}\n\t\tOO.ui.ComboBoxInputWidget.call(this, config);\n\t};\n\tOO.inheritClass(pf.ComboBoxInput, OO.ui.ComboBoxInputWidget);\n\n\t/**\n\t * Transform select/options to OOUI widget\n\t *\n\t * @param {HTMLElement} element\n\t */\n\tpf.ComboBoxInput.prototype.apply = function(element) {\n\t\tconst curVal = element.val(); // 'value'\n\t\tconst curOptionLabel = element.find('option:selected').text();\n\t\tconst curLabel = (curOptionLabel !== undefined) ? curOptionLabel : curVal;\n\n\t\t// Add hidden input containing the value\n\t\tconst hiddenInput = new OO.ui.HiddenInputWidget({\n\t\t\tid: element.attr('id') + '-hidden',\n\t\t\tname: element.attr('name'),\n\t\t\tvalue: curVal\n\t\t});\n\t\telement.before(hiddenInput.$element);\n\n\t\t// Apply ComboBoxInput to the element. Omit name.\n\t\tthis.setInputId(element.attr('id'));\n\t\tthis.setValueAndLabel(curVal, curLabel);\n\t\tthis.setInputAttribute('origname', element.attr('origname'));\n\t\tthis.config['autocompletesettings'] = (element.attr('autocompletesettings') || '').replace(/\\\\'/g, \"'\");\n\t\tthis.config['autocompletedatatype'] = element.attr('autocompletedatatype');\n\t\tthis.config['existingvaluesonly'] = element.attr('existingvaluesonly');\n\t\tthis.setInputAttribute('autocompletesettings', this.config['autocompletesettings']);\n\t\tthis.setInputAttribute('placeholder', element.attr('placeholder'));\n\t\tthis.setInputAttribute('tabIndex', element.attr('tabindex'));\n\t\tthis.setInputAttribute('mappingproperty', element.attr('mappingproperty'));\n\t\tthis.setInputAttribute('mappingtemplate', element.attr('mappingtemplate'));\n\n\t\t// Propagate tabindex to the OOUI widget's visible text input so that\n\t\t// keyboard navigation reaches the combobox in the correct order.\n\t\t// setInputAttribute() sets it on the underlying hidden input; we also\n\t\t// set it explicitly on $input (the visible <input>) and remove it from\n\t\t// the dropdown toggle button so focus stays on the text field.\n\t\tconst tabIndexVal = element.attr('tabindex');\n\t\tif ( tabIndexVal !== undefined ) {\n\t\t\tthis.$input.attr( 'tabindex', tabIndexVal );\n\t\t\t// Exclude the dropdown toggle button from the tab order; the\n\t\t\t// text input already opens the dropdown on focus/keypress.\n\t\t\tthis.$element.find( '.oo-ui-indicatorElement-indicator' ).attr( 'tabindex', '-1' );\n\t\t}\n\t\tif (this.config.autocompletesettings == 'external data') {\n\t\t\t// this is especially set for dependent on settings\n\t\t\t// when the source field has external data autocompletion\n\t\t\tconst input_id = \"#\" + this.getInputId();\n\t\t\tconst name = $(input_id).attr(this.nameAttr($(input_id)));\n\t\t\tconst positionOfBracket = name.indexOf('[');\n\t\t\tconst sliceFirst = name.slice(0, Math.max(0, positionOfBracket));\n\t\t\t// Previously using substring() :\n\t\t\tconst sliceSecond = name.slice(positionOfBracket + 1, name.length - 1);\n\t\t\tconst data_autocomplete = sliceFirst + '|' + sliceSecond;\n\t\t\tthis.setInputAttribute('data-autocomplete', data_autocomplete);\n\t\t}\n\n\t\tthis.bindEvents();\n\n\t\tconst $loadingIcon = $('<img>').attr( {\n\t\t\tsrc: mw.config.get( 'wgPageFormsScriptPath' ) + '/skins/loading.gif',\n\t\t\tid: 'loading-' + this.getInputId()\n\t\t} );\n\t\t$loadingIcon.hide();\n\t\t$(document.getElementById(this.getInputId())).parent().append( $loadingIcon );\n\n\t};\n\n\t/**\n\t * Bind events (blur, focus, keyup, focusout, etc.)\n\t */\n\tpf.ComboBoxInput.prototype.bindEvents = function() {\n\n\t\tthis.$input.blur(() => {\n\t\t\tconst presentLabel = this.$input.val().trim();\n\t\t\tconst selectedLabel = this.$input.attr('data-label').trim();\n\t\t\tif (presentLabel !== selectedLabel && this.config['existingvaluesonly']) {\n\t\t\t\t//Disallows non-existing value\n\t\t\t\tthis.setValueAndLabel(\"\", \"\");\n\t\t\t} else if (presentLabel !== selectedLabel) {\n\t\t\t\t//Update change to non-existing value\n\t\t\t\tthis.setValueAndLabel(presentLabel, presentLabel);\n\t\t\t\tthis.adjustWidth();\n\t\t\t} else {\n\t\t\t\t// Just resize input according to the value\n\t\t\t\tthis.adjustWidth();\n\t\t\t}\n\t\t});\n\n\t\tthis.$input.focus( () => {\n\t\t\tthis.setValues();\n\t\t});\n\n\t\tthis.$input.keyup( (event) => {\n\t\t\tif (event.key !== 'ArrowUp' && event.key !== 'ArrowDown' && event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n\t\t\t\tthis.setValues(false);\n\t\t\t}\n\t\t});\n\n\t\t// Mouseup - click input\n\t\tthis.$element.mouseup( (event) => {\n\t\t\t// Avoid re-fetching values if the user clicks on the scrollbar.\n\t\t\tif ( $( event.target ).hasClass( 'oo-ui-labelElement-label' ) ) {\n\t\t\t\tthis.setValues( false );\n\t\t\t}\n\t\t});\n\n\t\tthis.$element.focusout( () => {\n\t\t\t$( '.combobox_map_feed' ).val( this.$input.val() );\n\t\t});\n\n\t};\n\n\t/**\n\t * Sets the values for combobox\n\t *\n\t * @param {boolean} showAllValues\n\t */\n\tpf.ComboBoxInput.prototype.setValues = function( showAllValues = true ) {\n\t\tlet input_id = \"#\" + this.getInputId(),\n\t\t\tvalues = [],\n\t\t\tdep_on = this.dependentOn(),\n\t\t\tself = this,\n\t\t\tdata,\n\t\t\ti,\n\t\t\tcurValue,\n\t\t\tmy_server,\n\t\t\twgPageFormsAutocompleteOnAllChars = mw.config.get( 'wgPageFormsAutocompleteOnAllChars' );\n\n\t\t// First, handle \"show on select\" stuff.\n\t\tconst $parentSpan = $(input_id).closest('span');\n\t\tif ( $parentSpan.hasClass('pfShowIfSelected') ) {\n\t\t\tmw.hook('pf.comboboxChange').fire($parentSpan);\n\t\t}\n\n\t\tthis.itemFound = false;\n\t\tif (this.config.autocompletedatatype !== undefined) {\n\t\t\tlet data_source = this.config.autocompletesettings,\n\t\t\t\tdata_type = this.config.autocompletedatatype;\n\t\t\tcurValue = this.getValue(); // current label or substring being typed\n\t\t\tconst curHiddenVal = this.getHiddenInputValue(); //submitted\n\n\t\t\tif (curValue.length == 0) {\n\t\t\t\tvalues.push({\n\t\t\t\t\tdata: self.getHiddenInputValue(),\n\t\t\t\t\tlabel: mw.message('pf-autocomplete-input-too-short', 1).text(),\n\t\t\t\t\tdisabled: true\n\t\t\t\t});\n\t\t\t\tthis.setOptions(values);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmy_server = mw.util.wikiScript( 'api' );\n\t\t\t// Cargo field, wikidata, ...\n\t\t\tif (data_type === 'cargo field') {\n\t\t\t\tconst table_and_field = data_source.split('|');\n\t\t\t\tmy_server += \"?action=pfautocomplete&format=json&cargo_table=\" + table_and_field[0] + \"&cargo_field=\" + table_and_field[1] + \"&substr=\" + curValue;\n\t\t\t\tif ( table_and_field.length > 2 ) {\n\t\t\t\t\tmy_server += '&cargo_where=' + table_and_field[2];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( data_type === 'wikidata' ) {\n\t\t\t\t\t// Support for getting query values from an existing field in the form\n\t\t\t\t\tconst terms = data_source.split( \"&\" );\n\t\t\t\t\tterms.forEach( (element) => {\n\t\t\t\t\t\tconst subTerms = element.split( \"=\" );\n\t\t\t\t\t\tconst matches = subTerms[1].match( /\\[(.*?)\\]/ );\n\t\t\t\t\t\tif ( matches ) {\n\t\t\t\t\t\t\tconst dep_value = $( '[name=\"' + subTerms[1] + '\"]' ).val();\n\t\t\t\t\t\t\tif ( dep_value && dep_value.trim().length ) {\n\t\t\t\t\t\t\t\tdata_source = data_source.replace( subTerms[1], dep_value );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t\tdata_source = encodeURIComponent( data_source );\n\t\t\t\t}\n\t\t\t\tmy_server += \"?action=pfautocomplete&format=json&\" + data_type + \"=\" + data_source + \"&substr=\" + curValue;\n\n\t\t\t\t// Mapping property (Semantic MediaWiki)\n\t\t\t\tconst mappingProperty = this.$input.attr('mappingproperty');\n\t\t\t\tif (typeof mappingProperty !== 'undefined' && mappingProperty !== false) {\n\t\t\t\t\tmy_server += \"&mappingproperty=\" + mappingProperty;\n\t\t\t\t}\n\t\t\t\t// Mapping template (exclusive to autocompletion?)\n\t\t\t\tconst mappingTemplate = this.$input.attr('mappingtemplate');\n\t\t\t\tif (typeof mappingTemplate !== 'undefined' && mappingTemplate !== false) {\n\t\t\t\t\tmy_server += \"&mappingtemplate=\" + mappingTemplate;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tapiRequest = $.ajax({\n\t\t\t\turl: my_server,\n\t\t\t\tdataType: 'json',\n\t\t\t\tbeforeSend: function() {\n\t\t\t\t\tif ( apiRequest !== null ) {\n\t\t\t\t\t\tapiRequest.abort();\n\t\t\t\t\t}\n\t\t\t\t\t$( '#loading-' + input_id.replace( '#', '' ) ).show();\n\t\t\t\t},\n\t\t\t\tsuccess: function(Data) {\n\t\t\t\t\t$( '#loading-' + input_id.replace( '#', '' ) ).hide();\n\t\t\t\t\tif (Data.pfautocomplete !== undefined) {\n\t\t\t\t\t\tData = Data.pfautocomplete;\n\t\t\t\t\t\tif (Data.length == 0) {\n\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\tdata: self.getHiddenInputValue(),\n\t\t\t\t\t\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor ( i = 0; i < Data.length; i++ ) {\n\t\t\t\t\t\t\t\tconst optionVal = Data[i].title;\n\t\t\t\t\t\t\t\tconst optionLabel = (Data[i].displaytitle !== undefined) ? Data[i].displaytitle : Data[i].title;\n\t\t\t\t\t\t\t\tif (optionLabel == curValue) {\n\t\t\t\t\t\t\t\t\tself.itemFound = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst item = {\n\t\t\t\t\t\t\t\t\tdata: optionVal,\n\t\t\t\t\t\t\t\t\tlabel: optionLabel,\n\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(optionLabel),\n\t\t\t\t\t\t\t\t\tdisabled: false\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tvalues.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\tdata: self.getHiddenInputValue(),\n\t\t\t\t\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tself.setOptions(values);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Autocompletedatatype undefined\n\t\t\tif (dep_on === null) {\n\t\t\t\tif (this.config['autocompletesettings'] === 'external data') {\n\t\t\t\t\t// External data\n\t\t\t\t\tcurValue = this.getValue();\n\t\t\t\t\tif ( showAllValues ) {\n\t\t\t\t\t\tcurValue = \"\";\n\t\t\t\t\t}\n\t\t\t\t\tconst name = $(input_id).attr(this.nameAttr($(input_id)));\n\t\t\t\t\tconst wgPageFormsEDSettings = mw.config.get('wgPageFormsEDSettings');\n\t\t\t\t\tconst edgValues = mw.config.get('edgValues');\n\t\t\t\t\tdata = {};\n\t\t\t\t\tif (wgPageFormsEDSettings[name].title !== undefined && wgPageFormsEDSettings[name].title !== \"\") {\n\t\t\t\t\t\tdata.title = edgValues[wgPageFormsEDSettings[name].title];\n\t\t\t\t\t\tif (data.title !== undefined && data.title !== null) {\n\t\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\t\tdata.title.forEach(() => {\n\t\t\t\t\t\t\t\tif ( data.title[i] == curValue ) {\n\t\t\t\t\t\t\t\t\tself.itemFound = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (wgPageFormsAutocompleteOnAllChars) {\n\t\t\t\t\t\t\t\t\tif (self.getConditionForAutocompleteOnAllChars(data.title[i], curValue)) {\n\t\t\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\t\t\tdata: data.title[i],\n\t\t\t\t\t\t\t\t\t\t\tlabel: data.title[i],\n\t\t\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(data.title[i])\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (self.checkIfAnyWordStartsWithInputValue(data.title[i], curValue)) {\n\t\t\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\t\t\tdata: data.title[i],\n\t\t\t\t\t\t\t\t\t\t\tlabel: data.title[i],\n\t\t\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(data.title[i])\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Local autocompletion, not dependent, not external data\n\t\t\t\t\tconst wgPageFormsAutocompleteValues = mw.config.get('wgPageFormsAutocompleteValues');\n\t\t\t\t\tdata = wgPageFormsAutocompleteValues[this.config['autocompletesettings']];\n\t\t\t\t\tcurValue = this.getValue();\n\t\t\t\t\tif ( showAllValues ) {\n\t\t\t\t\t\tcurValue = \"\";\n\t\t\t\t\t}\n\t\t\t\t\tconst arrayType = (Array.isArray(data)) ? 'indexed' : 'associative';\n\t\t\t\t\tif (Array.isArray(data) || typeof data == 'object') {\n\t\t\t\t\t\tfor (const key in data) {\n\t\t\t\t\t\t\tconst optionVal = (arrayType == 'indexed') ? data[key] : key;\n\t\t\t\t\t\t\tconst optionLabel = data[key];\n\t\t\t\t\t\t\tif (optionLabel == curValue) {\n\t\t\t\t\t\t\t\tself.itemFound = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(wgPageFormsAutocompleteOnAllChars && (this.getConditionForAutocompleteOnAllChars(optionLabel, curValue))) ||\n\t\t\t\t\t\t\t\t(this.checkIfAnyWordStartsWithInputValue(optionLabel, curValue))\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\tdata: optionVal,\n\t\t\t\t\t\t\t\t\tlabel: optionLabel,\n\t\t\t\t\t\t\t\t\thighlighted: this.highlightText(optionLabel)\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Dependent field autocompletion (dep_on is not null)\n\t\t\t\tconst dep_field_opts = this.getDependentFieldOpts(dep_on);\n\t\t\t\tmy_server = mw.config.get('wgScriptPath') + \"/api.php\";\n\t\t\t\tmy_server += \"?action=pfautocomplete&format=json\";\n\t\t\t\t// URL depends on whether Cargo or Semantic MediaWiki\n\t\t\t\t// is being used.\n\t\t\t\tif (dep_field_opts.prop !== undefined && dep_field_opts.base_prop !== undefined && dep_field_opts.base_value !== undefined) {\n\t\t\t\t\tif (!dep_field_opts.prop.includes('|')) {\n\t\t\t\t\t\t// SMW\n\t\t\t\t\t\tmy_server += \"&property=\" + dep_field_opts.prop + \"&baseprop=\" + dep_field_opts.base_prop + \"&basevalue=\" + dep_field_opts.base_value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Cargo\n\t\t\t\t\t\tconst cargoTableAndFieldStr = dep_field_opts.prop;\n\t\t\t\t\t\tconst cargoTableAndField = cargoTableAndFieldStr.split('|');\n\t\t\t\t\t\tconst cargoTable = cargoTableAndField[0];\n\t\t\t\t\t\tconst cargoField = cargoTableAndField[1];\n\t\t\t\t\t\tconst baseCargoTableAndFieldStr = dep_field_opts.base_prop;\n\t\t\t\t\t\tconst baseCargoTableAndField = baseCargoTableAndFieldStr.split('|');\n\t\t\t\t\t\tconst baseCargoTable = baseCargoTableAndField[0];\n\t\t\t\t\t\tconst baseCargoField = baseCargoTableAndField[1];\n\t\t\t\t\t\tmy_server += \"&cargo_table=\" + cargoTable + \"&cargo_field=\" + cargoField + \"&base_cargo_table=\" + baseCargoTable + \"&base_cargo_field=\" + baseCargoField + \"&basevalue=\" + dep_field_opts.base_value;\n\t\t\t\t\t}\n\n\t\t\t\t\t$.ajax({\n\t\t\t\t\t\turl: my_server,\n\t\t\t\t\t\tdataType: 'json',\n\t\t\t\t\t\tasync: false,\n\t\t\t\t\t\tsuccess: function(response) {\n\t\t\t\t\t\t\tif ( response.error !== undefined || response.pfautocomplete.length == 0 ) {\n\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\tdata: self.getHiddenInputValue(),\n\t\t\t\t\t\t\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\t\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn values;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresponse.pfautocomplete.forEach((item) => {\n\t\t\t\t\t\t\t\tcurValue = self.getValue();\n\t\t\t\t\t\t\t\tif ( item.displaytitle == curValue || item.title == curValue ) {\n\t\t\t\t\t\t\t\t\tself.itemFound = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (wgPageFormsAutocompleteOnAllChars) {\n\t\t\t\t\t\t\t\t\t// dependent\n\t\t\t\t\t\t\t\t\tif (item.displaytitle !== undefined) {\n\t\t\t\t\t\t\t\t\t\tif (self.getConditionForAutocompleteOnAllChars(item.displaytitle, curValue)) {\n\t\t\t\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\t\t\t\tdata: item.displaytitle,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: item.displaytitle,\n\t\t\t\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(item.displaytitle)\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// no displaytitle\n\t\t\t\t\t\t\t\t\t\tif (self.getConditionForAutocompleteOnAllChars(item.title, curValue)) {\n\t\t\t\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\t\t\t\tdata: item.title,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: item.title,\n\t\t\t\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(item.title)\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// dependent, wgPageFormsAutocompleteOnAllChars = false\n\t\t\t\t\t\t\t\t\tif (item.displaytitle !== undefined) {\n\t\t\t\t\t\t\t\t\t\tif (self.checkIfAnyWordStartsWithInputValue(item.displaytitle, curValue)) {\n\t\t\t\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\t\t\t\tdata: item.displaytitle,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: item.displaytitle,\n\t\t\t\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(item.displaytitle)\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// displaytitle undefined\n\t\t\t\t\t\t\t\t\t\tif (self.checkIfAnyWordStartsWithInputValue(item.title, curValue)) {\n\t\t\t\t\t\t\t\t\t\t\tvalues.push({\n\t\t\t\t\t\t\t\t\t\t\t\tdata: item.title,\n\t\t\t\t\t\t\t\t\t\t\t\tlabel: item.title,\n\t\t\t\t\t\t\t\t\t\t\t\thighlighted: self.highlightText(item.title)\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn values;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// this condition will come when the wrong parameters are used in form definition\n\t\t\t\t\tvalues.push({\n\t\t\t\t\t\tdata: self.getHiddenInputValue(),\n\t\t\t\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\t\t\t\tdisabled: true\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (values.length == 0) {\n\t\t\t\tvalues.push({\n\t\t\t\t\tdata: self.getHiddenInputValue(),\n\t\t\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\t\t\tdisabled: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.setOptions(values);\n\t\t}\n\t};\n\n\t/**\n\t * Returns the name attribute of the field depending on\n\t * whether it is a part of a multiple instance template or not\n\t *\n\t * @param {HTMLElement} element\n\t *\n\t * @return {string}\n\t */\n\tpf.ComboBoxInput.prototype.nameAttr = function(element) {\n\t\treturn this.partOfMultiple(element) ? \"origname\" : \"name\";\n\t};\n\n\t/**\n\t * Checks whether the field is part of a multiple instance template or not\n\t *\n\t * @param {HTMLElement} element\n\t *\n\t * @return {boolean}\n\t */\n\tpf.ComboBoxInput.prototype.partOfMultiple = function(element) {\n\t\treturn element.attr(\"origname\") !== undefined ? true : false;\n\t};\n\n\t/**\n\t * If a field is dependent on some other field in the form\n\t * then it returns its name.\n\t *\n\t * @return {string}\n\t */\n\tpf.ComboBoxInput.prototype.dependentOn = function() {\n\t\tconst input_id = \"#\" + this.getInputId();\n\t\tconst name_attr = this.nameAttr($(input_id));\n\t\tconst name = $(input_id).attr(name_attr);\n\n\t\tconst wgPageFormsDependentFields = mw.config.get('wgPageFormsDependentFields');\n\t\tfor (let i = 0; i < wgPageFormsDependentFields.length; i++) {\n\t\t\tconst dependentFieldPair = wgPageFormsDependentFields[i];\n\t\t\tif (dependentFieldPair[1] === name) {\n\t\t\t\treturn dependentFieldPair[0];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t};\n\n\t/**\n\t * Gives dependent field options which include\n\t * property, base property and base value\n\t *\n\t * @param {string} dep_on\n\t *\n\t * @return {Object} dep_field_opts\n\t */\n\tpf.ComboBoxInput.prototype.getDependentFieldOpts = function(dep_on) {\n\t\tconst input_id = \"#\" + this.getInputId();\n\t\tconst dep_field_opts = {};\n\t\tlet $baseElement;\n\t\tif (this.partOfMultiple($(input_id))) {\n\t\t\t$baseElement = $(input_id).closest(\".multipleTemplateInstance\")\n\t\t\t\t.find('[origname =\"' + dep_on + '\" ]');\n\t\t} else {\n\t\t\t$baseElement = $('[name =\"' + dep_on + '\" ]');\n\t\t}\n\t\tdep_field_opts.base_value = $baseElement.val();\n\t\tdep_field_opts.base_prop = mw.config.get('wgPageFormsFieldProperties')[dep_on] ||\n\t\t\t(\n\t\t\t\t$baseElement.attr(\"autocompletesettings\") == 'external data' ?\n\t\t\t\t$baseElement.attr(\"data-autocomplete\") : $baseElement.attr(\"autocompletesettings\")\n\t\t\t);\n\t\tdep_field_opts.prop = $(input_id).attr(\"autocompletesettings\").split(\",\")[0];\n\n\t\treturn dep_field_opts;\n\t};\n\n\t/**\n\t * Returns the array of names of fields in the form which are dependent\n\t * on the field passed as a param to this function,\n\t *\n\t * @param {HTMLElement} element\n\t *\n\t * @return {Array} dependent_on_me (associative array)\n\t */\n\tpf.ComboBoxInput.prototype.dependentOnMe = function() {\n\t\tconst input_id = \"#\" + this.getInputId();\n\t\tconst name_attr = this.nameAttr($(input_id));\n\t\tconst name = $(input_id).attr(name_attr);\n\t\tconst dependent_on_me = [];\n\t\tconst wgPageFormsDependentFields = mw.config.get('wgPageFormsDependentFields');\n\t\tfor (let i = 0; i < wgPageFormsDependentFields.length; i++) {\n\t\t\tconst dependentFieldPair = wgPageFormsDependentFields[i];\n\t\t\tif (dependentFieldPair[0] === name) {\n\t\t\t\tdependent_on_me.push(dependentFieldPair[1]);\n\t\t\t}\n\t\t}\n\n\t\treturn dependent_on_me;\n\t};\n\n\tpf.ComboBoxInput.prototype.highlightText = function(suggestion) {\n\t\tconst searchTerm = this.getValue();\n\t\tconst searchRegexp = new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" +\n\t\t\tsearchTerm.replace(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/gi, \"\\\\$1\") +\n\t\t\t\")(?![^<>]*>)(?![^&;]+;)\", \"gi\");\n\t\tconst itemLabel = suggestion.toString();\n\t\tconst loc = itemLabel.search(searchRegexp);\n\t\tlet t;\n\n\t\tif (loc >= 0) {\n\t\t\tt = itemLabel.slice(0, Math.max(0, loc)) +\n\t\t\t\t'<strong>' + itemLabel.substr(loc, searchTerm.length) + '</strong>' +\n\t\t\t\titemLabel.slice(loc + searchTerm.length);\n\t\t} else {\n\t\t\tt = itemLabel;\n\t\t}\n\t\treturn new OO.ui.HtmlSnippet(t);\n\t};\n\n\tpf.ComboBoxInput.prototype.checkIfAnyWordStartsWithInputValue = function(string, curValue) {\n\t\tconst wordSeparators = [\n\t\t\t'/', '(', ')', '|', 's'\n\t\t].map((p) => \"\\\\\" + p).concat('^', '-', \"'\", '\"');\n\t\tconst regex = new RegExp('(' + wordSeparators.join('|') + ')' + curValue.toLowerCase());\n\t\treturn string.toString().toLowerCase().match(regex) !== null;\n\t};\n\n\tpf.ComboBoxInput.prototype.getConditionForAutocompleteOnAllChars = function(str, curStr) {\n\t\treturn str.toString().toLowerCase().includes(curStr.toLowerCase());\n\t};\n\n\tpf.ComboBoxInput.prototype.setInputAttribute = function(attr, value) {\n\t\tif (typeof value !== 'undefined' && value !== false) {\n\t\t\tthis.$input.attr(attr, value);\n\t\t}\n\t};\n\n\t/**\n\t * Override default to handle menu item 'choose' event\n\t * Update two inputs to clicked item\n\t * Use getTitle not getLabel to get non-highlighted label\n\t *\n\t * @param {OO.ui.MenuOptionWidget} item Selected item\n\t */\n\tpf.ComboBoxInput.prototype.onMenuChoose = function(item) {\n\t\tconst inputVal = item.getData();\n\t\tconst inputLabel = item.getTitle();\n\t\tconst inputId = this.getInputId();\n\t\tthis.$input.attr(\"data-input-id\", inputId);\n\t\tthis.setValueAndLabel(inputVal, inputLabel);\n\t\tthis.adjustWidth();\n\t};\n\n\t/**\n\t * Return hidden input associated with combobox, which contains the value\n\t * Accepts id of combobox input\n\t *\n\t * @return {HTMLElement}\n\t */\n\tpf.ComboBoxInput.prototype.getHiddenInput = function() {\n\t\tconst inputId = this.getInputId();\n\t\treturn this.$input.closest('.comboboxSpan').find('#' + inputId + '-hidden');\n\t};\n\n\tpf.ComboBoxInput.prototype.getHiddenInputValue = function() {\n\t\tconst inputId = this.getInputId();\n\t\tconst $hiddenInput = this.$input.closest('.comboboxSpan').find('#' + inputId + '-hidden');\n\t\treturn $hiddenInput.val();\n\t};\n\n\t/**\n\t * Set value and label for combobox and hidden input\n\t *\n\t * @param {string} val\n\t * @param {string} label\n\t */\n\tpf.ComboBoxInput.prototype.setValueAndLabel = function(val, label) {\n\t\tconst hiddenInput = this.getHiddenInput();\n\t\t$(hiddenInput).val(val);\n\t\tthis.setValue(label);\n\t\tthis.setTitle(label);\n\t\tthis.$input.attr('data-value', val); // required as reference\n\t\tthis.$input.attr('data-label', label); // required as reference\n\t\tconst stringType = (val == label) ? 'value' : 'label';\n\t\tthis.updateStringType(stringType);\n\t};\n\n\t/**\n\t * Override default to create options in dropdown\n\t * Allow for values, labels, highlighted text and boolean 'disabled'\n\t *\n\t * @param {Object[]} options\n\t * @return {OO.ui.Widget}\n\t */\n\tpf.ComboBoxInput.prototype.setOptions = function(options) {\n\t\tthis.getMenu()\n\t\t\t.clearItems()\n\t\t\t.addItems(options.map((opt) => {\n\t\t\t\tconst isDisabled = (opt.disabled !== undefined) ? opt.disabled : false;\n\t\t\t\tconst label = (opt.label !== undefined) ? opt.label : opt.data;\n\t\t\t\tconst highlighted = (opt.highlighted !== undefined) ? opt.highlighted : label;\n\t\t\t\treturn new OO.ui.MenuOptionWidget({\n\t\t\t\t\tdata: opt.data,\n\t\t\t\t\tlabel: highlighted,\n\t\t\t\t\ttitle: label,\n\t\t\t\t\tdisabled: isDisabled\n\t\t\t\t});\n\t\t\t}));\n\t\treturn this;\n\t};\n\n\t/**\n\t * Allow for distinct styling of labels and values\n\t * Assume 'label' when value and label are not identical\n\t * Not fully reality-proof as displaytitle may be\n\t * identical with pagename\n\t *\n\t * @param {string} newType\n\t */\n\tpf.ComboBoxInput.prototype.updateStringType = function(newType) {\n\t\tconst className = 'pf-string-type--' + newType;\n\t\t// The following classes are used here:\n\t\t// * pf-string-type--label\n\t\t// * pf-string-type--value\n\t\tthis.$input.removeClass([ 'pf-string-type--label', 'pf-string-type--value' ]).addClass([ className ]);\n\t\tthis.setInputAttribute('data-string-type', newType);\n\t};\n\n\tpf.ComboBoxInput.prototype.adjustWidth = function() {\n\t\tconst suggWidth = this.getValue().length * 11;\n\t\tthis.$element.css(\"width\", \"100%\");\n\t\tconst maxWidth = parseInt(this.$element.css(\"width\"));\n\t\tconst newWidth = (suggWidth >= maxWidth) ? maxWidth : suggWidth;\n\t\tthis.$element.css(\"width\", newWidth);\n\t};\n\n}(jQuery, mediaWiki, pageforms));\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_CreateClass.js","messages":[{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":32,"column":2,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":32,"endColumn":21},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":38,"column":2,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":38,"endColumn":21}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function( $, mw ) {\n\nfunction disableFormAndCategoryInputs() {\n\tif ($('#template_multiple').attr('aria-checked') == 'true') {\n\t\t$('input[name=\"multiple_template\"]').attr('value','1');\n\t\t$('#form_name').attr('disabled', 'disabled');\n\t\t$('label[for=\"form_name\"]').css('color', 'gray').css('font-style', 'italic');\n\t\t$('#category_name').attr('disabled', 'disabled');\n\t\t$('label[for=\"category_name\"]').css('color', 'gray').css('font-style', 'italic');\n\t\t$('#connecting_property_div').show('fast');\n\t} else {\n\t\t$('input[name=\"multiple_template\"]').attr('value','0');\n\t\t$('#form_name').removeAttr('disabled');\n\t\t$('label[for=\"form_name\"]').css('color', '').css('font-style', '');\n\t\t$('#category_name').removeAttr('disabled');\n\t\t$('label[for=\"category_name\"]').css('color', '').css('font-style', '');\n\t\t$('#connecting_property_div').hide('fast');\n\t}\n}\n\nconst toggleSwitch = new OO.ui.ToggleSwitchWidget( {\n\tid: 'template_multiple',\n\tclasses: [ 'disableFormAndCategoryInputs' ],\n} );\n$( '#template_multiple_p' ).prepend( toggleSwitch.$element );\n$( '#template_mutliple' ).attr( 'name','template_multiple' );\n$( \".disableFormAndCategoryInputs\" ).click( () => {\n\tdisableFormAndCategoryInputs();\n} );\n$( '#createClassForm' ).submit( () => {\n\n\tvar num_errors = 0;\n\n\t// Remove all old error messages.\n\t$(\".errorMessage\").remove();\n\t$(\"input\").removeClass(\"inputError\");\n\n\tvar num_errors = 0;\n\n\tconst $templateName = $( \"input[name='template_name']\" );\n\tconst $form_name = $( '#form_name' );\n\tconst $category = $( '#category_name' );\n\tconst $cargoTableName = $( '#cargo_table' );\n\tlet isMultipleInstanceAllowed = $( \"input[name='multiple_template']\" ).val();\n\tlet isCargoBased = $( \"input[name='use_cargo']\" ).val();\n\tif ( isMultipleInstanceAllowed ) {\n\t\tisMultipleInstanceAllowed = parseInt( isMultipleInstanceAllowed );\n\t}\n\tif ( isCargoBased ) {\n\t\tisCargoBased = parseInt( isCargoBased );\n\t}\n\tnum_errors += $templateName.validateField();\n\tif ( isCargoBased ) {\n\t\tnum_errors += $cargoTableName.validateField();\n\t}\n\tif( !isMultipleInstanceAllowed ) {\n\t\tnum_errors += ( $form_name.validateField() + $category.validateField() );\n\t}\n\tif (num_errors > 0) {\n\t\t// add error header, if it's not there already\n\t\tif ($(\"#form_error_header\").length === 0) {\n\t\t\t$(\"#contentSub\").append('<div id=\"form_error_header\" class=\"errorbox\" style=\"font-size: medium\"><img src=\"' + mw.config.get( 'wgPageFormsScriptPath' ) + '/skins/MW-Icon-AlertMark.png\" />&nbsp;' + mw.message( 'pf_formerrors_header' ).escaped() + '</div><br clear=\"both\" />');\n\t\t}\n\t\t// Also undo the indicator that the form was submitted.\n\t\t$( '#createClassForm' ).data('submitted', false);\n\t\tscroll(0, 0);\n\t} else {\n\t\t//remove error box if it exists because there are no errors in the form now\n\t\t$(\"#contentSub\").find(\".errorbox\").remove();\n\t}\n\n\tif (num_errors > 0) {\n\t\t// add error header, if it's not there already\n\t\tif ($(\"#form_error_header\").length === 0) {\n\t\t\t$(\"#contentSub\").append('<div id=\"form_error_header\" class=\"errorbox\" style=\"font-size: medium\"><img src=\"' + mw.config.get( 'wgPageFormsScriptPath' ) + '/skins/MW-Icon-AlertMark.png\" />&nbsp;' + mw.message( 'pf_formerrors_header' ).escaped() + '</div><br clear=\"both\" />');\n\t\t}\n\t\t$( '#createClassForm' ).data('submitted', false);\n\t\tscroll(0, 0);\n\t} else {\n\t\t//remove error box if it exists because there are no errors in the form now\n\t\t$(\"#contentSub\").find(\".errorbox\").remove();\n\t}\n\n\treturn (num_errors === 0);\n} );\n\n$.fn.validateField = function() {\n\tlet isEmpty;\n\tconst target = $( this ).val();\n\n\tif (target === null) {\n\t\tisEmpty = true;\n\t} else {\n\t\tisEmpty = (target.replace(/\\s+/, '') === '');\n\t}\n\tif (isEmpty) {\n\t\t$( this ).addClass('inputError');\n\t\t$( this ).parent().append($('<div>').addClass( 'errorMessage' ).text( mw.msg( 'pf_blank_error' ) ));\n\t\treturn 1;\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_CreateForm.js","messages":[{"ruleId":"implicit-arrow-linebreak","severity":1,"message":"Expected no linebreak before this expression.","line":60,"column":3,"nodeType":"Identifier","messageId":"unexpected","endLine":60,"endColumn":8}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"jQuery.fn.displayInputParams = function () {\n\tconst inputParamsDiv = this.closest( '.formField' ).find( '.otherInputParams' );\n\tjQuery.ajax( {\n\t\turl: mw.util.wikiScript() + '?title=Special:CreateForm' +\n\t\t\t'&showinputtypeoptions=' + encodeURIComponent( $(this).find('select').val() ) +\n\t\t\t'&formfield=' + encodeURIComponent( this.attr( 'id' ) ),\n\t\tcontext: document.body,\n\t\tsuccess: function ( data ){\n\t\t\tinputParamsDiv.html( data );\n\t\t}\n\t});\n};\n\njQuery( () => {\n\tjQuery( '.inputTypeSelector' ).change( function () {\n\t\tjQuery( this ).displayInputParams();\n\t} );\n\n\tjQuery( 'span#pfAddTemplateButton' ).click( () => {\n\t\tjQuery( 'button[name=\"add_field\"]' ).attr( 'value', 'true' );\n\t} );\n\n\tjQuery( 'span#pfAddSectionButton' ).click( ( event ) => {\n\t\tif( jQuery( 'input[name=\"sectionname\"]' ).val() === '' ) {\n\t\t\tevent.preventDefault();\n\t\t\tjQuery( '#section_error' ).remove();\n\t\t\tconst errorMessage = new OO.ui.MessageWidget( {\n\t\t\t\ttype: 'error',\n\t\t\t\tinline: true,\n\t\t\t\tlabel: mediaWiki.msg( 'pf_blank_error' )\n\t\t\t} )\n\t\t\tconst errorSpan = '<span class=\"error\" id=\"section_error\"></span>';\n\t\t\tjQuery( 'div#sectionerror' ).append(errorSpan);\n\t\t\tjQuery( 'span#section_error' ).append( errorMessage.$element );\n\t\t} else {\n\t\t\tjQuery( 'button[name=\"add_section\"]' ).attr( 'value', 'true' );\n\t\t}\n\t} );\n\n\tjQuery( 'span#pfRemoveTemplateButton' ).click( () => {\n\t\tjQuery( 'span#pfRemoveTemplateButton' ).find( 'button' ).attr( 'value', 'true' );\n\t} );\n\n\tjQuery( 'span#pfRemoveSectionButton' ).click( () => {\n\t\tjQuery( 'span#pfRemoveSectionButton' ).find( 'button' ).attr( 'value', 'true' );\n\t} );\n\n\t// this is done as the OOUI's Checkbox behave differently than the normal checkbox\n\tjQuery( 'div.templateForm' ).find( 'input[type=\"checkbox\"]' ).click( function() {\n\t\tif ( jQuery( this ).attr( 'value' ) == 'on' ){\n\t\t\tjQuery( this ).attr( 'value', '' );\n\t\t} else {\n\t\t\tjQuery( this ).attr( 'value', 'on' );\n\t\t}\n\t} );\n} );\n\njQuery( \"input,select\" ).keypress( ( event ) =>\n\t// Don't submit the form if enter is pressed on a text input box or a select.\n\t event.key !== 'Enter'\n );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_CreateProperty.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_CreateTemplate.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_FullCalendar.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'events' is never reassigned. Use 'const' instead.","line":59,"column":7,"nodeType":"Identifier","messageId":"useConst","endLine":59,"endColumn":13},{"ruleId":"prefer-const","severity":1,"message":"'eventsNoDate' is never reassigned. Use 'const' instead.","line":59,"column":90,"nodeType":"Identifier","messageId":"useConst","endLine":59,"endColumn":102},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":669,"column":11,"nodeType":"CallExpression","endLine":669,"endColumn":43},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":871,"column":11,"nodeType":"CallExpression","endLine":871,"endColumn":43}],"suppressedMessages":[{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":193,"column":5,"nodeType":"CallExpression","endLine":193,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":195,"column":7,"nodeType":"CallExpression","endLine":195,"endColumn":48,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":196,"column":7,"nodeType":"CallExpression","endLine":196,"endColumn":49,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":197,"column":7,"nodeType":"CallExpression","endLine":197,"endColumn":50,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":205,"column":5,"nodeType":"CallExpression","endLine":205,"endColumn":18,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":207,"column":7,"nodeType":"CallExpression","endLine":207,"endColumn":53,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":208,"column":7,"nodeType":"CallExpression","endLine":208,"endColumn":51,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":209,"column":7,"nodeType":"CallExpression","endLine":209,"endColumn":54,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":210,"column":7,"nodeType":"CallExpression","endLine":210,"endColumn":52,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":211,"column":7,"nodeType":"CallExpression","endLine":211,"endColumn":55,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":212,"column":7,"nodeType":"CallExpression","endLine":212,"endColumn":53,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":218,"column":16,"nodeType":"CallExpression","endLine":218,"endColumn":63,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":219,"column":44,"nodeType":"CallExpression","endLine":219,"endColumn":92,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":220,"column":18,"nodeType":"CallExpression","endLine":220,"endColumn":64,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":221,"column":16,"nodeType":"CallExpression","endLine":221,"endColumn":61,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":222,"column":44,"nodeType":"CallExpression","endLine":222,"endColumn":90,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":223,"column":18,"nodeType":"CallExpression","endLine":223,"endColumn":62,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":225,"column":16,"nodeType":"CallExpression","endLine":225,"endColumn":63,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":226,"column":8,"nodeType":"CallExpression","endLine":226,"endColumn":56,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":227,"column":18,"nodeType":"CallExpression","endLine":227,"endColumn":64,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":228,"column":16,"nodeType":"CallExpression","endLine":228,"endColumn":61,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":229,"column":8,"nodeType":"CallExpression","endLine":229,"endColumn":54,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":230,"column":18,"nodeType":"CallExpression","endLine":230,"endColumn":62,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":232,"column":11,"nodeType":"CallExpression","endLine":232,"endColumn":58,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":233,"column":9,"nodeType":"CallExpression","endLine":233,"endColumn":58,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":234,"column":9,"nodeType":"CallExpression","endLine":234,"endColumn":58,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":235,"column":9,"nodeType":"CallExpression","endLine":235,"endColumn":54,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":236,"column":9,"nodeType":"CallExpression","endLine":236,"endColumn":56,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":237,"column":9,"nodeType":"CallExpression","endLine":237,"endColumn":56,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":238,"column":23,"nodeType":"CallExpression","endLine":238,"endColumn":70,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":239,"column":11,"nodeType":"CallExpression","endLine":239,"endColumn":60,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":240,"column":11,"nodeType":"CallExpression","endLine":240,"endColumn":60,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":241,"column":23,"nodeType":"CallExpression","endLine":241,"endColumn":68,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":242,"column":11,"nodeType":"CallExpression","endLine":242,"endColumn":58,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":243,"column":11,"nodeType":"CallExpression","endLine":243,"endColumn":58,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":667,"column":5,"nodeType":"CallExpression","endLine":667,"endColumn":16,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":698,"column":6,"nodeType":"CallExpression","endLine":698,"endColumn":47,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":699,"column":6,"nodeType":"CallExpression","endLine":699,"endColumn":48,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":701,"column":7,"nodeType":"CallExpression","endLine":701,"endColumn":50,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":703,"column":7,"nodeType":"CallExpression","endLine":703,"endColumn":50,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":730,"column":6,"nodeType":"CallExpression","endLine":730,"endColumn":52,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":731,"column":6,"nodeType":"CallExpression","endLine":731,"endColumn":53,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":733,"column":7,"nodeType":"CallExpression","endLine":733,"endColumn":55,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":735,"column":7,"nodeType":"CallExpression","endLine":735,"endColumn":55,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":737,"column":6,"nodeType":"CallExpression","endLine":737,"endColumn":50,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":738,"column":6,"nodeType":"CallExpression","endLine":738,"endColumn":51,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":740,"column":7,"nodeType":"CallExpression","endLine":740,"endColumn":53,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":742,"column":7,"nodeType":"CallExpression","endLine":742,"endColumn":53,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":802,"column":9,"nodeType":"CallExpression","endLine":802,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":804,"column":9,"nodeType":"CallExpression","endLine":804,"endColumn":37,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":807,"column":8,"nodeType":"CallExpression","endLine":807,"endColumn":36,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":810,"column":7,"nodeType":"CallExpression","endLine":810,"endColumn":35,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":814,"column":9,"nodeType":"CallExpression","endLine":814,"endColumn":59,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":820,"column":27,"nodeType":"CallExpression","endLine":820,"endColumn":56,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":822,"column":9,"nodeType":"CallExpression","endLine":822,"endColumn":38,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":828,"column":11,"nodeType":"CallExpression","endLine":828,"endColumn":59,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":831,"column":10,"nodeType":"CallExpression","endLine":831,"endColumn":60,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":847,"column":8,"nodeType":"CallExpression","endLine":847,"endColumn":36,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":869,"column":5,"nodeType":"CallExpression","endLine":869,"endColumn":16,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Code to integrate the FullCalendar JavaScript library into Page Forms.\n *\n * @author Priyanshu Varshney\n */\n/* global moment */\n/* eslint-disable no-jquery/no-sizzle */\n( function( $, mw, pf ) {\n\t'use strict';\n\n\t$( '.pfFullCalendarJS' ).each( function() {\n\n\t\t$( '#fullCalendarLoading' ).css(\"display\", \"block\");\n\n\t\t// This counter is used to assign unique ids to the calendar events.\n\t\t// If the event is deleted, we lose that unique id and can't be used gain.\n\t\tlet counter = 0;\n\t\tconst monthNames = mw.config.get('monthMessages');\n\t\t// Stuff from PF_FormPrinter.php\n\t\tconst calendarParams = mw.config.get( 'wgPageFormsCalendarParams' );\n\t\tconst calendarGridValues = mw.config.get( 'wgPageFormsCalendarValues' );\n\t\tconst calendarHTML = mw.config.get('wgPageFormsCalendarHTML');\n\n\t\tconst $fcDiv = $( this );\n\t\tconst calendarId = $fcDiv.attr( 'id' );\n\t\tconst templateName = $fcDiv.attr( 'template-name' );\n\t\tconst eventTitleField = $fcDiv.attr( 'title-field' );\n\t\tconst eventDateField = $fcDiv.attr( 'event-date-field' );\n\t\tconst eventStartDateField = $fcDiv.attr( 'event-start-date-field' );\n\t\tconst eventEndDateField = $fcDiv.attr( 'event-end-date-field' );\n\t\tlet flagOneDayEvent = true;\n\t\tlet pageLoaded = false;\n\t\tlet isEventEndDateTime = false;\n\t\tlet isEventStartTime = false;\n\n\t\tif( eventDateField === undefined ) {\n\n\t\t\tflagOneDayEvent = false;\n\t\t}\n\n\t\tconst fieldType=[];\n\t\tconst englishMonthNames = [ 'January', 'February',\n\t\t\t'March', 'April', 'May', 'June', 'July',\n\t\t\t'August', 'September', 'October', 'November',\n\t\t\t'December' ];\n\n\t\t// From here the game begins - getting the form HTML to be used as the popup form -\n\t\t// for the calendar interface\n\t\tconst formHtml = calendarHTML[templateName];\n\t\tlet popup = '<form id=\"popupForm\">';\n\t\tconst deleteButton = '<button id=\"event_delete\" class = \"delete-event-button\" name=\"data\" type=\"button\" >' + mw.message('pf-calendar-deleteevent').escaped() + '</button>';\n\t\tconst createButton = '<button id=\"form_submit\" class = \"submit-event-button\" name=\"data\" type=\"button\" >' + mw.message('pf-calendar-createevent').escaped() + '</button>';\n\t\tconst updateButton = '<button id=\"form_submit\" class = \"submit-event-button\" name=\"data\" type=\"button\" >' + mw.message('pf-calendar-updateevent').escaped() + '</button>';\n\t\tpopup += formHtml;\n\t\tconst createEventPopup = popup + createButton;\n\t\tconst updateEventPopup = popup + updateButton;\n\t\tlet suitableForCalendar = true;\n\t\tconst calendarIdSelector = '#' + calendarId;\n\t\tlet events = [], data = [], dateFields = [], dateStartFields = [], dateEndFields = [], eventsNoDate = [], checkboxesNum = [];\n\t\tlet segment, dateSegment, yearFC, monthFC, dateFC,\n\t\t\ttimeSegment, hourFC, minuteFC, secondFC, ampm24h,\n\t\t\tdateEntry, monthEntry, yearEntry, hourEntry,\n\t\t\tminuteEntry, secondEntry, ampm24hEntry, regularEntry,\n\t\t\teventData, preEventData, currParam, temp, titleIndex, monthIndex,\n\t\t\teventDate, eventDateDay,eventDateYear, eventDateMonth, eventDateHour,\n\t\t\teventStartDate, eventEndDate , eventDateMinute, eventDateSecond, eventDateAmPm24h, reserveDate, idForm,\n\t\t\teventStartDateDay, eventStartDateYear, eventStartDateMonth, eventStartDateHour,\n\t\t\teventStartDateMinute, eventStartDateSecond, eventStartDateAmPm24;\n\t\tlet currentEndDateMoment;\n\t\tlet checkboxesValues = [];\n\t\tlet listboxValues = [];\n\t\tlet tokensProto, comboboxProto, result, eventTemplateName, parameterName, eventContents, allEvents,\n\t\t\tdateElement, nextDate, formatted, i, j;\n\n\t\tconst autoFillDay = templateName + '[cf][' + eventDateField + '][day]',\n\t\t\tautoFillMonth = templateName + '[cf][' + eventDateField + '][month]',\n\t\t\tautoFillYear = templateName + '[cf][' + eventDateField + '][year]',\n\t\t\tautoFillHour = templateName+'[cf]['+ eventDateField + '][hour]',\n\t\t\tautoFillMinute = templateName+'[cf]['+ eventDateField + '][minute]',\n\t\t\tautoFillSecond = templateName+'[cf]['+ eventDateField + '][second]',\n\t\t\tautoFillAmPm24h = templateName+'[cf]['+ eventDateField + '][ampm24h]',\n\t\t\tautoFillStartDay = templateName + '[cf][' + eventStartDateField + '][day]',\n\t\t\tautoFillStartMonth = templateName + '[cf][' + eventStartDateField + '][month]',\n\t\t\tautoFillStartYear = templateName + '[cf][' + eventStartDateField + '][year]',\n\t\t\tautoFillEndDay = templateName + '[cf][' + eventEndDateField + '][day]',\n\t\t\tautoFillEndMonth = templateName + '[cf][' + eventEndDateField + '][month]',\n\t\t\tautoFillEndYear = templateName + '[cf][' + eventEndDateField + '][year]',\n\t\t\tautoFillStartHour = templateName+'[cf]['+ eventStartDateField + '][hour]',\n\t\t\tautoFillStartMinute = templateName+'[cf]['+ eventStartDateField + '][minute]',\n\t\t\tautoFillStartSecond = templateName+'[cf]['+ eventStartDateField + '][second]',\n\t\t\tautoFillStartAmPm24h = templateName+'[cf]['+ eventStartDateField + '][ampm24h]',\n\t\t\tautoFillEndHour = templateName+'[cf]['+ eventEndDateField + '][hour]',\n\t\t\tautoFillEndMinute = templateName+'[cf]['+ eventEndDateField + '][minute]',\n\t\t\tautoFillEndSecond = templateName+'[cf]['+ eventEndDateField + '][second]',\n\t\t\tautoFillEndAmPm24h = templateName+'[cf]['+ eventEndDateField + '][ampm24h]';\n\t\tfor( i = 0; i<calendarParams[templateName].length; i++ ) {\n\t\t\tfieldType[calendarParams[templateName][i].name]=calendarParams[templateName][i].type;\n\t\t}\n\n\t\tif( fieldType[eventStartDateField] === \"datetime\" || fieldType[eventDateField] === \"datetime\" ) {\n\t\t\tisEventStartTime = true;\n\t\t}\n\n\t\tif( fieldType[eventEndDateField] === \"datetime\") {\n\t\t\tisEventEndDateTime = true;\n\t\t}\n\n\t\tfunction saveData( flag ) {\n\t\t\tif(flag === 'single' ) {\n\t\t\t\tdata = $('#popupForm').serializeArray();\n\t\t\t\ttitleIndex = -1;\n\t\t\t\tdateFields = [];\n\t\t\t\teventDate = '';\n\t\t\t\tfor(j=0;j<data.length;j++){\n\t\t\t\t\tresult = data[j].name.split(\"[\");\n\t\t\t\t\teventTemplateName = result[0];\n\t\t\t\t\tparameterName = result[2].split(\"]\")[0];\n\t\t\t\t\tif( parameterName === eventTitleField ) {\n\t\t\t\t\t\tif( titleIndex === -1 ) {\n\t\t\t\t\t\t\ttitleIndex = j;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( parameterName === eventDateField ) {\n\t\t\t\t\t\tdateFields.push({'name':data[j].name,'value':data[j].value});\n\t\t\t\t\t\tif( data[j].name.includes('second') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '59';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( data[j].name.includes('hour') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '23';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( data[j].name.includes('minute') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '59';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ( flag === 'multiple' ) {\n\t\t\t\tdata = $('#popupForm').serializeArray();\n\t\t\t\ttitleIndex = -1;\n\t\t\t\tdateStartFields = [];\n\t\t\t\tdateEndFields = [];\n\t\t\t\teventStartDate = '';\n\t\t\t\teventEndDate = '';\n\t\t\t\tfor(j=0;j<data.length;j++) {\n\t\t\t\t\tresult = data[j].name.split(\"[\");\n\t\t\t\t\teventTemplateName = result[0];\n\t\t\t\t\tparameterName = result[2].split(\"]\")[0];\n\n\t\t\t\t\tif( parameterName === eventTitleField ) {\n\t\t\t\t\t\tif( titleIndex === -1 ) {\n\t\t\t\t\t\t\ttitleIndex = j;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( parameterName === eventStartDateField ) {\n\t\t\t\t\t\tdateStartFields.push({'name':data[j].name,'value':data[j].value});\n\t\t\t\t\t\tif( data[j].name.includes('second') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '00';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( data[j].name.includes('hour') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '00';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( data[j].name.includes('minute') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '00';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( parameterName === eventEndDateField ) {\n\t\t\t\t\t\tdateEndFields.push({'name':data[j].name,'value':data[j].value});\n\t\t\t\t\t\tif( data[j].name.includes('second') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '59';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( data[j].name.includes('hour') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '23';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( data[j].name.includes('minute') ) {\n\t\t\t\t\t\t\tif( data[j].value === '' ) {\n\t\t\t\t\t\t\t\tdata[j].value = '59';\n\t\t\t\t\t\t\t}\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}\n\t\t// Checks if the date field parts are empty or not - if not,\n\t\t// don't allow the user to submit\n\t\tfunction checkAndSave( flag ) {\n\t\t\tif( flag === 'single' ) {\n\t\t\t\t$( ':input' ).on('keyup',() => {\n\t\t\t\t\tif(\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillDay + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillYear + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillMonth + '\"]' ).val() === ''\n\t\t\t\t\t) {\n\t\t\t\t\t\t$(\"#form_submit\").attr(\"disabled\", \"disabled\").css({'background-color':'#c8ccd1','color':'#fff'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(\"#form_submit\").removeAttr(\"disabled\").css({'background-color': '#3366CC','color': 'white'});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if ( flag === 'multiple' ) {\n\t\t\t\t$( ':input' ).on('keyup',() => {\n\t\t\t\t\tif(\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartDay + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndDay + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartYear + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndYear + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartMonth + '\"]' ).val() === '' ||\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndMonth + '\"]' ).val() === ''\n\t\t\t\t\t) {\n\t\t\t\t\t\t$(\"#form_submit\").attr(\"disabled\", \"disabled\").css({'background-color':'#c8ccd1','color':'#fff'});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet date1, date2;\n\t\t\t\t\t\tif( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\tdate1 = $( ':input[name=\"' + autoFillStartYear + '\"]' ).val() + '-' +\n\t\t\t\t\t\t\tpadNumber(englishMonthNames.indexOf($( ':input[name=\"' + autoFillStartMonth + '\"]' ).val())) + '-' +\n\t\t\t\t\t\t\tpadNumber($( ':input[name=\"' + autoFillStartDay + '\"]' ).val());\n\t\t\t\t\t\t\tdate2 = $( ':input[name=\"' + autoFillEndYear + '\"]' ).val() + '-' +\n\t\t\t\t\t\t\tpadNumber(englishMonthNames.indexOf($( ':input[name=\"' + autoFillEndMonth + '\"]' ).val())) + '-' +\n\t\t\t\t\t\t\tpadNumber($( ':input[name=\"' + autoFillEndDay + '\"]' ).val());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdate1 = $( ':input[name=\"' + autoFillStartYear + '\"]' ).val() + '-' +\n\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartMonth + '\"]' ).val() + '-' +\n\t\t\t\t\t\t\tpadNumber($( ':input[name=\"' + autoFillStartDay + '\"]' ).val());\n\t\t\t\t\t\t\tdate2 = $( ':input[name=\"' + autoFillEndYear + '\"]' ).val() + '-' +\n\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndMonth + '\"]' ).val() + '-' +\n\t\t\t\t\t\t\tpadNumber($( ':input[name=\"' + autoFillEndDay + '\"]' ).val());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( $( ':input[name=\"' + autoFillStartHour + '\"]' ).val() !== undefined &&\n\t\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartMinute + '\"]' ).val() !== undefined &&\n\t\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartSecond + '\"]' ).val() !== undefined &&\n\t\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndHour + '\"]' ).val() !== undefined &&\n\t\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndMinute + '\"]' ).val() !== undefined &&\n\t\t\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndSecond + '\"]' ).val() !== undefined) {\n\t\t\t\t\t\t\tdate1 += ' ' + $( ':input[name=\"' + autoFillStartHour + '\"]' ).val() + ':'\n\t\t\t\t\t\t\t\t+ $( ':input[name=\"' + autoFillStartMinute + '\"]' ).val() + ':'\n\t\t\t\t\t\t\t\t+ $( ':input[name=\"' + autoFillStartSecond + '\"]' ).val();\n\t\t\t\t\t\t\tdate2 += ' ' + $( ':input[name=\"' + autoFillEndHour + '\"]' ).val() + ':'\n\t\t\t\t\t\t\t\t+ $( ':input[name=\"' + autoFillEndMinute + '\"]' ).val() + ':'\n\t\t\t\t\t\t\t\t+ $( ':input[name=\"' + autoFillEndSecond + '\"]' ).val();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdate1 = moment(date1);\n\t\t\t\t\t\tdate2 = moment(date2);\n\t\t\t\t\t\tif ( date1 <= date2 ) {\n\t\t\t\t\t\t\t$(\"#form_submit\").removeAttr(\"disabled\").css({'background-color': '#3366CC','color': 'white'});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(\"#form_submit\").attr(\"disabled\", \"disabled\").css({'background-color':'#c8ccd1','color':'#fff'});\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}\n\n\t\tfunction resetDateAndTime() {\n\t\t\teventDateDay = '01';\n\t\t\teventDateYear = '2010';\n\t\t\teventDateMonth = '00';\n\t\t\teventDateHour = '00';\n\t\t\teventDateMinute = '00';\n\t\t\teventDateSecond = '00';\n\t\t\teventDateAmPm24h = \"\";\n\t\t}\n\n\t\t// flag : 0 - one day , 1 - start, 2 - end\n\t\tfunction setDateAndTime( arrData, flag ) {\n\t\t\tfor( dateEntry=0; dateEntry < arrData.length ; dateEntry++ ) {\n\t\t\t\tif( arrData[dateEntry].name.includes('year') ) {\n\t\t\t\t\teventDateYear = arrData[dateEntry].value;\n\t\t\t\t} else if ( arrData[dateEntry].name.includes('month') ) {\n\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) { //check for date-style format.\n\t\t\t\t\t\tmonthIndex = englishMonthNames.indexOf( arrData[dateEntry].value );\n\t\t\t\t\t\teventDateMonth = padNumber(monthIndex + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\teventDateMonth = padNumber(arrData[dateEntry].value);\n\t\t\t\t\t}\n\t\t\t\t} else if ( arrData[dateEntry].name.includes('day') ) {\n\t\t\t\t\teventDateDay = padNumber( arrData[dateEntry].value ) ;\n\t\t\t\t} else if ( arrData[dateEntry].name.includes('hour') ) {\n\t\t\t\t\teventDateHour = arrData[dateEntry].value ;\n\t\t\t\t\tif( eventDateHour === '' ) {\n\t\t\t\t\t\tif ( flag === '1' ) {\n\t\t\t\t\t\t\teventDateHour = '00';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teventDateHour = '23';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( arrData[dateEntry].name.includes('minute') ) {\n\t\t\t\t\teventDateMinute = arrData[dateEntry].value ;\n\t\t\t\t\tif( eventDateMinute === '' ) {\n\t\t\t\t\t\tif ( flag === '1' ) {\n\t\t\t\t\t\t\teventDateMinute = '00';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teventDateMinute = '59';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( arrData[dateEntry].name.includes('second') ) {\n\t\t\t\t\teventDateSecond = arrData[dateEntry].value ;\n\t\t\t\t\tif( eventDateSecond === '' ) {\n\t\t\t\t\t\tif ( flag === '1' ) {\n\t\t\t\t\t\t\teventDateSecond = '00';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teventDateSecond = '59';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if ( arrData[dateEntry].name.includes('ampm24h') ) {\n\t\t\t\t\teventDateAmPm24h = arrData[dateEntry].value ;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction checkDateTime( arrData, date ) {\n\t\t\tif( arrData.length === 7 ) {\n\t\t\t\tif( eventDateAmPm24h === \"\" ) {\n\t\t\t\t\tdate = date + 'T' + padNumber( eventDateHour ) + ':' + padNumber( eventDateMinute ) + ':' + padNumber( eventDateSecond );\n\t\t\t\t} else if ( eventDateAmPm24h === \"AM\" ) {\n\t\t\t\t\tif( eventDateHour === \"12\" ) {\n\t\t\t\t\t\tdate = date + 'T' + '00' + ':' + padNumber( eventDateMinute ) + ':' + padNumber( eventDateSecond );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdate = date + 'T' + padNumber( eventDateHour ) + ':' + padNumber( eventDateMinute ) + ':' + padNumber( eventDateSecond );\n\t\t\t\t\t}\n\t\t\t\t} else if ( eventDateAmPm24h === \"PM\" ) {\n\t\t\t\t\tif( eventDateHour === \"12\" ) {\n\t\t\t\t\t\tdate = date + 'T' + '12' + ':' + padNumber( eventDateMinute ) + ':' + padNumber( eventDateSecond );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdate = date + 'T' + padNumber( parseInt(eventDateHour) + 12 ) + ':' + padNumber( eventDateMinute ) + ':' + padNumber( eventDateSecond );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn date;\n\t\t}\n\n\t\t// Check if the date/datetime formats are suitable for the\n\t\t// calendar eventStartDate - if not, these are not proper\n\t\t// events, and they will be stored in eventsNoDate.\n\t\tfunction isValidDate(dateString) {\n\t\t\tif( mw.config.get( 'wgAmericanDates' ) ) {\n\t\t\t\tconst reg = /^(January?|February?|March?|April?|May|June?|July?|August?|September?|October?|November?|December?)\\s\\d{1,2},\\s\\d{4}$/;\n\t\t\t\tif(!dateString.match(reg)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdateString = dateString.replace('/','-');\n\t\t\t\tdateString = dateString.replace('/','-');\n\t\t\t\tconst regEx = /^\\d{4}-\\d{2}-\\d{2}$/;\n\t\t\t\tif(!dateString.match(regEx)) {\n\t\t\t\t\treturn false;\n\t\t\t\t} // Invalid format\n\t\t\t\tconst d = new Date(dateString);\n\t\t\t\tconst dNum = d.getTime();\n\t\t\t\tif(!dNum && dNum !== 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t} // NaN value, Invalid date\n\t\t\t\treturn d.toISOString().slice(0,10) === dateString;\n\t\t\t}\n\t\t}\n\n\t\tfunction dateTimeValidation(dateString) {\n\t\t\tif( mw.config.get( 'wgAmericanDates' ) ) {\n\t\t\t\tconst reg = /^(January?|February?|March?|April?|May|June?|July?|August?|September?|October?|November?|December?)\\s\\d{1,2},\\s\\d{4}\\s\\d{2}:\\d{2}:\\d{2}$/;\n\t\t\t\tif ( !dateString.match( reg ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdateString = dateString.replace('/','-');\n\t\t\t\tdateString = dateString.replace('/','-');\n\t\t\t\tconst regEx = /^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$/;\n\t\t\t\tif ( !dateString.match( regEx ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t} // Invalid format\n\t\t\t\treturn !!new Date(dateString).getTime();\n\t\t\t}\n\t\t}\n\n\t\tfunction addDays(myDate,days) {\n\t\t\treturn new Date(myDate.getTime() + days*24*60*60*1000);\n\t\t}\n\n\t\tfunction padNumber(number) {\n\t\t\tlet string = '' + number;\n\t\t\tstring = string.length < 2 ? '0' + string : string;\n\t\t\treturn string;\n\t\t}\n\n\t\tfunction calendarDialogBox(htmlContent) {\n\t\t\tconst $dialogbox = $('<dialog>')\n\t\t\t\t.attr('id', 'pf-calendar-dialog')\n\t\t\t\t.css({\n\t\t\t\t\t'padding': '30px 20px 20px 20px',\n\t\t\t\t\t'border': '1px solid #c8ccd1',\n\t\t\t\t\t'border-radius': '2px',\n\t\t\t\t\t'overflow': 'auto',\n\t\t\t\t\t'min-width': '300px',\n\t\t\t\t\t'box-shadow': '0 2px 2px 0 rgba(0,0,0,0.25)',\n\t\t\t\t\t'z-index': '1000',\n\t\t\t\t\t'max-width': '90%',\n\t\t\t\t\t'max-height': '90%',\n\t\t\t\t})\n\t\t\t\t.html(htmlContent)\n\t\t\t\t.appendTo('body');\n\n\t\t\t$('<button>')\n\t\t\t\t.addClass('calendarbox-close-small')\n\t\t\t\t.attr('type', 'button')\n\t\t\t\t.css({\n\t\t\t\t\t'position': 'absolute',\n\t\t\t\t\t'background': 'none',\n\t\t\t\t\t'text-align': 'center',\n\t\t\t\t\t'border': 'none',\n\t\t\t\t\t'font-size': '20px',\n\t\t\t\t\t'top': '10px',\n\t\t\t\t\t'right': '10px',\n\t\t\t\t\t'cursor': 'pointer'\n\t\t\t\t})\n\t\t\t\t.html('&times;')\n\t\t\t\t.appendTo($dialogbox)\n\t\t\t\t.on('click', () => {\n\t\t\t\t\t$dialogbox[0].close();\n\t\t\t\t\t$dialogbox.remove();\n\t\t\t\t});\n\n\t\t\t$dialogbox.on('click', (e) => {\n\t\t\t\tif (e.target === e.currentTarget) {\n\t\t\t\t\t$dialogbox[0].close();\n\t\t\t\t\t$dialogbox.remove();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t$dialogbox[0].showModal();\n\t\t}\n\n\t\t$( calendarIdSelector ).fullCalendar({\n\n\t\t\teditable: true,\n\t\t\teventLimit: true, // when too many events in a day, show the popover\n\t\t\theader: {\n\t\t\t\tleft: 'prev,next today',\n\t\t\t\tcenter: 'title',\n\t\t\t\tright: 'month,agendaWeek,agendaDay'\n\t\t\t},\n\t\t\tnavLinks: true, // can click day/week names to navigate views\n\t\t\tselectable: true,\n\t\t\tselectHelper: true,\n\t\t\tnextDayThreshold: \"00:00:00\",\n\n\t\t\t// Populate the calendar with the already saved events - if any\n\t\t\tevents: function( start, end, timezone, callback ) {\n\t\t\t\tconst calendarValues = calendarGridValues[templateName];\n\t\t\t\tfor( i = 0; i < calendarValues.length; i++ ) {\n\t\t\t\t\tdata = [];\n\t\t\t\t\teventData = calendarValues[i];\n\t\t\t\t\tfor( j=0; j<calendarParams[templateName].length;j++ ) {\n\t\t\t\t\t\tcurrParam = calendarParams[templateName][j];\n\t\t\t\t\t\ttemp = eventData[currParam.name];\n\t\t\t\t\t\tif( fieldType[currParam.name] === 'date' && isValidDate(temp) === false ) {\n\t\t\t\t\t\t\teventsNoDate.push(eventData);\n\t\t\t\t\t\t\tsuitableForCalendar = false;\n\t\t\t\t\t\t} else if ( fieldType[currParam.name] === 'datetime' && dateTimeValidation(temp) === false ) {\n\t\t\t\t\t\t\teventsNoDate.push(eventData);\n\t\t\t\t\t\t\tsuitableForCalendar = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(suitableForCalendar === true ) {\n\t\t\t\t\t\tfor( j=0; j<calendarParams[templateName].length;j++ ) {\n\t\t\t\t\t\t\tcurrParam = calendarParams[templateName][j];\n\t\t\t\t\t\t\ttemp = eventData[currParam.name];\n\t\t\t\t\t\t\tif( fieldType[currParam.name] === 'date' ) {\n\t\t\t\t\t\t\t\tif ( mw.config.get( 'wgAmericanDates' ) ) { //check for date-style format.\n\t\t\t\t\t\t\t\t\tdateSegment = temp.split(' ');\n\t\t\t\t\t\t\t\t\tyearFC = dateSegment[2];\n\t\t\t\t\t\t\t\t\tmonthFC = dateSegment[0];\n\t\t\t\t\t\t\t\t\tdateFC = padNumber(dateSegment[1].split(',')[0]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdateSegment = temp.split('/');\n\t\t\t\t\t\t\t\t\tyearFC = dateSegment[0];\n\t\t\t\t\t\t\t\t\tmonthFC = dateSegment[1];\n\t\t\t\t\t\t\t\t\tdateFC = padNumber(dateSegment[2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdateEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName + '[cf]['+currParam.name+'][day]',\n\t\t\t\t\t\t\t\t\t'value': dateFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( dateEntry );\n\t\t\t\t\t\t\t\tmonthEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName + '[cf]['+currParam.name+'][month]',\n\t\t\t\t\t\t\t\t\t'value': monthFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( monthEntry );\n\t\t\t\t\t\t\t\tyearEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName + '[cf]['+currParam.name+'][year]',\n\t\t\t\t\t\t\t\t\t'value': yearFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( yearEntry );\n\t\t\t\t\t\t\t} else if ( fieldType[currParam.name] === \"datetime\" ) {\n\t\t\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) { //check for date-style format.\n\t\t\t\t\t\t\t\t\tdateSegment = temp.split(' ');\n\t\t\t\t\t\t\t\t\tyearFC = dateSegment[2];\n\t\t\t\t\t\t\t\t\tmonthFC = dateSegment[0];\n\t\t\t\t\t\t\t\t\tdateFC = padNumber(dateSegment[1].split(',')[0]);\n\t\t\t\t\t\t\t\t\ttimeSegment = dateSegment[3].split(':');\n\t\t\t\t\t\t\t\t\thourFC = timeSegment[0];\n\t\t\t\t\t\t\t\t\tminuteFC = timeSegment[1];\n\t\t\t\t\t\t\t\t\tsecondFC = timeSegment[2];\n\t\t\t\t\t\t\t\t\tampm24h = dateSegment[4];\n\t\t\t\t\t\t\t\t\tif( ampm24h === undefined ) {\n\t\t\t\t\t\t\t\t\t\tampm24h = '';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsegment = temp.split(' '); // will be used\n\t\t\t\t\t\t\t\t\tdateSegment = segment[0].split('/');\n\t\t\t\t\t\t\t\t\ttimeSegment = segment[1].split(':');\n\t\t\t\t\t\t\t\t\tyearFC = dateSegment[0];\n\t\t\t\t\t\t\t\t\tmonthFC = dateSegment[1];\n\t\t\t\t\t\t\t\t\tdateFC = padNumber(dateSegment[2]);\n\t\t\t\t\t\t\t\t\thourFC = timeSegment[0];\n\t\t\t\t\t\t\t\t\tminuteFC = timeSegment[1];\n\t\t\t\t\t\t\t\t\tsecondFC = timeSegment[2];\n\t\t\t\t\t\t\t\t\tampm24h = segment[2];\n\t\t\t\t\t\t\t\t\tif( ampm24h === undefined ) {\n\t\t\t\t\t\t\t\t\t\tampm24h = '';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdateEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][day]',\n\t\t\t\t\t\t\t\t\t'value': dateFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( dateEntry );\n\t\t\t\t\t\t\t\tmonthEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][month]',\n\t\t\t\t\t\t\t\t\t'value': monthFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( monthEntry );\n\t\t\t\t\t\t\t\tyearEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][year]',\n\t\t\t\t\t\t\t\t\t'value': yearFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push(yearEntry);\n\t\t\t\t\t\t\t\thourEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][hour]',\n\t\t\t\t\t\t\t\t\t'value': hourFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( hourEntry );\n\t\t\t\t\t\t\t\tminuteEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][minute]',\n\t\t\t\t\t\t\t\t\t'value': minuteFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( minuteEntry );\n\t\t\t\t\t\t\t\tsecondEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][second]',\n\t\t\t\t\t\t\t\t\t'value': secondFC\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( secondEntry );\n\t\t\t\t\t\t\t\tampm24hEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+'][ampm24h]',\n\t\t\t\t\t\t\t\t\t'value': ampm24h\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( ampm24hEntry );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tregularEntry = {\n\t\t\t\t\t\t\t\t\t'name': templateName+'[cf]['+currParam.name+']',\n\t\t\t\t\t\t\t\t\t'value':temp\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdata.push( regularEntry );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\tif( flagOneDayEvent === true ) {\n\t\t\t\t\t\ttitleIndex = -1;\n\t\t\t\t\t\tdateFields = [];\n\t\t\t\t\t\teventDate = '';\n\t\t\t\t\t\tfor(j=0;j<data.length;j++){\n\t\t\t\t\t\t\tresult = data[j].name.split(\"[\");\n\t\t\t\t\t\t\teventTemplateName = result[0];\n\t\t\t\t\t\t\tparameterName = result[2].split(\"]\")[0];\n\n\t\t\t\t\t\t\tif ( parameterName === eventTitleField ) {\n\t\t\t\t\t\t\t\tif( titleIndex === -1 ) {\n\t\t\t\t\t\t\t\t\ttitleIndex = j;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( parameterName === eventDateField ) {\n\t\t\t\t\t\t\t\tdateFields.push( {'name':data[j].name, 'value':data[j].value} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateFields );\n\t\t\t\t\t\teventDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\treserveDate = eventDate;\n\t\t\t\t\t\teventDate = checkDateTime( dateFields, eventDate );\n\t\t\t\t\t\tidForm = eventDate + \"_fc\" + counter;\n\t\t\t\t\t\tpreEventData = {\n\t\t\t\t\t\t\ttitle: data[titleIndex].value,\n\t\t\t\t\t\t\tstart: eventDate,\n\t\t\t\t\t\t\tend: reserveDate + 'T23:59:59',\n\t\t\t\t\t\t\tcontents: data,\n\t\t\t\t\t\t\tid: idForm\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif(!pageLoaded){\n\t\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t\t$( calendarIdSelector ).fullCalendar( 'renderEvent', preEventData, true );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttitleIndex = -1;\n\t\t\t\t\t\tdateStartFields = [];\n\t\t\t\t\t\tdateEndFields = [];\n\t\t\t\t\t\teventStartDate = '';\n\t\t\t\t\t\teventEndDate = '';\n\t\t\t\t\t\tfor( j = 0; j < data.length; j++ ){\n\t\t\t\t\t\t\tresult = data[j].name.split(\"[\");\n\t\t\t\t\t\t\teventTemplateName = result[0];\n\t\t\t\t\t\t\tparameterName = result[2].split(\"]\")[0];\n\n\t\t\t\t\t\t\tif ( parameterName === eventTitleField ) {\n\t\t\t\t\t\t\t\tif( titleIndex === -1 ) {\n\t\t\t\t\t\t\t\t\ttitleIndex = j;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( parameterName === eventStartDateField ) {\n\t\t\t\t\t\t\t\tdateStartFields.push({'name': data[j].name, 'value': data[j].value});\n\t\t\t\t\t\t\t} else if ( parameterName === eventEndDateField ) {\n\t\t\t\t\t\t\t\tdateEndFields.push({'name': data[j].name, 'value': data[j].value});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateStartFields );\n\t\t\t\t\t\teventStartDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\treserveDate = eventStartDate;\n\t\t\t\t\t\teventStartDate = checkDateTime( dateStartFields, eventStartDate );\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateEndFields );\n\t\t\t\t\t\teventEndDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\treserveDate = eventEndDate;\n\t\t\t\t\t\teventEndDate = checkDateTime( dateEndFields, eventEndDate );\n\t\t\t\t\t\tidForm = eventStartDate +\"_fc\"+counter;\n\t\t\t\t\t\tif ( fieldType[eventEndDateField] === 'date' ) {\n\t\t\t\t\t\t\tdateElement = new Date(eventEndDate);\n\t\t\t\t\t\t\tnextDate = new Date(dateElement.setDate(dateElement.getDate() + 1));\n\t\t\t\t\t\t\tformatted = nextDate.getUTCFullYear() + '-' + padNumber(nextDate.getUTCMonth() + 1) + '-' + padNumber(nextDate.getUTCDate());\n\t\t\t\t\t\t\teventEndDate = formatted;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpreEventData = {\n\t\t\t\t\t\t\ttitle: eventData[eventTitleField],\n\t\t\t\t\t\t\tstart: eventStartDate,\n\t\t\t\t\t\t\tend: eventEndDate,\n\t\t\t\t\t\t\tcontents: data,\n\t\t\t\t\t\t\tid: idForm\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif(!pageLoaded){\n\t\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t\t$( calendarIdSelector ).fullCalendar( 'renderEvent', preEventData, true );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuitableForCalendar = true;\n\t\t\t\t}\n\t\t\t\tcallback(events);\n\t\t\t\tpageLoaded = true;\n\t\t\t},\n\n\t\t\t// Select : JS method to put events on the calendar by selecting\n\t\t\t// one or more dates\n\t\t\tselect: function( start, end ) {\n\t\t\t\t// Open the popup form to allow the user to create the event\n\t\t\t\tcalendarDialogBox(createEventPopup + '</form>');\n\t\t\t\t// Handle token input type\n\t\t\t\t$(':input').each( function() {\n\t\t\t\t\ttokensProto = new pf.select2.tokens();\n\t\t\t\t\tif ( $( this ).hasClass( 'pfTokens' ) ){\n\t\t\t\t\t\ttokensProto.apply( $(this) );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Handling the text with autocomplete\n\t\t\t\t$('#popupForm').find(\".autocompleteInput\").each( function() {\n\t\t\t\t\t$(this).attachAutocomplete();\n\t\t\t\t});\n\t\t\t\t// Handle combobox input type\n\t\t\t\t// $(':input').each( function() {\n\t\t\t\t// \tcomboboxProto = new pf.select2.combobox();\n\t\t\t\t// \tif ( $( this ).hasClass( 'pfComboBox' ) ){\n\t\t\t\t// \t\tcomboboxProto.apply( $(this) );\n\t\t\t\t// \t}\n\t\t\t\t// });\n\n\t\t\t\t// Handle the tree input types\n\t\t\t\t$('#popupForm').find(\".pfTreeInput\").each( function() {\n\t\t\t\t\t$(this).applyJSTree();\n\t\t\t\t});\n\t\t\t\t$('#popupForm').find(\".pfRating\").each( function() {\n\t\t\t\t\t$(this).applyRatingInput();\n\t\t\t\t});\n\t\t\t\t// Check if the event is only one day long\n\t\t\t\t// For current code - it is required to see if the event is one day long or not.\n\t\t\t\t// In future the code can be reduced and this if-else condition can be removed\n\t\t\t\tif ( flagOneDayEvent === true ) {\n\t\t\t\t\tidForm = start.format() + \"_fc\" + counter;\n\t\t\t\t\t// Atuomatically set the event date value\n\t\t\t\t\t$( ':input[name=\"' + autoFillDay + '\"]' ).val( start.format( 'DD' ) );\n\t\t\t\t\t$( ':input[name=\"' + autoFillYear + '\"]' ).val( start.format( 'YYYY' ) );\n\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) { //check for date-style format.\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillMonth + '\"]' ).val( englishMonthNames[parseInt( start.format( 'MM' ) ) -1 ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillMonth + '\"]' ).val( start.format( 'MM' ) );\n\t\t\t\t\t}\n\t\t\t\t\tcheckAndSave( 'single' );\n\t\t\t\t\t// Save all the data of the popup form and set the title, event date and the unique ID of the event\n\t\t\t\t\t$( \"#form_submit\" ).click(( event ) => {\n\t\t\t\t\t\tsaveData( 'single' );\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateFields );\n\t\t\t\t\t\teventDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\treserveDate = eventDate;\n\t\t\t\t\t\teventDate = checkDateTime( dateFields, eventDate );\n\t\t\t\t\t\teventData = {\n\t\t\t\t\t\t\ttitle: data[titleIndex].value,\n\t\t\t\t\t\t\tstart: eventDate,\n\t\t\t\t\t\t\tend: reserveDate + 'T23:59:59',\n\t\t\t\t\t\t\tcontents: data,\n\t\t\t\t\t\t\tid:idForm\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t$( '.calendarbox-close-small' ).click();\n\t\t\t\t\t\t$( calendarIdSelector ).fullCalendar( 'renderEvent', eventData, true );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tidForm = start.format() + \"_fc\" + counter;\n\t\t\t\t\tcurrentEndDateMoment = moment(end);\n\t\t\t\t\tcurrentEndDateMoment = currentEndDateMoment.subtract(1 , 'days');\n\t\t\t\t\t$( ':input[name=\"' + autoFillStartDay + '\"]' ).val( Number(start.format( 'DD' )) );\n\t\t\t\t\t$( ':input[name=\"' + autoFillStartYear + '\"]' ).val( start.format( 'YYYY' ) );\n\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) { //check for date-style format.\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartMonth + '\"]' ).val( englishMonthNames[parseInt( start.format( 'MM' ) ) -1 ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillStartMonth + '\"]' ).val( start.format( 'MM' ) );\n\t\t\t\t\t}\n\t\t\t\t\t$( ':input[name=\"' + autoFillEndDay + '\"]' ).val( Number(currentEndDateMoment.format( 'DD' )) );\n\t\t\t\t\t$( ':input[name=\"' + autoFillEndYear + '\"]' ).val( currentEndDateMoment.format( 'YYYY' ) );\n\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) { //check for date-style format.\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndMonth + '\"]' ).val( englishMonthNames[parseInt( currentEndDateMoment.format( 'MM' ) ) -1 ] );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$( ':input[name=\"' + autoFillEndMonth + '\"]' ).val( currentEndDateMoment.format( 'MM' ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tcheckAndSave( 'multiple' );\n\t\t\t\t\t$( \"#form_submit\" ).click(( event ) => {\n\t\t\t\t\t\tsaveData( 'multiple' );\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateStartFields, '1' );\n\t\t\t\t\t\teventStartDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\treserveDate = eventStartDate;\n\t\t\t\t\t\teventStartDate = checkDateTime( dateStartFields, eventStartDate );\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateEndFields, '2' );\n\t\t\t\t\t\teventEndDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\treserveDate = eventEndDate;\n\t\t\t\t\t\teventEndDate = checkDateTime( dateEndFields, eventEndDate );\n\n\t\t\t\t\t\tif ( fieldType[eventEndDateField] === 'date' ) {\n\t\t\t\t\t\t\tdateElement = new Date(eventEndDate);\n\t\t\t\t\t\t\tnextDate = new Date(dateElement.setDate(dateElement.getDate() + 1));\n\t\t\t\t\t\t\tformatted = nextDate.getUTCFullYear() + '-' + padNumber(nextDate.getUTCMonth() + 1) + '-' + padNumber(nextDate.getUTCDate());\n\t\t\t\t\t\t\teventEndDate = formatted;\n\t\t\t\t\t\t}\n\t\t\t\t\t\teventData = {\n\t\t\t\t\t\t\ttitle: data[titleIndex].value,\n\t\t\t\t\t\t\tstart: eventStartDate,\n\t\t\t\t\t\t\tend: eventEndDate,\n\t\t\t\t\t\t\tresourceEditable:true,\n\t\t\t\t\t\t\tcontents: data,\n\t\t\t\t\t\t\tid:idForm\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t$( '.calendarbox-close-small' ).click();\n\t\t\t\t\t\t$( calendarIdSelector ).fullCalendar( 'renderEvent', eventData, true );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// // Edit an event placed on the calendar by simply clicking on it\n\t\t\teventClick: function( info ) {\n\t\t\t\tconst content = $( calendarIdSelector ).fullCalendar( 'clientEvents', info.id );\n\t\t\t\tconst formContents = content[0].contents;\n\t\t\t\tconst ratingArr = [];\n\t\t\t\tcheckboxesValues = [];\n\t\t\t\tlet paramName, rateSample = 0;\n\t\t\t\t// Open the popup form and populate it with the values to allow editing\n\t\t\t\tcalendarDialogBox(updateEventPopup + deleteButton + '</form>');\n\n\t\t\t\t$('#popupForm').find(\".pfTreeInput\").each( function() {\n\t\t\t\t\t$(this).applyFancytree();\n\t\t\t\t});\n\n\t\t\t\t// Prepare the popup form for editing\n\t\t\t\tfor( i = 0; i < formContents.length; i++ ) {\n\t\t\t\t\ttemp = formContents[i].name;\n\t\t\t\t\tparamName = temp.split('[')[2].split(']')[0];\n\t\t\t\t\t// If there is a month field, set according to the date format\n\t\t\t\t\tif ( temp.includes('month') ) {\n\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) { //check for date-style format.\n\t\t\t\t\t\t\tif ( englishMonthNames.includes(formContents[i].value) ) {\n\t\t\t\t\t\t\t\t$(':input[name=\"'+temp+'\"]').val( formContents[i].value );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t$(':input[name=\"'+temp+'\"]').val( englishMonthNames[ parseInt(formContents[i].value) - 1] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(':input[name=\"'+temp+'\"]').val(formContents[i].value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( temp.includes('day') ) {\n\t\t\t\t\t\t$(':input[name=\"'+temp+'\"]').val( Number(formContents[i].value) );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif(fieldType[paramName] === 'radiobutton' || fieldType[paramName] === 'checkbox' || fieldType[paramName] === 'checkboxes' || fieldType[paramName] === 'listbox' ) {\n\t\t\t\t\t\t\tif( fieldType[paramName] === 'radiobutton' ) {\n\t\t\t\t\t\t\t\t$(':input[value=\"' + formContents[i].value + '\"]').attr('checked',true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif( fieldType[paramName] === 'checkbox' && !temp.includes('[is_checkbox]')) {\n\t\t\t\t\t\t\t\ttemp = temp.replace('[value]','');\n\t\t\t\t\t\t\t\ttemp = temp.replace('[is_checkbox]','');\n\t\t\t\t\t\t\t\ttemp+='[is_checkbox]';\n\t\t\t\t\t\t\t\tconst checkId1 = ($(':hidden[name=\"'+temp+'\"]')[0].nextElementSibling.id);\n\t\t\t\t\t\t\t\t$('#'+ checkId1).prop('checked',formContents[i].value);\n\t\t\t\t\t\t\t\t$(':hidden[name=\"'+temp+'\"]').attr('value',0);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif( fieldType[paramName] === 'checkboxes' && !temp.includes('[is_list]')) {\n\t\t\t\t\t\t\t\tif( formContents[i].value.includes(',') ) {\n\t\t\t\t\t\t\t\t\tcheckboxesValues = formContents[i].value.split(', ');\n\t\t\t\t\t\t\t\t\tfor( let p = 0; p<checkboxesValues.length; p++ ) {\n\t\t\t\t\t\t\t\t\t\t$(':input[value=\"' + checkboxesValues[p] + '\"]').attr('checked',true);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$(':input[value=\"' + formContents[i].value + '\"]').attr('checked',true);\n\t\t\t\t\t\t\t\t\t// checkboxes_values.push(formContents[i].value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif( fieldType[paramName] === 'listbox' && !temp.includes('[is_list]')) {\n\t\t\t\t\t\t\t\tif( formContents[i].value.includes(',') ) {\n\t\t\t\t\t\t\t\t\tlistboxValues = formContents[i].value.split(', ');\n\t\t\t\t\t\t\t\t\tfor( let list = 0; list<listboxValues.length; list++ ) {\n\t\t\t\t\t\t\t\t\t\t$('option[value=\"' + listboxValues[list] + '\"]').attr(\"selected\", \"selected\");\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$('option[value=\"' + formContents[i].value + '\"]').attr(\"selected\", \"selected\");\n\t\t\t\t\t\t\t\t\t// checkboxes_values.push(form_contents[i].value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$(':input[name=\"'+temp+'\"]').val( formContents[i].value );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( fieldType[paramName] === 'rating' ) {\n\t\t\t\t\t\t\tratingArr.push( formContents[i].value );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// checkboxesNum.push(checkboxes_values);\n\t\t\t\t}\n\t\t\t\t// This is my little experiment to include rating input type to the calendar interface\n\t\t\t\t// This can improve in future version of this file.\n\t\t\t\t// I have saved the rating values in the ratingArr and just filling it in the 'each'\n\t\t\t\t// This may seem like a risky bet..\n\t\t\t\t$('#popupForm').find(\".pfRating\").each( function() {\n\t\t\t\t\t$(this).applyRatingInput( ratingArr[rateSample] );\n\t\t\t\t\trateSample++;\n\t\t\t\t});\n\t\t\t\t// Handling the text with autocomplete\n\t\t\t\t$('#popupForm').find(\".autocompleteInput\").each( function() {\n\t\t\t\t\t$(this).attachAutocomplete();\n\t\t\t\t});\n\n\t\t\t\t// Handling token input type\n\t\t\t\t$(':input').each(function() {\n\t\t\t\t\ttokensProto = new pf.select2.tokens();\n\t\t\t\t\tif ( $( this ).hasClass( 'pfTokens' ) ) {\n\t\t\t\t\t\ttokensProto.apply( $(this) );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// FIXME: This is not yet working correctly - possibly due\n\t\t\t\t// to z-index of fancybox popup or select2\n\t\t\t\t// $(':input').each( function() {\n\t\t\t\t// \tcomboboxProto = new pf.select2.combobox();\n\t\t\t\t// \tif ( $( this ).hasClass( 'pfComboBox' ) ) {\n\t\t\t\t// \t\tcomboboxProto.apply( $(this) );\n\t\t\t\t// \t}\n\t\t\t\t// });\n\t\t\t\t// Delete button for the existing event\n\t\t\t\t$( \"#event_delete\" ).click(( event ) => {\n\t\t\t\t\t$( calendarIdSelector ).fullCalendar('removeEvents',info.id);\n\t\t\t\t\t$( '.calendarbox-close-small' ).click();\n\t\t\t\t});\n\n\t\t\t\tif ( flagOneDayEvent === true ) {\n\t\t\t\t\t// Check if the date fields are left empty or not\n\t\t\t\t\tcheckAndSave( 'single' );\n\t\t\t\t\t// Save everything again once the submit button is pressed\n\t\t\t\t\t$( \"#form_submit\" ).click(( event ) => {\n\t\t\t\t\t\tsaveData( 'single' );\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateFields );\n\t\t\t\t\t\teventDate = eventDateYear + '-' + padNumber(eventDateMonth) + '-' + padNumber(eventDateDay);\n\t\t\t\t\t\teventDate = checkDateTime( dateFields, eventDate );\n\t\t\t\t\t\tinfo.title = data[titleIndex].value;\n\t\t\t\t\t\tinfo.contents = data;\n\t\t\t\t\t\tinfo.start = eventDate;\n\t\t\t\t\t\t$('.calendarbox-close-small').click();\n\t\t\t\t\t\t$( calendarIdSelector ).fullCalendar( 'updateEvent' , info , true );\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst end = info.end;\n\t\t\t\t\tconst start = info.start;\n\t\t\t\t\tcheckAndSave( 'multiple' );\n\t\t\t\t\t$( \"#form_submit\" ).click(( event ) => {\n\t\t\t\t\t\tsaveData( 'multiple' );\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateStartFields , '1' );\n\t\t\t\t\t\teventStartDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\teventStartDate = checkDateTime( dateStartFields, eventStartDate );\n\n\t\t\t\t\t\tresetDateAndTime();\n\t\t\t\t\t\tsetDateAndTime( dateEndFields , '2' );\n\t\t\t\t\t\teventEndDate = eventDateYear + '-' + eventDateMonth + '-' + eventDateDay;\n\t\t\t\t\t\teventEndDate = checkDateTime( dateEndFields, eventEndDate );\n\n\t\t\t\t\t\tif ( fieldType[eventEndDateField] === 'date' ) {\n\t\t\t\t\t\t\tdateElement = new Date(eventEndDate);\n\t\t\t\t\t\t\tnextDate = new Date(dateElement.setDate(dateElement.getDate() + 1));\n\t\t\t\t\t\t\tformatted = nextDate.getUTCFullYear() + '-' + padNumber(nextDate.getUTCMonth() + 1) + '-' + padNumber(nextDate.getUTCDate());\n\t\t\t\t\t\t\teventEndDate = formatted;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinfo.title = data[titleIndex].value;\n\t\t\t\t\t\tinfo.contents = data;\n\t\t\t\t\t\tinfo.start = eventStartDate;\n\t\t\t\t\t\tinfo.end = eventEndDate;\n\t\t\t\t\t\t$( '.calendarbox-close-small') .click();\n\t\t\t\t\t\t$( calendarIdSelector ).fullCalendar( 'updateEvent', info, true );\n\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\n\t\t\teventResize: function(event) {\n\t\t\t\tevent.start._i = event.start.format();\n\t\t\t\tevent.end._i = event.end.format();\n\t\t\t\tcurrentEndDateMoment = moment(event.end);\n\t\t\t\tif( fieldType[eventStartDateField] === 'date' && event.allDay ) {\n\t\t\t\t\tcurrentEndDateMoment = currentEndDateMoment.subtract(1 , 'days');\n\t\t\t\t}\n\n\t\t\t\teventContents = event.contents;\n\t\t\t\tfor ( i = 0; i < eventContents.length; i++ ) {\n\t\t\t\t\tif ( eventContents[i].name === autoFillStartDay ) {\n\t\t\t\t\t\teventContents[i].value = event.start.format('DD');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartMonth ) {\n\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt(event.start.format('MM')) - 1 ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teventContents[i].value = event.start.format('MM');\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartYear ) {\n\t\t\t\t\t\teventContents[i].value = event.start.format('YYYY');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndDay ) {\n\t\t\t\t\t\teventContents[i].value = currentEndDateMoment.format('DD');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndMonth ) {\n\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt(currentEndDateMoment.format('MM')) - 1 ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\teventContents[i].value = currentEndDateMoment.format('MM');\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndYear ) {\n\t\t\t\t\t\teventContents[i].value = currentEndDateMoment.format('YYYY');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartHour ) {\n\t\t\t\t\t\teventContents[i].value = event.start.format('hh');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartMinute ) {\n\t\t\t\t\t\teventContents[i].value = event.start.format('mm');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartSecond ) {\n\t\t\t\t\t\teventContents[i].value = event.start.format('ss');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartAmPm24h ) {\n\t\t\t\t\t\teventContents[i].value = ( event.start.format('t') === 'p' ? 'PM' : 'AM' );\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndHour ) {\n\t\t\t\t\t\teventContents[i].value = event.end.format('hh');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndMinute ) {\n\t\t\t\t\t\teventContents[i].value = event.end.format('mm');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndSecond ) {\n\t\t\t\t\t\teventContents[i].value = event.end.format('ss');\n\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndAmPm24h ) {\n\t\t\t\t\t\teventContents[i].value = ( event.end.format('t') === 'p' ? 'PM' : 'AM' );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tevent.contents = eventContents;\n\t\t\t\t$( calendarIdSelector ).fullCalendar('updateEvent',event);\n\n\t\t\t},\n\n\t\t\teventDrop: function( event, delta, revertFunc ) {\n\t\t\t\tconst oldEvent = $( calendarIdSelector ).fullCalendar( 'clientEvents', event.id );\n\t\t\t\t$( calendarIdSelector ).fullCalendar('removeEvents',oldEvent[0].id);\n\t\t\t\tevent.start._i = event.start.format();\n\n\t\t\t\tif ( flagOneDayEvent === false ) {\n\t\t\t\t\tif ( event.end !== null ) {\n\t\t\t\t\t\tevent.end._i = event.end.format() ;\n\t\t\t\t\t\tcurrentEndDateMoment = moment(event.end);\n\t\t\t\t\t\tif( fieldType[eventStartDateField] === 'date' && event.allDay ) {\n\t\t\t\t\t\t\tcurrentEndDateMoment = currentEndDateMoment.subtract(1 , 'days');\n\t\t\t\t\t\t}\n\t\t\t\t\t\teventContents = event.contents;\n\t\t\t\t\t\tfor( i = 0; i<eventContents.length; i++ ) {\n\t\t\t\t\t\t\tif ( eventContents[i].name === autoFillStartDay ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('DD');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartMonth ) {\n\t\t\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt( event.start.format('MM')) - 1 ];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('MM');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartYear ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('YYYY');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndDay ) {\n\t\t\t\t\t\t\t\teventContents[i].value = currentEndDateMoment.format('DD');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndMonth ) {\n\t\t\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt(currentEndDateMoment.format('MM')) - 1 ];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\teventContents[i].value = currentEndDateMoment.format('MM');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndYear ) {\n\t\t\t\t\t\t\t\teventContents[i].value = currentEndDateMoment.format('YYYY');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartHour ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('hh');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartMinute ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('mm');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartSecond ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('ss');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartAmPm24h ) {\n\t\t\t\t\t\t\t\teventContents[i].value = ( event.start.format('t') ==='p' ? 'PM' : 'AM' );\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndHour ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.end.format('hh');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndMinute ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.end.format('mm');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndSecond ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.end.format('ss');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndAmPm24h ) {\n\t\t\t\t\t\t\t\teventContents[i].value = ( event.end.format('t') ==='p' ? 'PM' : 'AM' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\teventContents = event.contents;\n\t\t\t\t\t\tfor ( i = 0; i < eventContents.length; i++ ) {\n\t\t\t\t\t\t\tif ( eventContents[i].name === autoFillStartDay ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('DD');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartMonth ) {\n\t\t\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt( event.start.format('MM')) - 1 ];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('MM');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillStartYear ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('YYYY');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndDay ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('DD');\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndMonth ) {\n\t\t\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt( event.start.format('MM')) - 1 ];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('MM');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillEndYear ) {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('YYYY');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\teventContents = event.contents;\n\t\t\t\t\tevent.end._i = event.start.format( 'YYYY' ) + '-' + event.start.format('MM') + '-' + event.start.format('DD') + \"T23:59:59\";\n\t\t\t\t\tfor( i = 0; i<eventContents.length; i++ ) {\n\t\t\t\t\t\tif ( eventContents[i].name === autoFillDay ) {\n\t\t\t\t\t\t\teventContents[i].value = event.start.format('DD');\n\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillMonth ) {\n\t\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\t\teventContents[i].value = englishMonthNames[ parseInt( event.start.format('MM')) - 1 ];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\teventContents[i].value = event.start.format('MM');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillYear ) {\n\t\t\t\t\t\t\teventContents[i].value = event.start.format('YYYY');\n\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillHour ) {\n\t\t\t\t\t\t\teventContents[i].value = event.start.format('hh');\n\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillMinute ) {\n\t\t\t\t\t\t\teventContents[i].value = event.start.format('mm');\n\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillSecond ) {\n\t\t\t\t\t\t\teventContents[i].value = event.start.format('ss');\n\t\t\t\t\t\t} else if ( eventContents[i].name === autoFillAmPm24h ) {\n\t\t\t\t\t\t\teventContents[i].value = ( event.start.format('t') ==='p' ? 'PM' : 'AM' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$( calendarIdSelector ).fullCalendar( 'renderEvent', event, true );\n\t\t\t},\n\t\t\tdisplayEventEnd: isEventEndDateTime,\n\t\t\ttimeFormat: 'H(:mm:ss)t',\n\t\t\teventDurationEditable: true,\n\t\t\tdisplayEventTime: isEventStartTime\n\t\t});\n\t\t$('#fullCalendarLoading').css(\"display\", \"none\");\n\n\t\t// Handle the \"Save page\" button\n\t\t$( \"#pfForm\" ).submit(( event ) => {\n\t\t\tallEvents = $( calendarIdSelector ).fullCalendar('clientEvents');\n\t\t\tlet dateValue = '';\n\t\t\tlet day = '';\n\t\t\tlet month = '';\n\t\t\tlet year = '';\n\t\t\tlet hour = '';\n\t\t\tlet minute = '';\n\t\t\tlet second = '';\n\t\t\tampm24h = ' ';\n\t\t\tfor( i =0;i<allEvents.length;i++ ) {\n\t\t\t\tconst eventContent = allEvents[i].contents;\n\t\t\t\tconst finalFieldValues = [];\n\t\t\t\tfor( let ii=0; ii < calendarParams[templateName].length; ii++ ) {\n\t\t\t\t\tparameterName = calendarParams[templateName][ii].name;\n\t\t\t\t\tlet inputValue = '';\n\t\t\t\t\tif( fieldType[parameterName] === \"date\" ) {\n\t\t\t\t\t\tdateValue = '';\n\t\t\t\t\t\tday = '';\n\t\t\t\t\t\tmonth = '';\n\t\t\t\t\t\tyear = '';\n\t\t\t\t\t\tfor ( j = 0; j < eventContent.length; j++ ) {\n\t\t\t\t\t\t\tif( eventContent[j].name.includes('['+parameterName+']') ) {\n\t\t\t\t\t\t\t\tif( eventContent[j].name.includes('[day]') ) {\n\t\t\t\t\t\t\t\t\tday = eventContent[j].value.replace(/(^|-)0+/g, \"$1\");\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[year]') ) {\n\t\t\t\t\t\t\t\t\tyear = eventContent[j].value;\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[month]') ) {\n\t\t\t\t\t\t\t\t\tmonth = eventContent[j].value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\tif( englishMonthNames.indexOf(month) ) {\n\t\t\t\t\t\t\t\tdateValue = month + ' ' + day + ', ' + year;\n\t\t\t\t\t\t\t} else if ( !englishMonthNames.includes(month) ) {\n\t\t\t\t\t\t\t\tdateValue = englishMonthNames[ parseInt(month) - 1 ] + ' ' + day + ', ' + year;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdateValue = year + '/' + month + '/' + padNumber(day);\n\t\t\t\t\t\t\tif( year === '' && month === '' && day === '' || year === '' && month === '' ) {\n\t\t\t\t\t\t\t\tdateValue = '';\n\t\t\t\t\t\t\t} else if ( day === '' ) {\n\t\t\t\t\t\t\t\tif( month === '' && year !== '' ) {\n\t\t\t\t\t\t\t\t\tdateValue = month;\n\t\t\t\t\t\t\t\t} else if ( month !== '' && year === '' ) {\n\t\t\t\t\t\t\t\t\tdateValue = year;\n\t\t\t\t\t\t\t\t} else if ( month !== '' && year !== '' ) {\n\t\t\t\t\t\t\t\t\tdateValue = month + ' ' + year;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinputValue = dateValue;\n\t\t\t\t\t} else if ( fieldType[parameterName] === \"datetime\" ) {\n\t\t\t\t\t\tdateValue = '';\n\t\t\t\t\t\tday = '';\n\t\t\t\t\t\tmonth = '';\n\t\t\t\t\t\tyear = '';\n\t\t\t\t\t\thour = '';\n\t\t\t\t\t\tminute = '';\n\t\t\t\t\t\tsecond = '';\n\t\t\t\t\t\tampm24h = ' ';\n\t\t\t\t\t\tfor( j = 0; j < eventContent.length; j++ ) {\n\t\t\t\t\t\t\tif( eventContent[j].name.includes('['+parameterName+']') ) {\n\t\t\t\t\t\t\t\tif( eventContent[j].name.includes('[day]') ) {\n\t\t\t\t\t\t\t\t\tday = eventContent[j].value.replace(/(^|-)0+/g, \"$1\");\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[year]') ) {\n\t\t\t\t\t\t\t\t\tyear = eventContent[j].value;\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[month]') ) {\n\t\t\t\t\t\t\t\t\tmonth = eventContent[j].value;\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[hour]') ) {\n\t\t\t\t\t\t\t\t\thour = eventContent[j].value;\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[minute]') ) {\n\t\t\t\t\t\t\t\t\tminute = eventContent[j].value;\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[second]') ) {\n\t\t\t\t\t\t\t\t\tsecond = eventContent[j].value;\n\t\t\t\t\t\t\t\t} else if( eventContent[j].name.includes('[ampm24h]') ) {\n\t\t\t\t\t\t\t\t\tampm24h = (eventContent[j].value !== '' ) ? eventContent[j].value : ' ';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( mw.config.get('wgAmericanDates') ) {\n\t\t\t\t\t\t\tif( englishMonthNames.indexOf(month) ) {\n\t\t\t\t\t\t\t\tdateValue = month + ' ' + day + ', ' + year + ' ' + padNumber(hour) + ':' + padNumber(minute) + ':' + padNumber(second) + ' ' + ampm24h;\n\t\t\t\t\t\t\t} else if ( !englishMonthNames.includes(month) ) {\n\t\t\t\t\t\t\t\tdateValue = englishMonthNames[ parseInt(month) - 1 ] + ' ' + day + ', ' + year + ' ' + padNumber(hour) + ':' + padNumber(minute) + ':' + padNumber(second) + ' ' + ampm24h;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdateValue = year + '/' + month + '/' + padNumber( day ) + ' ' + padNumber(hour) + ':' + padNumber(minute) + ':' + padNumber(second) + ' ' + ampm24h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinputValue = dateValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet checkboxesFinal = '';\n\t\t\t\t\t\tcheckboxesNum= [];\n\t\t\t\t\t\tif ( fieldType[parameterName] === 'checkboxes' || fieldType[parameterName] === 'listbox' ) {\n\t\t\t\t\t\t\tfor ( j = 0; j < eventContent.length; j++ ) {\n\t\t\t\t\t\t\t\tif ( eventContent[j].name.includes('['+parameterName+']') && !eventContent[j].name.includes('[is_list]') ) {\n\t\t\t\t\t\t\t\t\tcheckboxesNum.push(eventContent[j].value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor ( let t = 0; t < checkboxesNum.length; t++ ) {\n\t\t\t\t\t\t\t\tif( t < checkboxesNum.length -1 ) {\n\t\t\t\t\t\t\t\t\tcheckboxesFinal += checkboxesNum[t] + ', ';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcheckboxesFinal += checkboxesNum[t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinputValue = checkboxesFinal;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor ( j = 0; j < eventContent.length; j++ ) {\n\t\t\t\t\t\t\t\tif ( eventContent[j].name.includes('['+parameterName+']') ) {\n\t\t\t\t\t\t\t\t\tinputValue = eventContent[j].value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst inputName = templateName + '['+ (i+1) +'][' + parameterName + ']';\n\t\t\t\t\tfinalFieldValues[inputName] = inputValue;\n\t\t\t\t\t$('<input>').attr( 'type', 'hidden' ).attr( 'name', inputName ).attr( 'value',finalFieldValues[inputName] ).appendTo( '#pfForm' );\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor ( let k = 0; k < eventsNoDate.length; k++ ) {\n\t\t\t\tconst index = i+1;\n\t\t\t\tfor( let jj = 0; jj < calendarParams[templateName].length; jj++ ) {\n\t\t\t\t\tparameterName = calendarParams[templateName][jj].name;\n\t\t\t\t\tconst entryName = templateName + '['+ (index) +'][' + parameterName + ']';\n\t\t\t\t\t$('<input>').attr( 'type', 'hidden' ).attr( 'name', entryName ).attr( 'value',eventsNoDate[k][parameterName] ).appendTo( '#pfForm' );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t});\n}( jQuery, mediaWiki, pf ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_PageSchemas.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_SpreadsheetAutocompleteWidget.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'deferred' is never reassigned. Use 'const' instead.","line":42,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":42,"endColumn":11},{"ruleId":"prefer-const","severity":1,"message":"'api' is never reassigned. Use 'const' instead.","line":52,"column":2,"nodeType":"Identifier","messageId":"useConst","endLine":52,"endColumn":5},{"ruleId":"prefer-const","severity":1,"message":"'requestParams' is never reassigned. Use 'const' instead.","line":53,"column":2,"nodeType":"Identifier","messageId":"useConst","endLine":53,"endColumn":15},{"ruleId":"prefer-const","severity":1,"message":"'items' is never reassigned. Use 'const' instead.","line":100,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":100,"endColumn":8},{"ruleId":"prefer-const","severity":1,"message":"'self' is never reassigned. Use 'const' instead.","line":122,"column":7,"nodeType":"Identifier","messageId":"useConst","endLine":122,"endColumn":11},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsEDSettings' is never reassigned. Use 'const' instead.","line":123,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":123,"endColumn":25},{"ruleId":"prefer-const","severity":1,"message":"'name' is never reassigned. Use 'const' instead.","line":124,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":124,"endColumn":8},{"ruleId":"prefer-const","severity":1,"message":"'edgValues' is never reassigned. Use 'const' instead.","line":125,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":125,"endColumn":13},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substr()`.","line":177,"column":17,"nodeType":"CallExpression","messageId":"substr","endLine":177,"endColumn":57},{"ruleId":"prefer-const","severity":1,"message":"'$baseElement' is never reassigned. Use 'const' instead.","line":224,"column":2,"nodeType":"Identifier","messageId":"useConst","endLine":224,"endColumn":14}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * An OOUI-based widget for an autocompleting text input\n * within the spreadsheet-style display that uses the\n * Page Forms 'pfautocomplete' API.\n *\n * @class\n * @extends OO.ui.TextInputWidget\n * @param {Object} config Configuration Options\n * @author Yash Varshney\n */\n pf.spreadsheetAutocompleteWidget = function( config ) {\n\tthis.config = config || {};\n\t// Parent constructor\n\tconst textInputConfig = {\n\t\t// This turns off the local, browser-based autocompletion,\n\t\t// which would normally suggest values that the user has\n\t\t// typed before on that computer.\n\t\tautocomplete: false\n\t};\n\n\tOO.ui.TextInputWidget.call(this, textInputConfig);\n\t// Mixin constructor\n\tOO.ui.mixin.LookupElement.call(this, { highlightFirst: false });\n\n\t// dataCache will temporarily store entity id => entity data mappings of\n\t// entities, so that if we somehow then alter the text (add characters,\n\t// remove some) and then adjust our typing to form a known item,\n\t// it'll recognize it and know what the id was, without us having to\n\t// select it anew\n\tthis.dataCache = {};\n};\n\nOO.inheritClass( pf.spreadsheetAutocompleteWidget, OO.ui.TextInputWidget );\nOO.mixinClass( pf.spreadsheetAutocompleteWidget, OO.ui.mixin.LookupElement );\n\n/**\n * @inheritdoc\n */\npf.spreadsheetAutocompleteWidget.prototype.getLookupRequest = function() {\n\tlet\n\t\tvalue = this.getValue(),\n\t\tdeferred = $.Deferred(),\n\t\tapi,\n\t\trequestParams;\n\t// sometimes it happens that on double clicking the cell\n\t// a space is automatically added to the value inside the\n\t// editor and hence we get \"No Matches found\" so we can\n\t// simply remove that space.\n\tif ( value[0] == ' ' ) {\n\t\tvalue = value.slice(1);\n\t}\n\tapi = new mw.Api();\n\trequestParams = {\n\t\taction: 'pfautocomplete',\n\t\tformat: 'json',\n\t\tsubstr: value,\n\t};\n\tif( this.config.autocompletedatatype == 'category' ) {\n\t\trequestParams.category = this.config.autocompletesettings;\n\t} else if ( this.config.autocompletedatatype == 'cargo field' ) {\n\t\tconst table_and_field = this.config.autocompletesettings.split( '|' );\n\t\trequestParams.cargo_table = table_and_field[0];\n\t\trequestParams.cargo_field = table_and_field[1];\n\t} else if ( this.config.autocompletedatatype == 'property' ) {\n\t\trequestParams.property = this.config.autocompletesettings;\n\t} else if ( this.config.autocompletedatatype == 'concept' ) {\n\t\trequestParams.concept = this.config.autocompletesettings;\n\t} else if( this.config.autocompletedatatype == 'dep_on' ) {\n\t\tconst dep_field_opts = this.getDependentFieldOpts( this.config.data_y, this.config.dep_on_field );\n\n\t\tif (!dep_field_opts.prop.includes('|')) {\n\t\t\trequestParams.property = dep_field_opts.prop;\n\t\t\trequestParams.baseprop = dep_field_opts.base_prop;\n\t\t\trequestParams.basevalue = dep_field_opts.base_value;\n\t\t} else {\n\t\t\tconst cargoTableAndFieldStr = dep_field_opts.prop;\n\t\t\tconst baseCargoTableAndFieldStr = dep_field_opts.base_prop;\n\t\t\trequestParams.cargo_table = cargoTableAndFieldStr.split( '|' )[0];\n\t\t\trequestParams.cargo_field = cargoTableAndFieldStr.split( '|' )[1];\n\t\t\trequestParams.base_cargo_table = baseCargoTableAndFieldStr.split('|')[0];\n\t\t\trequestParams.base_cargo_field = baseCargoTableAndFieldStr.split('|')[1];\n\t\t}\n\t\trequestParams.basevalue = dep_field_opts.base_value;\n\t}\n\treturn api.get( requestParams );\n}\n\n/**\n * @inheritdoc\n */\n pf.spreadsheetAutocompleteWidget.prototype.getLookupCacheDataFromResponse = function( response ) {\n\treturn response || [];\n};\n\n/**\n * @inheritdoc\n */\n pf.spreadsheetAutocompleteWidget.prototype.getLookupMenuOptionsFromData = function( data ) {\n\tlet item,\n\t\titems = [];\n\n\tif ( data.error ) {\n\t\treturn this.getNoMatchesOOUIMenuOptionWidget();\n\t}\n\tif( this.config.autocompletedatatype == 'category'\n\t\t|| this.config.autocompletedatatype == 'cargo field'\n\t\t|| this.config.autocompletedatatype == 'dep_on'\n\t\t|| this.config.autocompletedatatype == 'concept'\n\t\t|| this.config.autocompletedatatype == 'property' ) {\n\t\tdata = data.pfautocomplete;\n\t\tif ( data.length === 0 ) {\n\t\t\treturn this.getNoMatchesOOUIMenuOptionWidget();\n\t\t}\n\t\tfor ( let i = 0; i < data.length; i++ ) {\n\t\t\titem = new OO.ui.MenuOptionWidget( {\n\t\t\t\tdata: data[ i ].title,\n\t\t\t\tlabel: this.highlightText( data[ i ].title )\n\t\t\t} );\n\t\t\titems.push( item );\n\t\t}\n\t} else if( this.config.autocompletedatatype == 'external data' ) {\n\t\tlet self = this,\n\t\t\twgPageFormsEDSettings = mw.config.get('wgPageFormsEDSettings'),\n\t\t\tname = this.config.autocompletesettings,\n\t\t\tedgValues = mw.config.get('edgValues'),\n\t\t\tvalueFilter;\n\t\tdata = {};\n\t\tif ( wgPageFormsEDSettings !== null && wgPageFormsEDSettings[name].title !== undefined && wgPageFormsEDSettings[name].title !== \"\" ) {\n\t\t\tdata.title = edgValues[wgPageFormsEDSettings[name].title];\n\t\t\tif (data.title !== undefined && data.title !== null) {\n\t\t\t\tlet i = 0;\n\t\t\t\tdata.title.forEach(() => {\n\t\t\t\t\tconst wgPageFormsAutocompleteOnAllChars = mw.config.get( 'wgPageFormsAutocompleteOnAllChars' );\n\t\t\t\t\tif ( wgPageFormsAutocompleteOnAllChars ) {\n\t\t\t\t\t\tvalueFilter = data.title[i].toLowerCase().includes(self.getValue().toLowerCase());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalueFilter = self.checkIfAnyWordStartsWithInputValue( data.title[i], self.getValue() );\n\t\t\t\t\t}\n\t\t\t\t\tif ( valueFilter ) {\n\t\t\t\t\t\titem = new OO.ui.MenuOptionWidget( {\n\t\t\t\t\t\t\tdata: data.title[i], label: self.highlightText(data.title[i])\n\t\t\t\t\t\t} );\n\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t});\n\t\t\t\tif( items.length == 0 ) {\n\t\t\t\t\treturn this.getNoMatchesOOUIMenuOptionWidget();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// this case will possibly come when the external data can't be fetched due to wrong data provided\n\t\t\treturn this.getNoMatchesOOUIMenuOptionWidget();\n\t\t}\n\t}\n\n\treturn items;\n};\n\n/**\n * @param {string} suggestion\n * @return {Mixed} HtmlSnipppet\n */\npf.spreadsheetAutocompleteWidget.prototype.highlightText = function( suggestion ) {\n\tlet searchTerm = this.getValue();\n\tif ( searchTerm[0] == ' ' ) {\n\t\tsearchTerm = searchTerm.slice(1);\n\t}\n\tconst searchRegexp = new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" +\n\t\tsearchTerm.replace(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/gi, \"\\\\$1\") +\n\t\t\")(?![^<>]*>)(?![^&;]+;)\", \"gi\");\n\tconst itemLabel = suggestion;\n\tconst loc = itemLabel.search(searchRegexp);\n\tlet t;\n\tif (loc >= 0) {\n\t\tt = itemLabel.slice(0, Math.max(0, loc)) +\n\t\t\t'<strong>' + itemLabel.substr(loc, searchTerm.length) + '</strong>' +\n\t\t\titemLabel.slice(loc + searchTerm.length);\n\t} else {\n\t\tt = itemLabel;\n\t}\n\treturn new OO.ui.HtmlSnippet(t);\n};\n/**\n * Provides an OOUI's MenuOptionWidget with a \"No Matches\" label\n *\n * @return {Mixed} OOUi's MenuOptionWidget\n */\npf.spreadsheetAutocompleteWidget.prototype.getNoMatchesOOUIMenuOptionWidget = function() {\n\treturn [\n\t\tnew OO.ui.MenuOptionWidget( {\n\t\t\tdata: this.getValue(),\n\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\tdisabled: true\n\t\t} )\n\t];\n}\n\n/**\n * Checks if any \"word\" in the given string starts with the given search term.\n *\n * @param {string} string\n *\n * @param {string} curValue\n *\n * @return {boolean}\n */\npf.spreadsheetAutocompleteWidget.prototype.checkIfAnyWordStartsWithInputValue = function( string, curValue ) {\n\tconst regex = new RegExp('\\\\b' + curValue.toLowerCase());\n\treturn string.toLowerCase().match(regex) !== null;\n}\n\n/**\n * Gives dependent field options which include\n * property, base property and base value\n *\n * @param {string} data_y\n * @param {string} dep_on_field\n * @return {Object} dep_field_opts\n */\npf.spreadsheetAutocompleteWidget.prototype.getDependentFieldOpts = function( data_y, dep_on_field ) {\n\tconst dep_field_opts = {};\n\tlet $baseElement;\n\t$baseElement = $('td[data-y=\"'+data_y+'\"][origname=\"'+dep_on_field+'\"]');\n\tdep_field_opts.base_value = $baseElement.html();\n\tdep_field_opts.base_prop = mw.config.get('wgPageFormsFieldProperties')[dep_on_field] ||\n\t\t$baseElement.attr('name');\n\tdep_field_opts.prop = this.config['autocompletesettings'];\n\n\treturn dep_field_opts;\n}\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_SpreadsheetComboBoxInput.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'data_source' is never reassigned. Use 'const' instead.","line":30,"column":6,"nodeType":"Identifier","messageId":"useConst","endLine":30,"endColumn":17},{"ruleId":"prefer-const","severity":1,"message":"'data_type' is never reassigned. Use 'const' instead.","line":31,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":31,"endColumn":12},{"ruleId":"prefer-const","severity":1,"message":"'self' is never reassigned. Use 'const' instead.","line":33,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":33,"endColumn":7},{"ruleId":"prefer-const","severity":1,"message":"'values' is never reassigned. Use 'const' instead.","line":34,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":34,"endColumn":9},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":50,"column":5,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":50,"endColumn":15},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":54,"column":7,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":54,"endColumn":108},{"ruleId":"block-scoped-var","severity":1,"message":"'valueFilter' declared on line 56 column 11 is used outside of binding context.","line":54,"column":11,"nodeType":"Identifier","messageId":"outOfScope","endLine":54,"endColumn":22},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":56,"column":7,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":56,"endColumn":92},{"ruleId":"block-scoped-var","severity":1,"message":"'valueFilter' declared on line 54 column 11 is used outside of binding context.","line":56,"column":11,"nodeType":"Identifier","messageId":"outOfScope","endLine":56,"endColumn":22},{"ruleId":"block-scoped-var","severity":1,"message":"'valueFilter' declared on line 54 column 11 is used outside of binding context.","line":58,"column":11,"nodeType":"Identifier","messageId":"outOfScope","endLine":58,"endColumn":22},{"ruleId":"block-scoped-var","severity":1,"message":"'valueFilter' declared on line 56 column 11 is used outside of binding context.","line":58,"column":11,"nodeType":"Identifier","messageId":"outOfScope","endLine":58,"endColumn":22},{"ruleId":"block-scoped-var","severity":1,"message":"'i' declared on line 50 column 9 is used outside of binding context.","line":114,"column":13,"nodeType":"Identifier","messageId":"outOfScope","endLine":114,"endColumn":14},{"ruleId":"block-scoped-var","severity":1,"message":"'i' declared on line 50 column 9 is used outside of binding context.","line":114,"column":20,"nodeType":"Identifier","messageId":"outOfScope","endLine":114,"endColumn":21},{"ruleId":"block-scoped-var","severity":1,"message":"'i' declared on line 50 column 9 is used outside of binding context.","line":114,"column":37,"nodeType":"Identifier","messageId":"outOfScope","endLine":114,"endColumn":38},{"ruleId":"block-scoped-var","severity":1,"message":"'i' declared on line 50 column 9 is used outside of binding context.","line":116,"column":20,"nodeType":"Identifier","messageId":"outOfScope","endLine":116,"endColumn":21},{"ruleId":"block-scoped-var","severity":1,"message":"'i' declared on line 50 column 9 is used outside of binding context.","line":116,"column":62,"nodeType":"Identifier","messageId":"outOfScope","endLine":116,"endColumn":63},{"ruleId":"jsdoc/require-returns-type","severity":1,"message":"Missing JSDoc @return type.","line":130,"column":1,"nodeType":"Block","endLine":130,"endColumn":1},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substr()`.","line":145,"column":17,"nodeType":"CallExpression","messageId":"substr","endLine":145,"endColumn":57},{"ruleId":"jsdoc/no-undefined-types","severity":1,"message":"The type 'integer' is undefined.","line":189,"column":1,"nodeType":"Block","endLine":189,"endColumn":1},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":196,"column":2,"nodeType":"AssignmentExpression","endLine":196,"endColumn":73},{"ruleId":"prefer-const","severity":1,"message":"'baseElement' is never reassigned. Use 'const' instead.","line":196,"column":2,"nodeType":"Identifier","messageId":"useConst","endLine":196,"endColumn":13}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":21,"fixableErrorCount":0,"fixableWarningCount":0,"source":"\n/**\n * An OOUI-based widget for an autocompleting ComboBox input\n * within the spreadsheet-style display that uses the\n * Page Forms 'pfautocomplete' API.\n *\n * @class\n * @extends OO.ui.ComboBoxInputWidget\n * @param {Object} config Configuration Options\n * @author Yash Varshney\n */\n pf.SpreadsheetComboBoxInput = function( config ) {\n\tthis.config = config || {};\n\tOO.ui.ComboBoxInputWidget.call( this, config );\n\tthis.$input.focus( () => {\n\t\tthis.setValues();\n\t});\n\tthis.$input.keyup( (event) => {\n\t\tif (event.key !== 'ArrowUp' && event.key !== 'ArrowDown' && event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n\t\t\tthis.setValues();\n\t\t}\n\t});\n}\nOO.inheritClass( pf.SpreadsheetComboBoxInput, OO.ui.ComboBoxInputWidget );\n/**\n *\n * A function for setting the options for combobox whenever something is typed\n */\npf.SpreadsheetComboBoxInput.prototype.setValues = function() {\n\tlet data_source = this.config.autocompletesettings,\n\t\tdata_type = this.config.autocompletedatatype,\n\t\tcurValue = this.getValue(),\n\t\tself = this,\n\t\tvalues = [];\n\t// sometimes it happens that on double clicking the cell\n\t// a space is automatically added to the value inside the\n\t// editor and hence we get \"No Matches found\" so we can\n\t// simply remove that space.\n\tif ( curValue[0] == ' ' ) {\n\t\tcurValue = curValue.slice(1);\n\t}\n\tif ( data_type == 'external data' ) { // External Data Autocompletion\n\t\tconst\twgPageFormsEDSettings = mw.config.get( 'wgPageFormsEDSettings' ),\n\t\t\tname = data_source,\n\t\t\tedgValues = mw.config.get( 'edgValues' ),\n\t\t\tdata = {};\n\t\tif ( wgPageFormsEDSettings !== null && wgPageFormsEDSettings[name].title !== undefined && wgPageFormsEDSettings[name].title !== \"\" ) {\n\t\t\tdata.title = edgValues[ wgPageFormsEDSettings[ name ].title ];\n\t\t\tif ( data.title !== undefined && data.title !== null ) {\n\t\t\t\tvar i = 0;\n\t\t\t\tdata.title.forEach( () => {\n\t\t\t\t\tconst wgPageFormsAutocompleteOnAllChars = mw.config.get( 'wgPageFormsAutocompleteOnAllChars' );\n\t\t\t\t\tif ( wgPageFormsAutocompleteOnAllChars ) {\n\t\t\t\t\t\tvar valueFilter = self.getConditionForAutocompleteOnAllChars( data.title[i], curValue.toLowerCase() )\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar valueFilter = self.checkIfAnyWordStartsWithInputValue( data.title[i], curValue );\n\t\t\t\t\t}\n\t\t\t\t\tif ( valueFilter ) {\n\t\t\t\t\t\tvalues.push( {\n\t\t\t\t\t\t\tdata: data.title[i], label: self.highlightText( data.title[i] )\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t} );\n\t\t\t\tif( values.length == 0 ) {\n\t\t\t\t\tvalues.push( self.getNoMatchesOption() );\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t// this case will possibly come when the external data can't be fetched due to wrong parameters provided\n\t\t\tvalues.push( this.getNoMatchesOption() );\n\t\t}\n\t\tthis.setOptions( values );\n\t} else {\n\t\tif ( curValue.length == 0 ) {\n\t\t\tvalues.push({\n\t\t\t\tlabel: mw.message('pf-autocomplete-input-too-short',1).text(), disabled: true\n\t\t\t});\n\t\t\tthis.setOptions(values);\n\t\t\treturn;\n\t\t}\n\t\tlet my_server = mw.util.wikiScript( 'api' );\n\t\tmy_server += \"?action=pfautocomplete&format=json\";\n\t\tif ( data_type == 'cargo field' ) {\n\t\t\tconst table_and_field = data_source.split('|');\n\t\t\tmy_server += \"&cargo_table=\" + table_and_field[0] + \"&cargo_field=\" + table_and_field[1] + \"&substr=\" + curValue;\n\t\t} else if ( data_type == 'dep_on' ) {\n\t\t\tconst dep_field_opts = this.getDependentFieldOpts( this.config.data_y, this.config.dep_on_field );\n\t\t\tif (!dep_field_opts.prop.includes('|')) {\n\t\t\t\tmy_server += \"&property=\" + dep_field_opts.prop + \"&baseprop=\" + dep_field_opts.base_prop + \"&basevalue=\" + dep_field_opts.base_value + \"&substr=\" + curValue;\n\t\t\t} else {\n\t\t\t\tconst cargoTableAndFieldStr = dep_field_opts.prop;\n\t\t\t\tconst cargoTableAndField = cargoTableAndFieldStr.split('|');\n\t\t\t\tconst cargoTable = cargoTableAndField[0];\n\t\t\t\tconst cargoField = cargoTableAndField[1];\n\t\t\t\tconst baseCargoTableAndFieldStr = dep_field_opts.base_prop;\n\t\t\t\tconst baseCargoTableAndField = baseCargoTableAndFieldStr.split('|');\n\t\t\t\tconst baseCargoTable = baseCargoTableAndField[0];\n\t\t\t\tconst baseCargoField = baseCargoTableAndField[1];\n\t\t\t\tmy_server += \"&cargo_table=\" + cargoTable + \"&cargo_field=\" + cargoField + \"&base_cargo_table=\" + baseCargoTable + \"&base_cargo_field=\" + baseCargoField + \"&basevalue=\" + dep_field_opts.base_value + \"&substr=\" + curValue;\n\t\t\t}\n\t\t} else {\n\t\t\tmy_server += \"&\" + data_type + \"=\" + data_source + \"&substr=\" + curValue;\n\t\t}\n\t\t$.ajax( {\n\t\t\turl: my_server,\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function( data ) {\n\t\t\t\tif ( data.pfautocomplete !== undefined ) {\n\t\t\t\t\tdata = data.pfautocomplete;\n\t\t\t\t\tif ( data.length == 0 ) {\n\t\t\t\t\t\tvalues.push( self.getNoMatchesOption() )\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor ( i = 0; i < data.length; i++ ) {\n\t\t\t\t\t\t\tvalues.push( {\n\t\t\t\t\t\t\t\tdata: data[i].title, label: self.highlightText( data[i].title )\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalues.push( self.getNoMatchesOption() )\n\t\t\t\t}\n\t\t\t\tself.setOptions( values );\n\t\t\t}\n\t\t} );\n\t}\n}\n/**\n * @param {string} suggestion\n * @return HtmlSnippet\n */\npf.SpreadsheetComboBoxInput.prototype.highlightText = function( suggestion ) {\n\tlet searchTerm = this.getValue();\n\tif ( searchTerm[0] == ' ' ) {\n\t\tsearchTerm = searchTerm.slice(1);\n\t}\n\tconst searchRegexp = new RegExp(\"(?![^&;]+;)(?!<[^<>]*)(\" +\n\t\tsearchTerm.replace(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/gi, \"\\\\$1\") +\n\t\t\t\")(?![^<>]*>)(?![^&;]+;)\", \"gi\");\n\tconst itemLabel = suggestion;\n\tconst loc = itemLabel.search(searchRegexp);\n\tlet t;\n\tif (loc >= 0) {\n\t\tt = itemLabel.slice(0, Math.max(0, loc)) +\n\t\t\t'<strong>' + itemLabel.substr(loc, searchTerm.length) + '</strong>' +\n\t\titemLabel.slice(loc + searchTerm.length);\n\t} else {\n\t\tt = itemLabel;\n\t}\n\treturn new OO.ui.HtmlSnippet(t);\n};\n/**\n * Provides an option with \"No Matches\" label\n *\n * @return {Object}\n */\npf.SpreadsheetComboBoxInput.prototype.getNoMatchesOption = function() {\n\treturn {\n\t\t\tdata: this.getValue(),\n\t\t\tlabel: mw.message('pf-autocomplete-no-matches').text(),\n\t\t\tdisabled: true\n\t\t}\n}\n/**\n * Checks if any \"word\" in the given string starts with the given search term.\n *\n * @param {string} string\n * @param {string} curValue\n * @return {boolean}\n */\npf.SpreadsheetComboBoxInput.prototype.checkIfAnyWordStartsWithInputValue = function( string, curValue ) {\n\tconst regex = new RegExp('\\\\b' + curValue.toLowerCase());\n\treturn string.toLowerCase().match(regex) !== null;\n}\n/**\n * Checks if the given string contains the word or not\n *\n * @param {string} string\n * @param {string} curValue\n * @return {boolean}\n */\npf.SpreadsheetComboBoxInput.prototype.getConditionForAutocompleteOnAllChars = function(string, curValue) {\n\treturn string.toLowerCase().includes(curValue.toLowerCase())\n}\n/**\n * Gives dependent field options which include\n * property, base property and base value\n *\n * @param {integer} data_y\n * @param {string} dep_on_field\n * @return {Object} dep_field_opts\n */\npf.SpreadsheetComboBoxInput.prototype.getDependentFieldOpts = function( data_y, dep_on_field ) {\n\tconst dep_field_opts = {};\n\tlet baseElement;\n\tbaseElement = $('td[data-y=\"'+data_y+'\"][origname=\"'+dep_on_field+'\"]');\n\tdep_field_opts.base_value = baseElement.html();\n\tdep_field_opts.base_prop = mw.config.get('wgPageFormsFieldProperties')[dep_on_field] ||\n\t\tbaseElement.attr('name');\n\tdep_field_opts.prop = this.config['autocompletesettings'];\n\treturn dep_field_opts;\n}\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_autoedit.js","messages":[{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":15,"column":18,"nodeType":"CallExpression","endLine":15,"endColumn":48},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":89,"column":23,"nodeType":"CallExpression","endLine":89,"endColumn":60},{"ruleId":"no-jquery/no-done-fail","severity":1,"message":"Prefer .then to .done","line":100,"column":4,"nodeType":"CallExpression","endLine":104,"endColumn":6}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * JavaScript handler for the #autoedit parser function.\n *\n * @author Stephan Gambke\n */\n\n/*global confirm */\n\n( function( $, mw ) {\n\n\t'use strict';\n\tfunction sendData( $jtrigger ){\n\t\tconst $jautoedit = $jtrigger.closest( '.autoedit' );\n\t\tconst $jresult = $jautoedit.find( '.autoedit-result' );\n\t\tconst reload = $jtrigger.hasClass( 'reload' );\n\n\t\t$jtrigger.attr( 'class', 'autoedit-trigger autoedit-trigger-wait' );\n\t\t$jresult.attr( 'class', 'autoedit-result autoedit-result-wait' );\n\n\t\t$jresult.text( mw.msg( 'pf-autoedit-wait' ) );\n\n\n\t\t// data array to be sent to the server\n\t\tconst data = {\n\t\t\taction: 'pfautoedit',\n\t\t\tformat: 'json'\n\t\t};\n\n\t\t// add form values to the data\n\t\tdata.query = $jautoedit.find( 'form.autoedit-data' ).serialize();\n\n\t\t$.ajax( {\n\n\t\t\ttype:     'POST', // request type ( GET or POST )\n\t\t\turl:      mw.util.wikiScript( 'api' ), // URL to which the request is sent\n\t\t\tdata:     data, // data to be sent to the server\n\t\t\tdataType: 'json', // type of data expected back from the server\n\t\t\tsuccess:  function( result ){\n\t\t\t\t$jresult.empty().append( result.responseText );\n\n\t\t\t\tif ( result.status === 200 ) {\n\n\t\t\t\t\tif ( reload ) {\n\t\t\t\t\t\tif ( mw.config.get( 'wgPageFormsDelayReload' ) == true ) {\n\t\t\t\t\t\t\tsetTimeout( () => {\n\t\t\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t\t\t}, 500 );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$jresult.removeClass( 'autoedit-result-wait' ).addClass( 'autoedit-result-ok' );\n\t\t\t\t\t$jtrigger.removeClass( 'autoedit-trigger-wait' ).addClass( 'autoedit-trigger-ok' );\n\t\t\t\t} else {\n\t\t\t\t\t$jresult.removeClass( 'autoedit-result-wait' ).addClass( 'autoedit-result-error' );\n\t\t\t\t\t$jtrigger.removeClass( 'autoedit-trigger-wait' ).addClass( 'autoedit-trigger-error' );\n\t\t\t\t}\n\t\t\t}, // function to be called if the request succeeds\n\t\t\terror:  function( jqXHR, textStatus, errorThrown ) {\n\t\t\t\tconst result = jQuery.parseJSON(jqXHR.responseText);\n\t\t\t\tlet text = result.responseText;\n\n\t\t\t\tfor ( let i = 0; i < result.errors.length; i++ ) {\n\t\t\t\t\ttext += ' ' + result.errors[i].message;\n\t\t\t\t}\n\n\t\t\t\t$jresult.empty().append( text );\n\t\t\t\t$jresult.removeClass( 'autoedit-result-wait' ).addClass( 'autoedit-result-error' );\n\t\t\t\t$jtrigger.removeClass( 'autoedit-trigger-wait' ).addClass( 'autoedit-trigger-error' );\n\t\t\t} // function to be called if the request fails\n\t\t} );\n\t}\n\n\tconst autoEditHandler = function handleAutoEdit( e ){\n\n\t\t// Prevents scroll from jumping to the top of the page due to anchor #\n\t\te.preventDefault();\n\n\t\tif ( mw.config.get( 'wgUserName' ) === null &&\n\t\t\t! confirm( mw.msg( 'pf_autoedit_anoneditwarning' ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst $jtrigger = jQuery( this );\n\t\tconst $jautoedit = $jtrigger.closest( '.autoedit' );\n\t\tconst $jeditdata = $jautoedit.find( 'form.autoedit-data' );\n\t\tconst targetpage = $jeditdata.find( 'input[name=target]' ).val();\n\t\tconst confirmEdit = $jeditdata.hasClass( 'confirm-edit' );\n\t\tif ( confirmEdit ) {\n\t\t\tlet confirmText = $jeditdata.find( 'input[name=confirmtext]' ).val();\n\t\t\tif ( !confirmText ) {\n\t\t\t\tif ( targetpage ) {\n\t\t\t\t\tconfirmText = mw.msg( 'pf_autoedit_confirm', targetpage );\n\t\t\t\t} else {\n\t\t\t\t\tconst formName = $jeditdata.find( 'input[name=form]' ).val();\n\t\t\t\t\tconfirmText = mw.msg( 'pf_autoedit_confirmcreate', formName );\n\t\t\t\t}\n\t\t\t}\n\t\t\tOO.ui.confirm( confirmText ).done( (confirmed) => {\n\t\t\t\tif ( confirmed ) {\n\t\t\t\t\tsendData( $jtrigger );\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\tsendData( $jtrigger );\n\t\t}\n\t};\n\n\t$( () => {\n\t\t$( '.autoedit-trigger' ).click( autoEditHandler );\n\t} );\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_autogrow.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_checkboxes.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":4,"column":1,"nodeType":"Block","endLine":4,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":5,"column":1,"nodeType":"Block","endLine":5,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Javascript handler for the checkboxes input type\n *\n * @param $\n * @param mw\n * @author Stephan Gambke\n */\n\n( function ( $, mw ) {\n\n\t'use strict';\n\n\t// jQuery plugin that will attach a select all/select none switch to all checkboxes in \"this\" element\n\t$.fn.appendSelectionSwitches = function () {\n\n\t\tfunction insertSwitch( switchesWrapper, label, checked  ) {\n\t\t\t// create a link element that will trigger the selection of all checkboxes\n\t\t\tconst $link = $( '<a href=\"#\">' + label + '</a>' );\n\n\t\t\t// will be initialized only when the event is triggered to avoid lag during page loading\n\t\t\tlet $checkboxes;\n\n\t\t\t// attach an event handler\n\t\t\t$link.click( ( event ) => {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// store checkboxes during first method call so the DOM is not searched on every click on the link\n\t\t\t\t$checkboxes = $checkboxes || switchesWrapper.siblings().find( 'input[type=\"checkbox\"]' );\n\n\t\t\t\t$checkboxes.prop( 'checked', checked );\n\t\t\t} );\n\n\t\t\t// wrap the link into a span to simplify styling\n\t\t\tconst $switchWrapper = $('<span class=\"checkboxSwitch\">' ).append( $link );\n\n\t\t\t// insert the complete switch into the DOM\n\t\t\tswitchesWrapper.append( $switchWrapper );\n\t\t}\n\n\t\tthis.each( ( index, element ) => {\n\t\t\tconst $switchesWrapper = $( '<span class=\"checkboxSwitches\">' ).prependTo( element );\n\t\t\tinsertSwitch( $switchesWrapper, mw.message( 'pf_forminputs_checkboxes_select_all' ).escaped(), true );\n\t\t\tinsertSwitch( $switchesWrapper, mw.message( 'pf_forminputs_checkboxes_select_none' ).escaped(), false );\n\t\t} );\n\n\t\treturn this;\n\t};\n\n\t$( () => {\n\t\t$( '.checkboxesSpan.select-all' ).appendSelectionSwitches();\n\t} );\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_collapsible.js","messages":[{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":30,"column":8,"nodeType":"CallExpression","endLine":30,"endColumn":49}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * PF_collapsible.js\n *\n * Allows for collapsible fieldsets.\n *\n * This code was originally based heavily on the 'coolfieldset' jQuery plugin:\n * http://w3shaman.com/article/jquery-plugin-collapsible-fieldset\n *\n * Now it's less so, because that code used a .toggle() function that was\n * removed in jQuery 1.9.\n */\n\nfunction pfHideFieldsetContent($obj){\n\t$obj.find('div').slideUp( 'medium' );\n\t$obj.removeClass(\"pfExpandedFieldset\");\n\t$obj.addClass(\"pfCollapsedFieldset\");\n}\n\nfunction pfShowFieldsetContent($obj){\n\t$obj.find('div').slideDown( 'medium' );\n\t$obj.removeClass(\"pfCollapsedFieldset\");\n\t$obj.addClass(\"pfExpandedFieldset\");\n}\n\njQuery.fn.pfMakeCollapsible = function(){\n\tthis.each(function(){\n\t\tconst $fieldset = jQuery(this);\n\n\t\t$fieldset.children('legend').click( () => {\n\t\t\tif ($fieldset.hasClass('pfCollapsedFieldset')) {\n\t\t\t\tpfShowFieldsetContent($fieldset);\n\t\t\t} else {\n\t\t\t\tpfHideFieldsetContent($fieldset);\n\t\t\t}\n\t\t});\n\t\tpfHideFieldsetContent($fieldset);\n\t});\n};\n\n$(() => {\n\tjQuery('.pfCollapsibleFieldset').pfMakeCollapsible();\n});\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_datepicker.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":4,"column":1,"nodeType":"Block","endLine":4,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"oo\" type.","line":5,"column":1,"nodeType":"Block","endLine":5,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":6,"column":1,"nodeType":"Block","endLine":6,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"pf\" type.","line":7,"column":1,"nodeType":"Block","endLine":7,"endColumn":1},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":18,"column":9,"nodeType":"CallExpression","endLine":18,"endColumn":50}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * JavaScript code to be used with input type datepicker.\n *\n * @param $\n * @param oo\n * @param mw\n * @param pf\n * @author Sam Wilson\n * @author Yaron Koren\n */\n\n( function( $, oo, mw, pf ) {\n\t'use strict';\n\n\tjQuery.fn.applyDatePicker = function() {\n\t\treturn this.each(function() {\n\t\t\t// Don't apply datepicker control if disabled.\n\t\t\tif ( $(this).hasClass('oo-ui-widget-disabled') ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\too.ui.infuse( this );\n\t\t});\n\t};\n\n} )( jQuery, OO, mediaWiki, pf );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_datetimepicker.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":4,"column":1,"nodeType":"Block","endLine":4,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"oo\" type.","line":5,"column":1,"nodeType":"Block","endLine":5,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":6,"column":1,"nodeType":"Block","endLine":6,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"pf\" type.","line":7,"column":1,"nodeType":"Block","endLine":7,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * JavaScript code to be used with input type datetimepicker.\n *\n * @param $\n * @param oo\n * @param mw\n * @param pf\n * @author Sam Wilson\n * @author Yaron Koren\n */\n\n( function( $, oo, mw, pf ) {\n\t'use strict';\n\n\tconst localeOptions = {\n\t\ttimeZoneName: 'long',\n\t\tyear: 'numeric',\n\t\tmonth: 'long',\n\t\tday: 'numeric',\n\t\thour: 'numeric',\n\t\tminute: 'numeric'\n\t};\n\n\tjQuery.fn.applyDateTimePicker = function() {\n\t\treturn this.each( function() {\n\t\t\tconst widget = oo.ui.infuse( this );\n\t\t\tconst $localDatetimeLabel = $( '<label>' );\n\t\t\tconst $localDatetime = $( '<strong>' );\n\t\t\t// Add the label even when there isn't going to be a displayed date, to make sure it takes up vertical\n\t\t\t// space and avoid the form layout shifting when a date is selected.\n\t\t\t$localDatetimeLabel.append( mw.message( 'pf-datetimepicker-localtime' ).escaped(), ' ', $localDatetime );\n\t\t\twidget.$element\n\t\t\t\t.next( '.pf-datetimepicker-help' )\n\t\t\t\t.append( '<br>', $localDatetimeLabel );\n\t\t\twidget.connect( this, { change: function ( newDatetimeVal ) {\n\t\t\t\tif ( newDatetimeVal === '' || newDatetimeVal === undefined ) {\n\t\t\t\t\t$localDatetime.text( '' );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst date = new Date( Date.parse( newDatetimeVal ) );\n\t\t\t\tconst localDatetime = date.toLocaleString( [], localeOptions );\n\t\t\t\t$localDatetime.text( localDatetime );\n\t\t\t} } );\n\t\t\t// Also fire the change handler once when instantiating, to operate on the default value.\n\t\t\twidget.emit( 'change', widget.getValue() );\n\t\t} );\n\t};\n\n} )( jQuery, OO, mediaWiki, pf )\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_editWarning.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'origValues' is never reassigned. Use 'const' instead.","line":21,"column":44,"nodeType":"Identifier","messageId":"useConst","endLine":21,"endColumn":54},{"ruleId":"prefer-const","severity":1,"message":"'$allInputs' is never reassigned. Use 'const' instead.","line":22,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":22,"endColumn":14},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":32,"column":9,"nodeType":"CallExpression","endLine":32,"endColumn":42},{"ruleId":"prefer-const","severity":1,"message":"'allowCloseWindow' is never reassigned. Use 'const' instead.","line":40,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":40,"endColumn":19},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":61,"column":11,"nodeType":"CallExpression","endLine":61,"endColumn":44}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*\n * JavaScript for displaying a popup warning if the user has made changes in\n * the form without saving the page.\n *\n * Heavily based on the file mediawiki.action.edit.editWarning.js in core\n * MediaWiki.\n *\n * @author Yaron Koren\n */\n( function() {\n\t'use strict';\n\n\tlet changesWereMade = false;\n\n\tmw.hook('pf.addTemplateInstance').add( ( $newInstance ) => {\n\t\tchangesWereMade = true;\n\t});\n\n\n\t$( () => {\n\t\tlet allowCloseWindow, origText, newText, origValues = {},\n\t\t\t$allInputs = $( 'form#pfForm textarea, form#pfForm input[type=text], form#pfForm input:not([type]), form#pfForm select, #wpSummary' );\n\n\t\t// Check if EditWarning is enabled and if we need it.\n\t\tif ( !mw.user.options.get( 'useeditwarning' ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Save the original value of the inputs.\n\t\t$allInputs.each( ( index, element ) => {\n\t\t\tconst $element = $( element );\n\t\t\tif ( $element.hasClass( 'pfComboBox' ) ) {\n\t\t\t\t// data() can't be used for combobox inputs, probably because they use OOUI.\n\t\t\t\torigValues[element.id] = $element.textSelection( 'getContents' );\n\t\t\t} else {\n\t\t\t\t$element.data( 'origtext', $element.textSelection( 'getContents' ) );\n\t\t\t}\n\t\t});\n\n\t\tallowCloseWindow = mw.confirmCloseWindow( {\n\t\t\ttest: function() {\n\t\t\t\t// Don't show a warning if the form is being\n\t\t\t\t// submitted.\n\t\t\t\tif ( mw.config.get( 'wgAction' ) === 'submit' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Don't show a warning if we're in Special:RunQuery,\n\t\t\t\t// or a page where Special:RunQuery is embedded.\n\t\t\t\tif ( mw.config.get( 'wgCanonicalSpecialPageName' ) !== 'FormEdit' &&\n\t\t\t\t\tmw.config.get( 'wgAction' ) !== 'formedit' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// We use .textSelection, because editors might not have updated the form yet.\n\t\t\t\t$allInputs.each( ( index, element ) => {\n\t\t\t\t\tconst $element = $( element );\n\n\t\t\t\t\t// The setting of both origText and\n\t\t\t\t\t// newText have to be different for the\n\t\t\t\t\t// combobox input, due to its use of\n\t\t\t\t\t// OOUI.\n\t\t\t\t\tif ( $element.hasClass( 'pfComboBox' ) ) {\n\t\t\t\t\t\torigText = origValues[element.id];\n\t\t\t\t\t\tnewText = $('#' + element.id).val();\n\t\t\t\t\t} else {\n\t\t\t\t\t\torigText = $element.data( 'origtext' );\n\t\t\t\t\t\t// For some reason, the addition of a blank string is sometimes\n\t\t\t\t\t\t// necessary, to get the type right.\n\t\t\t\t\t\tnewText = $element.textSelection( 'getContents' ) + '';\n\t\t\t\t\t}\n\t\t\t\t\tif ( origText != newText ) {\n\t\t\t\t\t\tchangesWereMade = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn changesWereMade;\n\t\t\t},\n\n\t\t\tnamespace: 'editwarning'\n\t\t} );\n\n\t\t// Add form submission handler\n\t\t$( '#pfForm' ).on( 'submit', () => {\n\t\t\tallowCloseWindow.release();\n\t\t} );\n\t} );\n\n}() );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_formInput.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":6,"column":1,"nodeType":"Block","endLine":6,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":7,"column":1,"nodeType":"Block","endLine":7,"endColumn":1},{"ruleId":"es-x/no-for-of-loops","severity":1,"message":"ES2015 'for-of' statements are forbidden.","line":21,"column":4,"nodeType":"ForOfStatement","messageId":"forbidden","endLine":26,"endColumn":5},{"ruleId":"es-x/no-for-of-loops","severity":1,"message":"ES2015 'for-of' statements are forbidden.","line":82,"column":4,"nodeType":"ForOfStatement","messageId":"forbidden","endLine":87,"endColumn":5}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":4,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * PF_formInput.js\n *\n * JS handling for #forminput and Special:FormStart.\n *\n * @param $\n * @param mw\n * @author Yaron Koren\n */\n\n( function( $, mw ) {\n\n\t$.fn.displayPFFormInput = function() {\n\t\tconst formLayouts = [];\n\t\tconst autocompleteWidgetConfig = {};\n\t\tconst possibleFormsStr = this.attr('data-possible-forms');\n\t\tlet menuOptions = [],\n\t\t\tlayout;\n\t\tif ( possibleFormsStr !== undefined ) {\n\t\t\tconst possibleForms = possibleFormsStr.split('|');\n\t\t\tfor ( const possibleForm of possibleForms ) {\n\t\t\t\tmenuOptions.push( {\n\t\t\t\t\tdata: possibleForm,\n\t\t\t\t\tlabel: possibleForm\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconst formChooserText = new OO.ui.LabelWidget( {\n\t\t\t\tlabel: this.attr('data-form-label')\n\t\t\t} )\n\t\t\tconst formChooserDropdown = new OO.ui.DropdownInputWidget( {\n\t\t\t\tname: 'form',\n\t\t\t\toptions: menuOptions,\n\t\t\t\tclasses: [ 'pfFormChooserDropdown' ]\n\t\t\t} );\n\t\t\tconst formChooserHorizontalLayout = new OO.ui.HorizontalLayout( {\n\t\t\t\titems: [ formChooserText,  formChooserDropdown ],\n\t\t\t} );\n\t\t\tformLayouts.push(formChooserHorizontalLayout);\n\t\t} else {\n\t\t\t// Only provide autofocus if there's no \"form\" dropdown -\n\t\t\t// otherwise, it might be confusing.\n\t\t\tif ( this.attr('data-autofocus') !== undefined ) {\n\t\t\t\tautocompleteWidgetConfig['autofocus'] = this.attr('data-autofocus');\n\t\t\t}\n\t\t}\n\n\t\tif ( this.attr('data-default-value') !== undefined ) {\n\t\t\tautocompleteWidgetConfig['value'] = this.attr('data-default-value');\n\t\t}\n\t\tif ( this.attr('data-autocomplete-data-type') !== undefined ) {\n\t\t\tautocompleteWidgetConfig['autocompletedatatype'] = this.attr('data-autocomplete-data-type');\n\t\t}\n\t\tif ( this.attr('data-autocomplete-settings') !== undefined ) {\n\t\t\tautocompleteWidgetConfig['autocompletesettings'] = this.attr('data-autocomplete-settings');\n\t\t}\n\t\tif ( this.attr('data-placeholder') !== undefined ) {\n\t\t\tautocompleteWidgetConfig['placeholder'] = this.attr('data-placeholder');\n\t\t}\n\t\tif ( this.attr('data-autocapitalize') !== undefined ) {\n\t\t\tautocompleteWidgetConfig['autocapitalize'] = this.attr('data-autocapitalize');\n\t\t}\n\t\tif ( this.attr('data-size') !== undefined ) {\n\t\t\tautocompleteWidgetConfig['size'] = this.attr('data-size');\n\t\t}\n\t\tconst createOrEditButton = new OO.ui.ButtonInputWidget( {\n\t\t\ttype: 'submit',\n\t\t\tlabel: this.attr('data-button-label'),\n\t\t\tvalue: 'Submit',\n\t\t\tclasses: [ 'pfCreateOrEditButton' ]\n\t\t} );\n\t\tconst possibleNamespacesStr = this.attr('data-possible-namespaces');\n\t\tif ( possibleNamespacesStr !== undefined ) {\n\t\t\t// Special, non-OOUI-standard handling so that the\n\t\t\t// namespace and page name inputs can be on the same\n\t\t\t// line, replicating a full page name.\n\t\t\tconst pageWithNamespaceItems = [];\n\t\t\tautocompleteWidgetConfig['classes'] = [ 'pfPageNameWithNamespace' ];\n\t\t\tconst pageNameInput = new pf.AutocompleteWidget( autocompleteWidgetConfig );\n\n\t\t\tconst possibleNamespaces = possibleNamespacesStr.split('|');\n\t\t\tmenuOptions = [];\n\t\t\tfor ( const possibleNamespace of possibleNamespaces ) {\n\t\t\t\tmenuOptions.push( {\n\t\t\t\t\tdata: possibleNamespace,\n\t\t\t\t\tlabel: possibleNamespace\n\t\t\t\t} );\n\t\t\t}\n\t\t\tconst namespaceDropdown = new OO.ui.DropdownInputWidget( {\n\t\t\t\tname: 'namespace',\n\t\t\t\toptions: menuOptions,\n\t\t\t\tclasses: [ 'pfNamespaceDropdown' ]\n\t\t\t} );\n\t\t\tpageWithNamespaceItems.push( namespaceDropdown );\n\t\t\tconst colonLabel = new OO.ui.LabelWidget( {\n\t\t\t\tlabel: \":\"\n\t\t\t} );\n\t\t\tpageWithNamespaceItems.push( colonLabel );\n\t\t\tpageWithNamespaceItems.push( pageNameInput );\n\t\t\tpageWithNamespaceItems.push( createOrEditButton );\n\t\t\tlayout = new OO.ui.HorizontalLayout( {\n\t\t\t\titems: pageWithNamespaceItems,\n\t\t\t\tclasses: [ 'pfPageWithNamespace' ]\n\t\t\t} );\n\t\t} else {\n\t\t\tautocompleteWidgetConfig['classes'] = [ 'pfPageNameWithoutNamespace' ];\n\t\t\tconst pageNameInput = new pf.AutocompleteWidget( autocompleteWidgetConfig );\n\t\t\tlayout = new OO.ui.HorizontalLayout( {\n\t\t\t\titems: [ pageNameInput, createOrEditButton ]\n\t\t\t} );\n\t\t}\n\t\tformLayouts.push(layout);\n\t\tconst fieldset = new OO.ui.FieldsetLayout( {\n\t\t\titems: formLayouts\n\t\t} );\n\n\t\tthis.append( fieldset.$element );\n\n\t\t// We could put this all into an OO.ui.FormLayout instance,\n\t\t// but it would get complicated, due to the hidden inputs\n\t\t// needed, so we'll leave that to the PHP to do.\n\t};\n\n\t$( () => {\n\t\t$( '.pfFormInputWrapper' ).each( function() {\n\t\t\t$(this).displayPFFormInput();\n\t\t});\n\t});\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_imagePreview.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":4,"column":1,"nodeType":"Block","endLine":4,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":5,"column":1,"nodeType":"Block","endLine":5,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * JavaScript for the Page Forms MediaWiki extension.\n *\n * @param $\n * @param mw\n * @license GNU GPL v3+\n * @author Jeroen De Dauw <jeroendedauw at gmail dot com>\n */\n\n( function ( $, mw ) {\n\tconst _this = this;\n\n\tthis.getPreviewImage = function( args, callback ) {\n\t\t$.getJSON(\n\t\t\tmw.config.get( 'wgScriptPath' ) + '/api.php',\n\t\t\t{\n\t\t\t\t'action': 'query',\n\t\t\t\t'format': 'json',\n\t\t\t\t'prop': 'imageinfo',\n\t\t\t\t'iiprop': 'url',\n\t\t\t\t'titles': 'File:' + args.title,\n\t\t\t\t'iiurlwidth': args.width\n\t\t\t},\n\t\t\t( data ) => {\n\t\t\t\tif ( data.query && data.query.pages ) {\n\t\t\t\t\tconst pages = data.query.pages;\n\n\t\t\t\t\tfor ( const p in pages ) { // object, not an array\n\t\t\t\t\t\tconst info = pages[p].imageinfo;\n\t\t\t\t\t\tif ( info && info.length > 0 ) {\n\t\t\t\t\t\t\tcallback( info[0].thumburl );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcallback( false );\n\t\t\t}\n\t\t);\n\t};\n\n\t$( () => {\n\t\tconst showPreview = function( inputId ) {\n\t\t\tconst $input = $( '#' + inputId );\n\t\t\tconst $previewDiv = $( '#' + inputId + '_imagepreview' );\n\t\t\t_this.getPreviewImage(\n\t\t\t\t{\n\t\t\t\t\t'title': $input.val(),\n\t\t\t\t\t'width': 200\n\t\t\t\t},\n\t\t\t\t( url ) => {\n\t\t\t\t\tif ( url === false ) {\n\t\t\t\t\t\t$previewDiv.html( '' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$previewDiv.html( $( '<img />' ).attr( { 'src': url } ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t};\n\n\t\t$( '.pfImagePreview' ).each( ( index, domElement ) => {\n\t\t\tconst $uploadLink = $( domElement );\n\t\t\tconst inputId = $uploadLink.attr( 'data-input-id' );\n\t\t\tconst $input = $( '#' + inputId );\n\t\t\t$input.change( () => {\n\t\t\t\tshowPreview( inputId );\n\t\t\t} );\n\t\t} );\n\n\t\tmw.hook( 'pf.comboboxChange2' ).add( ( inputId ) => {\n\t\t\tshowPreview( inputId );\n\t\t} );\n\t} );\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_maps.js","messages":[{"ruleId":"no-jquery/no-done-fail","severity":1,"message":"Prefer .then to .done","line":236,"column":4,"nodeType":"CallExpression","endLine":267,"endColumn":6}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @author Yaron Koren\n */\n\n/* global L */\n\nfunction setupMapFormInput( inputDiv, mapService ) {\n\tlet map, marker, markers, mapCanvas, mapOptions;\n\tlet imageHeight = null, imageWidth = null;\n\tlet numClicks = 0, timer = null, geocoder;\n\n\tif ( mapService === \"Google Maps\" ) {\n\t\tmapCanvas = inputDiv.find('.pfMapCanvas')[0];\n\t\tmapOptions = {\n\t\t\tzoom: 1,\n\t\t\tcenter: new google.maps.LatLng(0,0)\n\t\t};\n\t\tmap = new google.maps.Map(mapCanvas, mapOptions);\n\t\tgeocoder = new google.maps.Geocoder();\n\n\t\t// Let a click set the marker, while keeping the default\n\t\t// behavior (zoom and center) for double clicks.\n\t\t// Code copied from http://stackoverflow.com/a/8417447\n\t\tgoogle.maps.event.addListener( map, 'click', ( event ) => {\n\t\t\ttimer = setTimeout( () => {\n\t\t\t\tgoogleMapsSetMarker( event.latLng );\n\t\t\t}, 200 );\n\t\t});\n\t\tgoogle.maps.event.addListener( map, 'dblclick', ( event ) => {\n\t\t\tclearTimeout( timer );\n\t\t});\n\t} else if (mapService === \"Leaflet\") {\n\t\tmapCanvas = inputDiv.find('.pfMapCanvas').get(0);\n\t\tmapOptions = {\n\t\t\tzoom: 1,\n\t\t\tcenter: [ 0, 0 ]\n\t\t};\n\t\tconst layerOptions = {\n\t\t\tattribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n\t\t};\n\n\t\tconst imageUrl = inputDiv.attr('data-image-path');\n\t\tif ( imageUrl !== undefined ) {\n\t\t\timageHeight = inputDiv.attr('data-height');\n\t\t\timageWidth = inputDiv.attr('data-width');\n\t\t\tmapOptions.crs = L.CRS.Simple;\n\t\t}\n\n\t\tmap = L.map(mapCanvas, mapOptions);\n\n\t\tif ( imageUrl !== undefined ) {\n\t\t\tconst imageBounds = [ [ 0, 0 ], [ imageHeight, imageWidth ] ];\n\t\t\tL.imageOverlay(imageUrl, imageBounds).addTo(map);\n\t\t\tmap.fitBounds(imageBounds);\n\t\t} else {\n\t\t\tnew L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', layerOptions).addTo(map);\n\t\t}\n\n\t\tmap.on( 'click', ( event ) => {\n\t\t\t// Place/move the marker only on a single click, not a\n\t\t\t// double click (double clicks do a zoom).\n\t\t\t// Code based on https://stackoverflow.com/a/7845282\n\t\t\tnumClicks++;\n\t\t\tif (numClicks === 1) {\n\t\t\t\ttimer = setTimeout( () => {\n\t\t\t\t\tleafletSetMarker( event.latlng );\n\t\t\t\t\tnumClicks = 0;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tnumClicks = 0;\n\t\t\t}\n\t\t});\n\t} else { // if ( mapService === \"OpenLayers\" ) {\n\t\tmapCanvas = inputDiv.find('.pfMapCanvas');\n\t\tlet mapCanvasID = mapCanvas.attr('id');\n\t\tif ( mapCanvasID === undefined ) {\n\t\t\t// If no ID is set, it's probably in a multiple-\n\t\t\t// instance template; just set the ID to a random\n\t\t\t// string, so we can attach the map to it.\n\t\t\tmapCanvasID = mapCanvas.attr('data-origID') + '-' +\n\t\t\t\tMath.random().toString(36).slice(2, 15);\n\t\t\tmapCanvas.attr('ID', mapCanvasID);\n\t\t}\n\t\tmap = new OpenLayers.Map( mapCanvasID );\n\t\t// We do this more complex initialization, rather than just\n\t\t// calling OpenLayers.Layer.OSM(), so that the tiles will be\n\t\t// loaded via either HTTP or HTTPS, depending on what we are\n\t\t// using.\n\t\tmap.addLayer( new OpenLayers.Layer.OSM(\n\t\t\t\"OpenStreetMap\",\n\t\t\t// Official OSM tileset as protocol-independent URLs\n\t\t\t[\n\t\t\t\t'//a.tile.openstreetmap.org/${z}/${x}/${y}.png',\n\t\t\t\t'//b.tile.openstreetmap.org/${z}/${x}/${y}.png',\n\t\t\t\t'//c.tile.openstreetmap.org/${z}/${x}/${y}.png'\n\t\t\t],\n\t\t\tnull\n\t\t) );\n\n\t\tmap.zoomTo(0);\n\t\tmarkers = new OpenLayers.Layer.Markers( \"Markers\" );\n\t\tmap.addLayer( markers );\n\n\t\tmap.events.register(\"click\", map, (e) => {\n\t\t\tnumClicks++;\n\t\t\tif (numClicks === 1) {\n\t\t\t\ttimer = setTimeout( () => {\n\t\t\t\t\tconst loc = map.getLonLatFromPixel( e.xy );\n\t\t\t\t\topenLayersSetMarker( loc );\n\t\t\t\t\tnumClicks = 0;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tnumClicks = 0;\n\t\t\t}\n\t\t});\n\t}\n\n\tconst coordsInput = inputDiv.find('.pfCoordsInput');\n\tcoordsInput.keypress( function( e ) {\n\t\tif ( e.key === 'Enter' ) {\n\t\t\tsetMarkerFromCoordinates();\n\t\t\t// Prevent the form from getting submitted.\n\t\t\te.preventDefault();\n\t\t\t$(this).removeClass( 'modifiedInput' )\n\t\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\t\t}\n\t});\n\n\tcoordsInput.keydown( ( e ) => {\n\t\tif ( ! coordsInput.hasClass( 'modifiedInput' ) ) {\n\t\t\tcoordsInput.addClass( 'modifiedInput' );\n\t\t\tconst $checkMark = $('<a></a>').addClass( 'pfCoordsCheckMark' ).css( 'color', 'green' ).html( '&#10004;' );\n\t\t\tconst $xMark = $('<a></a>').addClass( 'pfCoordsX' ).css( 'color', 'red' ).html( '&#10008;' );\n\t\t\tconst $marksDiv = $('<span></span>').addClass( 'pfCoordsInputHelpers' )\n\t\t\t\t.append( $checkMark ).append( ' ' ).append( $xMark );\n\t\t\tcoordsInput.parent().append( $marksDiv );\n\n\t\t\t$checkMark.click( () => {\n\t\t\t\tsetMarkerFromCoordinates();\n\t\t\t\tcoordsInput.removeClass( 'modifiedInput' );\n\t\t\t\t$marksDiv.remove();\n\t\t\t});\n\n\t\t\t$xMark.click( () => {\n\t\t\t\tcoordsInput.removeClass( 'modifiedInput' )\n\t\t\t\t\t.val( coordsInput.attr('data-original-value') );\n\t\t\t\t$marksDiv.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tinputDiv.find('.pfAddressInput').keypress( ( e ) => {\n\t\tif ( e.key === 'Enter' ) {\n\t\t\tsetMarkerFromAddress();\n\t\t\t// Prevent the form from getting submitted.\n\t\t\te.preventDefault();\n\t\t}\n\t});\n\n\tinputDiv.find('.pfLookUpAddress').click( () => {\n\t\tsetMarkerFromAddress();\n\t});\n\n\n\tif ( coordsInput.val() != '' ) {\n\t\tif ( mapService == 'OpenLayers' ) {\n\t\t\tmap.zoomTo( 14 );\n\t\t} else {\n\t\t\tmap.setZoom( 14 );\n\t\t}\n\t\t// This has to be called after the zooming, for the OpenLayers\n\t\t// zoom to work correctly.\n\t\tsetMarkerFromCoordinates();\n\t} else {\n\t\tif ( coordsInput.attr('data-bound-coords') ) {\n\t\t\tconst boundCoords = coordsInput.attr('data-bound-coords');\n\t\t\tconst coords = boundCoords.split(\";\");\n\t\t\tconst boundCoords1 = coords[0];\n\t\t\tconst lat1 = boundCoords1.split(\",\")[0].trim();\n\t\t\tconst lon1 = boundCoords1.split(\",\")[1].trim();\n\t\t\tconst boundCoords2 = coords[1];\n\t\t\tconst lat2 = boundCoords2.split(\",\")[0].trim();\n\t\t\tconst lon2 = boundCoords2.split(\",\")[1].trim();\n\t\t\tif ( !jQuery.isNumeric( lat1 ) || !jQuery.isNumeric( lon1 ) ||\n\t\t\t!jQuery.isNumeric( lat2 ) || !jQuery.isNumeric( lon2 ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( lat1 < -90 || lat1 > 90 || lon1 < -180 || lon1 > 180 ||\n\t\t\t\tlat2 < -90 || lat2 > 90 || lon2 < -180 || lon2 > 180 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( mapService === \"Google Maps\" ) {\n\t\t\t\tconst bound1 = new google.maps.LatLng(lat1, lon1);\n\t\t\t\tconst bound2 = new google.maps.LatLng(lat2, lon2);\n\t\t\t\tconst bounds = new google.maps.LatLngBounds();\n\t\t\t\tbounds.extend(bound1);\n\t\t\t\tbounds.extend(bound2);\n\t\t\t\tmap.fitBounds(bounds);\n\t\t\t} else if ( mapService === \"Leaflet\" ){\n\t\t\t\tmap.fitBounds([ [ lat1, lon1 ], [ lat2, lon2 ] ]);\n\t\t\t} else { // if ( mapService === \"OpenLayers\" ) {\n\t\t\t\tconst fromProjection = new OpenLayers.Projection(\"EPSG:4326\"); // transform from WGS 1984\n\t\t\t\tconst toProjection = map.getProjectionObject(); // to Spherical Mercator Projection\n\t\t\t\tconst bounds = new OpenLayers.Bounds(lon1, lat1, lon2, lat2).transform(fromProjection,toProjection);\n\t\t\t\tmap.zoomToExtent(bounds);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setMarkerFromAddress() {\n\t\tconst currentMapName = coordsInput.attr('name');\n\t\tlet addressText;\n\t\tconst allFeedersForCurrentMap = jQuery('[data-feeds-to-map=\"' + currentMapName + '\"]').map( function() {\n\t\t\treturn $( this ).val()\n\t\t}).get();\n\t\tif ( allFeedersForCurrentMap.length > 0 ) {\n\t\t\t// Assemble a single string from all the address inputs that feed to this map.\n\t\t\taddressText = allFeedersForCurrentMap.join( ', ' );\n\t\t} else {\n\t\t\t// No other inputs feed to this map, so use the standard \"Enter address here\" input.\n\t\t\taddressText = inputDiv.find('.pfAddressInput input').val();\n\t\t}\n\t\tif ( mapService === \"Google Maps\" ) {\n\t\t\tgeocoder.geocode( { 'address': addressText }, (results, status) => {\n\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\n\t\t\t\t\tmap.setCenter(results[0].geometry.location);\n\t\t\t\t\tgoogleMapsSetMarker( results[0].geometry.location );\n\t\t\t\t\tmap.setZoom(14);\n\t\t\t\t} else {\n\t\t\t\t\talert(\"Geocode was not successful for the following reason: \" + status);\n\t\t\t\t}\n\t\t\t});\n\t\t} else { // Leaflet, OpenLayers\n\t\t\t$.ajax( 'https://nominatim.openstreetmap.org/search?format=json&q=' + encodeURIComponent( addressText ) )\n\t\t\t.done( ( result ) => {\n\t\t\t\tif ( result.length === 0 ) {\n\t\t\t\t\talert(\"Geocode was not successful\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst lat = result[0].lat;\n\t\t\t\tconst lon = result[0].lon;\n\t\t\t\t// Use the specified bounds - this is better\n\t\t\t\t// than a preset zoom, because it handles the\n\t\t\t\t// precision correctly for countries, cities,\n\t\t\t\t// etc.\n\t\t\t\tconst boundsStr = String(result[0].boundingbox);\n\t\t\t\tconst vals = boundsStr.split(\",\");\n\t\t\t\tconst bottom = vals[0];\n\t\t\t\tconst top = vals[1];\n\t\t\t\tconst left = vals[2];\n\t\t\t\tconst right = vals[3];\n\t\t\t\tif ( mapService === \"OpenLayers\" ) {\n\t\t\t\t\tconst olPoint = toOpenLayersLonLat( map, lat, lon );\n\t\t\t\t\topenLayersSetMarker( olPoint );\n\t\t\t\t\tmap.setCenter( olPoint );\n\t\t\t\t\tconst fromProjection = new OpenLayers.Projection(\"EPSG:4326\"); // transform from WGS 1984\n\t\t\t\t\tconst toProjection = map.getProjectionObject(); // to Spherical Mercator Projection\n\t\t\t\t\tconst bounds = new OpenLayers.Bounds(left,bottom,right,top).transform(fromProjection,toProjection);\n\t\t\t\t\tmap.zoomToExtent(bounds);\n\t\t\t\t} else if ( mapService === \"Leaflet\" ) {\n\t\t\t\t\tconst lPoint = L.latLng( lat, lon );\n\t\t\t\t\tleafletSetMarker( lPoint );\n\t\t\t\t\tmap.fitBounds([ [ bottom, left ], [ top, right ] ]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction setMarkerFromCoordinates() {\n\t\tconst coordsText = coordsInput.val();\n\t\tconst coordsParts = coordsText.split(\",\");\n\t\tif ( coordsParts.length != 2 ) {\n\t\t\tcoordsInput.val('');\n\t\t\treturn;\n\t\t}\n\t\tlet lat = coordsParts[0].trim();\n\t\tlet lon = coordsParts[1].trim();\n\t\tif ( !jQuery.isNumeric( lat ) || !jQuery.isNumeric( lon ) ) {\n\t\t\tcoordsInput.val('');\n\t\t\treturn;\n\t\t}\n\t\tif ( lat < -90 || lat > 90 || lon < -180 || lon > 180 ) {\n\t\t\tcoordsInput.val('');\n\t\t\treturn;\n\t\t}\n\t\tif ( mapService === \"Google Maps\" ) {\n\t\t\tconst gmPoint = new google.maps.LatLng( lat, lon );\n\t\t\tgoogleMapsSetMarker( gmPoint );\n\t\t\tmap.setCenter( gmPoint );\n\t\t} else if ( mapService === \"Leaflet\" ){\n\t\t\tif ( imageHeight !== null && imageWidth !== null ) {\n\t\t\t\tlat *= imageWidth / 100;\n\t\t\t\tlon *= imageWidth / 100;\n\t\t\t}\n\t\t\tconst lPoint = L.latLng( lat, lon );\n\t\t\tleafletSetMarker( lPoint );\n\t\t\tif ( imageHeight == null && imageWidth == null ) {\n\t\t\t\tmap.setView( lPoint, 14 );\n\t\t\t}\n\t\t} else { // if ( mapService === \"OpenLayers\" ) {\n\t\t\tconst olPoint = toOpenLayersLonLat( map, lat, lon );\n\t\t\topenLayersSetMarker( olPoint );\n\t\t\tmap.setCenter( olPoint );\n\t\t}\n\t}\n\n\tfunction toOpenLayersLonLat( maps, lat, lon ) {\n\t\treturn new OpenLayers.LonLat( lon, lat ).transform(\n\t\t\tnew OpenLayers.Projection(\"EPSG:4326\"), // transform from WGS 1984\n\t\t\tmaps.getProjectionObject() // to Spherical Mercator Projection\n\t\t);\n\t}\n\n\t/**\n\t * Round off a number to five decimal places - that's the most\n\t * we need for coordinates, one would think.\n\t *\n\t * @param {Mixed} num\n\t * @return {Mixed}\n\t */\n\tfunction pfRoundOffDecimal( num ) {\n\t\treturn Math.round( num * 100000 ) / 100000;\n\t}\n\n\tfunction googleMapsSetMarker(location) {\n\t\tif (marker == undefined){\n\t\t\tmarker = new google.maps.Marker({\n\t\t\t\tposition: location,\n\t\t\t\tmap: map,\n\t\t\t\tdraggable: true\n\t\t\t});\n\t\t\tgoogle.maps.event.addListener( marker, 'dragend', ( event ) => {\n\t\t\t\tgoogleMapsSetMarker( event.latLng );\n\t\t\t});\n\n\t\t} else {\n\t\t\tmarker.setPosition(location);\n\t\t}\n\t\tconst stringVal = pfRoundOffDecimal( location.lat() ) + ', ' + pfRoundOffDecimal( location.lng() );\n\t\tcoordsInput.val( stringVal )\n\t\t\t.attr( 'data-original-value', stringVal )\n\t\t\t.removeClass( 'modifiedInput' )\n\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\t}\n\n\tfunction leafletSetMarker( location ) {\n\t\tif ( marker == null) {\n\t\t\tmarker = L.marker( location ).addTo( map );\n\t\t} else {\n\t\t\tmarker.setLatLng( location, { draggable: true } );\n\t\t}\n\t\tmarker.dragging.enable();\n\n\t\tfunction setInput() {\n\t\t\tlet lat = marker.getLatLng().lat;\n\t\t\tlet lng = marker.getLatLng().lng;\n\t\t\tif ( imageHeight == null && imageWidth == null ) {\n\t\t\t\t// Normal map.\n\t\t\t\t// Leaflet permits longitude beyond ±180, so\n\t\t\t\t// we have to normalize this here.\n\t\t\t\t// Google Maps and OpenLayers don't have this\n\t\t\t\t// issue.\n\t\t\t\twhile ( lng < -180 ) {\n\t\t\t\t\tlng += 360;\n\t\t\t\t}\n\t\t\t\twhile ( lng > 180 ) {\n\t\t\t\t\tlng -= 360;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlat *= 100 / imageWidth;\n\t\t\t\tlng *= 100 / imageWidth;\n\t\t\t}\n\t\t\tconst stringVal = pfRoundOffDecimal( lat ) + ', ' +\n\t\t\t\tpfRoundOffDecimal( lng );\n\t\t\tcoordsInput.val( stringVal )\n\t\t\t\t.attr( 'data-original-value', stringVal )\n\t\t\t\t.removeClass( 'modifiedInput' )\n\t\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\t\t}\n\n\t\tmarker.off('dragend').on('dragend', ( event ) => {\n\t\t\tsetInput();\n\t\t});\n\t\tsetInput();\n\t}\n\n\tfunction openLayersSetMarker( location ) {\n\t\t// OpenLayers does not have a real marker move\n\t\t// option - instead, just delete the old marker\n\t\t// and add a new one.\n\t\tmarkers.clearMarkers();\n\t\tmarker = new OpenLayers.Marker( location );\n\t\tmarkers.addMarker( marker );\n\n\t\t// Transform the coordinates back, in order to display them.\n\t\tconst realLonLat = location.clone();\n\t\trealLonLat.transform(\n\t\t\tmap.getProjectionObject(), // transform from Spherical Mercator Projection\n\t\t\tnew OpenLayers.Projection(\"EPSG:4326\") // to WGS 1984\n\t\t);\n\t\tconst stringVal = pfRoundOffDecimal( realLonLat.lat ) + ', ' + pfRoundOffDecimal( realLonLat.lon );\n\t\tcoordsInput.val( stringVal )\n\t\t\t.attr( 'data-original-value', stringVal )\n\t\t\t.removeClass( 'modifiedInput' )\n\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\t}\n}\n\n$( () => {\n\tjQuery(\".pfGoogleMapsInput\").each( function() {\n\t\t// Ignore the hidden \"starter\" div in multiple-instance templates.\n\t\tif ( $(this).closest(\".multipleTemplateStarter\").length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tsetupMapFormInput( jQuery(this), \"Google Maps\" );\n\t});\n\tjQuery(\".pfLeafletInput\").each( function() {\n\t\tif ( $(this).closest(\".multipleTemplateStarter\").length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tsetupMapFormInput( jQuery(this), \"Leaflet\" );\n\t});\n\tjQuery(\".pfOpenLayersInput\").each( function() {\n\t\tif ( $(this).closest(\".multipleTemplateStarter\").length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tsetupMapFormInput( jQuery(this), \"OpenLayers\" );\n\t});\n});\n\n// Activate maps in a new instance of a multiple-instance template.\nmw.hook('pf.addTemplateInstance').add( ( $newInstance ) => {\n\t$newInstance.find(\".pfGoogleMapsInput\").each( function() {\n\t\tsetupMapFormInput( jQuery(this), \"Google Maps\" );\n\t});\n\t$newInstance.find(\".pfLeafletInput\").each( function() {\n\t\tsetupMapFormInput( jQuery(this), \"Leaflet\" );\n\t});\n\t$newInstance.find(\".pfOpenLayersInput\").each( function() {\n\t\tsetupMapFormInput( jQuery(this), \"OpenLayers\" );\n\t});\n});\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_maps.offline.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'addressText' is never reassigned. Use 'const' instead.","line":258,"column":7,"nodeType":"Identifier","messageId":"useConst","endLine":258,"endColumn":18},{"ruleId":"no-jquery/no-done-fail","severity":1,"message":"Prefer .then to .done","line":272,"column":4,"nodeType":"CallExpression","endLine":303,"endColumn":6}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * @author Yaron Koren\n * @author Paladox\n */\n\n/* global L */\n\nfunction setupMapFormInput( inputDiv, mapService ) {\n\n\t/**\n\t * Round off a number to five decimal places - that's the most\n\t * we need for coordinates, one would think.\n\t *\n\t * @param {Mixed} num\n\t * @return {Mixed}\n\t */\n\tfunction pfRoundOffDecimal( num ) {\n\t\treturn Math.round( num * 100000 ) / 100000;\n\t}\n\n\tlet map, marker, markers, mapCanvas, mapOptions, geocoder;\n\tlet numClicks = 0, timer = null;\n\n\tconst coordsInput = inputDiv.find('.pfCoordsInput');\n\n\tfunction googleMapsSetMarker( location ) {\n\t\tif ( marker === undefined ){\n\t\t\tmarker = new google.maps.Marker( {\n\t\t\t\tposition: location,\n\t\t\t\tmap: map,\n\t\t\t\tdraggable: true\n\t\t\t} );\n\t\t\tgoogle.maps.event.addListener( marker, 'dragend', ( event ) => {\n\t\t\t\tgoogleMapsSetMarker( event.latLng );\n\t\t\t});\n\t\t} else {\n\t\t\tmarker.setPosition(location);\n\t\t}\n\t\tconst stringVal = pfRoundOffDecimal( location.lat() ) + ', ' + pfRoundOffDecimal( location.lng() );\n\t\tcoordsInput.val( stringVal )\n\t\t\t.attr( 'data-original-value', stringVal )\n\t\t\t.removeClass( 'modifiedInput' )\n\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\n\t}\n\n\tfunction leafletSetMarker( location ) {\n\t\tif ( marker === null) {\n\t\t\tmarker = L.marker( location ).addTo( map );\n\t\t} else {\n\t\t\tmarker.setLatLng( location, { draggable: true } );\n\t\t}\n\t\tmarker.dragging.enable();\n\n\t\tfunction setInput() {\n\t\t\tconst stringVal = pfRoundOffDecimal( marker.getLatLng().lat ) + ', ' +\n\t\t\t\tpfRoundOffDecimal( marker.getLatLng().lng );\n\t\t\tcoordsInput.val( stringVal )\n\t\t\t\t.attr( 'data-original-value', stringVal )\n\t\t\t\t.removeClass( 'modifiedInput' )\n\t\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\t\t}\n\n\t\tmarker.off('dragend').on('dragend', ( event ) => {\n\t\t\tsetInput();\n\t\t});\n\t\tsetInput();\n\t}\n\n\tfunction openLayersSetMarker( location ) {\n\t\t// OpenLayers does not have a real marker move\n\t\t// option - instead, just delete the old marker\n\t\t// and add a new one.\n\t\tmarkers.clearMarkers();\n\t\tmarker = new OpenLayers.Marker( location );\n\t\tmarkers.addMarker( marker );\n\n\t\t// Transform the coordinates back, in order to display them.\n\t\tconst realLonLat = location.clone();\n\t\trealLonLat.transform(\n\t\t\tmap.getProjectionObject(), // transform from Spherical Mercator Projection\n\t\t\tnew OpenLayers.Projection(\"EPSG:4326\") // to WGS 1984\n\t\t);\n\t\tconst stringVal = pfRoundOffDecimal( realLonLat.lat ) + ', ' + pfRoundOffDecimal( realLonLat.lon );\n\t\tcoordsInput.val( stringVal )\n\t\t\t.attr( 'data-original-value', stringVal )\n\t\t\t.removeClass( 'modifiedInput' )\n\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\t}\n\n\tif ( mapService === \"Google Maps\" ) {\n\t\tmapCanvas = inputDiv.find('.pfMapCanvas')[ 0 ];\n\t\tmapOptions = {\n\t\t\tzoom: 1,\n\t\t\tcenter: new google.maps.LatLng( 0, 0 )\n\t\t};\n\t\tmap = new google.maps.Map( mapCanvas, mapOptions );\n\t\tgeocoder = new google.maps.Geocoder();\n\n\t\t// Let a click set the marker, while keeping the default\n\t\t// behavior (zoom and center) for double clicks.\n\t\t// Code copied from http://stackoverflow.com/a/8417447\n\t\tgoogle.maps.event.addListener( map, 'click', ( event ) => {\n\t\t\ttimer = setTimeout( () => {\n\t\t\t\tgoogleMapsSetMarker( event.latLng );\n\t\t\t}, 200 );\n\t\t});\n\t\tgoogle.maps.event.addListener( map, 'dblclick', ( event ) => {\n\t\t\tclearTimeout( timer );\n\t\t});\n\t} else if (mapService === \"Leaflet\") {\n\t\tmapCanvas = inputDiv.find('.pfMapCanvas').get(0);\n\t\tmapOptions = {\n\t\t\tzoom: 1,\n\t\t\tcenter: [ 0, 0 ]\n\t\t};\n\t\tconst layerOptions = {\n\t\t\tattribution: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n\t\t};\n\n\t\tmap = L.map(mapCanvas, mapOptions);\n\t\tnew L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', layerOptions).addTo(map);\n\n\t\tmap.on( 'click', ( event ) => {\n\t\t\t// Place/move the marker only on a single click, not a\n\t\t\t// double click (double clicks do a zoom).\n\t\t\t// Code based on https://stackoverflow.com/a/7845282\n\t\t\tnumClicks++;\n\t\t\tif (numClicks === 1) {\n\t\t\t\ttimer = setTimeout( () => {\n\t\t\t\t\tleafletSetMarker( event.latlng );\n\t\t\t\t\tnumClicks = 0;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tnumClicks = 0;\n\t\t\t}\n\t\t});\n\t} else { // if ( mapService == \"OpenLayers\" ) {\n\t\tmapCanvas = inputDiv.find('.pfMapCanvas');\n\t\tlet mapCanvasID = mapCanvas.attr('id');\n\t\tif ( mapCanvasID === undefined ) {\n\t\t\t// If no ID is set, it's probably in a multiple-\n\t\t\t// instance template; just set the ID to a random\n\t\t\t// string, so we can attach the map to it.\n\t\t\tmapCanvasID = mapCanvas.attr('data-origID') + '-' +\n\t\t\t\tMath.random().toString(36).slice(2, 15);\n\t\t\tmapCanvas.attr('ID', mapCanvasID);\n\t\t}\n\t\tmap = new OpenLayers.Map( mapCanvasID );\n\t\t// We do this more complex initialization, rather than just\n\t\t// calling OpenLayers.Layer.OSM(), so that the tiles will be\n\t\t// loaded via either HTTP or HTTPS, depending on what we are\n\t\t// using.\n\t\tmap.addLayer( new OpenLayers.Layer.OSM(\n\t\t\t\"OpenStreetMap\",\n\t\t\t// Official OSM tileset as protocol-independent URLs\n\t\t\t[\n\t\t\t\t'//a.tile.openstreetmap.org/${z}/${x}/${y}.png',\n\t\t\t\t'//b.tile.openstreetmap.org/${z}/${x}/${y}.png',\n\t\t\t\t'//c.tile.openstreetmap.org/${z}/${x}/${y}.png'\n\t\t\t],\n\t\t\tnull\n\t\t) );\n\t\tmap.zoomTo( 0 );\n\t\tmarkers = new OpenLayers.Layer.Markers( \"Markers\" );\n\t\tmap.addLayer( markers );\n\n\t\tmap.events.register( \"click\", map, ( e ) => {\n\t\t\tnumClicks++;\n\t\t\tif (numClicks === 1) {\n\t\t\t\ttimer = setTimeout( () => {\n\t\t\t\t\tconst loc = map.getLonLatFromPixel( e.xy );\n\t\t\t\t\topenLayersSetMarker( loc );\n\t\t\t\t\tnumClicks = 0;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tnumClicks = 0;\n\t\t\t}\n\t\t} );\n\t}\n\n\tfunction toOpenLayersLonLat( maps, lat, lon ) {\n\t\treturn new OpenLayers.LonLat( lon, lat ).transform(\n\t\t\tnew OpenLayers.Projection( \"EPSG:4326\" ), // transform from WGS 1984\n\t\t\tmaps.getProjectionObject() // to Spherical Mercator Projection\n\t\t);\n\t}\n\n\tfunction setMarkerFromCoordinates() {\n\t\tconst coordsText = coordsInput.val();\n\t\tconst coordsParts = coordsText.split(\",\");\n\t\tif ( coordsParts.length !== 2 ) {\n\t\t\tcoordsInput.val('');\n\t\t\treturn;\n\t\t}\n\t\tconst lat = coordsParts[0].trim();\n\t\tconst lon = coordsParts[1].trim();\n\t\tif ( !jQuery.isNumeric( lat ) || !jQuery.isNumeric( lon ) ) {\n\t\t\tcoordsInput.val('');\n\t\t\treturn;\n\t\t}\n\t\tif ( lat < -90 || lat > 90 || lon < -180 || lon > 180 ) {\n\t\t\tcoordsInput.val('');\n\t\t\treturn;\n\t\t}\n\t\tif ( mapService === \"Google Maps\" ) {\n\t\t\tconst gmPoint = new google.maps.LatLng( lat, lon );\n\t\t\tgoogleMapsSetMarker( gmPoint );\n\t\t\tmap.setCenter( gmPoint );\n\t\t} else if ( mapService === \"Leaflet\" ){\n\t\t\tconst lPoint = L.latLng( lat, lon );\n\t\t\tleafletSetMarker( lPoint );\n\t\t\tmap.setView( lPoint, 14 );\n\t\t} else { // if ( mapService === \"OpenLayers\" ) {\n\t\t\tconst olPoint = toOpenLayersLonLat( map, lat, lon );\n\t\t\topenLayersSetMarker( olPoint );\n\t\t\tmap.setCenter( olPoint, 14 );\n\t\t}\n\t}\n\n\tcoordsInput.keypress( function( e ) {\n\t\tif ( e.key === 'Enter' ) {\n\t\t\tsetMarkerFromCoordinates();\n\t\t\t// Prevent the form from getting submitted.\n\t\t\te.preventDefault();\n\t\t\t$(this).removeClass( 'modifiedInput' )\n\t\t\t\t.parent().find('.pfCoordsInputHelpers').remove();\n\n\t\t}\n\t});\n\n\tcoordsInput.keydown( ( e ) => {\n\t\tif ( ! coordsInput.hasClass( 'modifiedInput' ) ) {\n\t\t\tcoordsInput.addClass( 'modifiedInput' );\n\t\t\tconst $checkMark = $('<a></a>').addClass( 'pfCoordsCheckMark' ).css( 'color', 'green' ).html( '&#10004;' );\n\t\t\tconst $xMark = $('<a></a>').addClass( 'pfCoordsX' ).css( 'color', 'red' ).html( '&#10008;' );\n\t\t\tconst $marksDiv = $('<span></span>').addClass( 'pfCoordsInputHelpers' )\n\t\t\t\t.append( $checkMark ).append( ' ' ).append( $xMark );\n\t\t\tcoordsInput.parent().append( $marksDiv );\n\n\t\t\t$checkMark.click( () => {\n\t\t\t\tsetMarkerFromCoordinates();\n\t\t\t\tcoordsInput.removeClass( 'modifiedInput' );\n\t\t\t\t$marksDiv.remove();\n\t\t\t});\n\n\t\t\t$xMark.click( () => {\n\t\t\t\tcoordsInput.removeClass( 'modifiedInput' )\n\t\t\t\t\t.val( coordsInput.attr('data-original-value') );\n\t\t\t\t$marksDiv.remove();\n\t\t\t});\n\t\t}\n\t});\n\n\tfunction setMarkerFromAddress() {\n\t\tlet addressText = inputDiv.find('.pfAddressInput input').val(),\n\t\t\talert;\n\t\tif ( mapService === \"Google Maps\" ) {\n\t\t\tmap.setZoom(14);\n\t\t\tgeocoder.geocode( { 'address': addressText }, (results, status) => {\n\t\t\t\tif (status === google.maps.GeocoderStatus.OK) {\n\t\t\t\t\tmap.setCenter(results[0].geometry.location);\n\t\t\t\t\tgoogleMapsSetMarker( results[0].geometry.location );\n\t\t\t\t\tmap.setZoom(14);\n\t\t\t\t} else {\n\t\t\t\t\talert(\"Geocode was not successful for the following reason: \" + status);\n\t\t\t\t}\n\t\t\t});\n\t\t } else { // Leaflet, OpenLayers\n\t\t\t$.ajax( 'https://nominatim.openstreetmap.org/search?format=json&q=' + encodeURIComponent( addressText ) )\n\t\t\t.done( ( result ) => {\n\t\t\t\tif ( result.length === 0 ) {\n\t\t\t\t\talert(\"Geocode was not successful\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst lat = result[0].lat;\n\t\t\t\tconst lon = result[0].lon;\n\t\t\t\t// Use the specified bounds - this is better\n\t\t\t\t// than a preset zoom, because it handles the\n\t\t\t\t// precision correctly for countries, cities,\n\t\t\t\t// etc.\n\t\t\t\tconst boundsStr = String(result[0].boundingbox);\n\t\t\t\tconst vals = boundsStr.split(\",\");\n\t\t\t\tconst bottom = vals[0];\n\t\t\t\tconst top = vals[1];\n\t\t\t\tconst left = vals[2];\n\t\t\t\tconst right = vals[3];\n\t\t\t\tif ( mapService === \"OpenLayers\" ) {\n\t\t\t\t\tconst olPoint = toOpenLayersLonLat( map, lat, lon );\n\t\t\t\t\topenLayersSetMarker( olPoint );\n\t\t\t\t\tmap.setCenter( olPoint );\n\t\t\t\t\tconst fromProjection = new OpenLayers.Projection(\"EPSG:4326\"); // transform from WGS 1984\n\t\t\t\t\tconst toProjection = map.getProjectionObject(); // to Spherical Mercator Projection\n\t\t\t\t\tconst bounds = new OpenLayers.Bounds(left,bottom,right,top).transform(fromProjection,toProjection);\n\t\t\t\t\tmap.zoomToExtent(bounds);\n\t\t\t\t} else if ( mapService === \"Leaflet\" ) {\n\t\t\t\t\tconst lPoint = L.latLng( lat, lon );\n\t\t\t\t\tleafletSetMarker( lPoint );\n\t\t\t\t\tmap.fitBounds([ [ bottom, left ], [ top, right ] ]);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tinputDiv.find('.pfAddressInput').keypress( ( e ) => {\n\t\tif ( e.key === 'Enter' ) {\n\t\t\tsetMarkerFromAddress();\n\t\t\t// Prevent the form from getting submitted.\n\t\t\te.preventDefault();\n\t\t}\n\t} );\n\n\tinputDiv.find('.pfLookUpAddress').click( () => {\n\t\tsetMarkerFromAddress();\n\t});\n\n\n\tif ( coordsInput.val() !== '' ) {\n\t\tsetMarkerFromCoordinates();\n\t}\n}\n\n$( () => {\n\tjQuery(\".pfGoogleMapsInput\").each( function() {\n\t\t// Ignore the hidden \"starter\" div in multiple-instance templates.\n\t\tif ( $(this).closest(\".multipleTemplateStarter\").length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tsetupMapFormInput( jQuery(this), \"Google Maps\" );\n\t});\n\tjQuery(\".pfLeafletInput\").each( function() {\n\t\tif ( $(this).closest(\".multipleTemplateStarter\").length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tsetupMapFormInput( jQuery(this), \"Leaflet\" );\n\t});\n\tjQuery(\".pfOpenLayersInput\").each( function() {\n\t\tif ( $(this).closest(\".multipleTemplateStarter\").length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tsetupMapFormInput( jQuery(this), \"OpenLayers\" );\n\t});\n});\n\n// Activate maps in a new instance of a multiple-instance template.\nmw.hook('pf.addTemplateInstance').add(( $newInstance ) => {\n\t$newInstance.find(\".pfGoogleMapsInput\").each( function() {\n\t\tsetupMapFormInput( jQuery(this), \"Google Maps\" );\n\t});\n\t$newInstance.find(\".pfLeafletInput\").each( function() {\n\t\tsetupMapFormInput( jQuery(this), \"Leaflet\" );\n\t});\n\t$newInstance.find(\".pfOpenLayersInput\").each( function() {\n\t\tsetupMapFormInput( jQuery(this), \"OpenLayers\" );\n\t});\n});\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_popupform.js","messages":[{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":315,"column":3,"nodeType":"AssignmentExpression","endLine":315,"endColumn":61},{"ruleId":"es-x/no-resizable-and-growable-arraybuffers","severity":1,"message":"ES2024 Resizable ArrayBuffer is forbidden.","line":586,"column":3,"nodeType":"MemberExpression","messageId":"forbiddenForResizableArrayBuffer","endLine":586,"endColumn":26},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":604,"column":5,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":613,"endColumn":12},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":695,"column":12,"nodeType":"CallExpression","endLine":695,"endColumn":38},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":709,"column":12,"nodeType":"CallExpression","endLine":709,"endColumn":38}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":5,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Javascript code to be used with extension PageForms for popup forms.\n *\n * @author Stephan Gambke\n */\n/*global escape*/\n\n// initialise\njQuery( () => {\n\n\t// register eventhandlers on 'edit' links and buttons\n\n\t// register formlink with link\n\tjQuery('a.popupformlink').click(function(evt){\n\t\treturn ext.popupform.handlePopupFormLink( this.getAttribute('href'), this );\n\t});\n\n\t// register formlink with button\n\tjQuery( 'form.popupformlink' ).submit(function(evt){\n\t\treturn ext.popupform.handlePopupFormLink( this.getAttribute( 'action' ), this );\n\t});\n\n\t// register forminput\n\tjQuery( 'form.popupforminput' ).submit(function(evt){\n\t\treturn ext.popupform.handlePopupFormInput( this.getAttribute( 'action' ), this );\n\t});\n\n} );\n\n// create ext if it does not exist yet\nif ( typeof( window.ext ) === \"undefined\" ) {\n\twindow.ext = {};\n}\n\nwindow.ext.popupform = ( function() {\n\tlet $wrapper;\n\tlet $background;\n\tlet container;\n\tlet $innerContainer;\n\tlet $iframe;\n\tlet $content;\n\tlet $waitIndicator;\n\tlet instance = 0;\n\n\tlet timer;\n\tlet needsRender = true;\n\n\tlet doc;\n\n\tlet brokenBrowser, brokenChrome;\n\n\tconst padding = 20;\n\tlet reload;\n\tfunction fadeOut($elem, callback ) {\n\t\t// no fading for broken browsers\n\t\tif ( brokenBrowser ){\n\t\t\t$elem.hide();\n\t\t\tif ( callback ) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t} else {\n\t\t\t// what an ugly hack\n\t\t\tif ( $elem === $waitIndicator ) {\n\t\t\t\t$elem.fadeOut( 200, callback );\n\t\t\t} else {\n\t\t\t\t$elem.fadeOut( callback );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction adjustFrameSize( animate ) {\n\t\t// set some inputs\n\t\tconst oldFrameW = container.width();\n\t\tconst oldFrameH = container.height();\n\t\tconst oldContW = $content.width();\n\t\tconst oldContH = $content.height();\n\n\t\tconst availW = Math.floor( jQuery(window).width() * 0.8 );\n\t\tconst availH = Math.floor( jQuery(window).height() * 0.8 );\n\n\t\tconst emergencyW = Math.floor( jQuery(window).width() * 0.85 );\n\t\tconst emergencyH = Math.floor( jQuery(window).height() * 0.85 );\n\n\t\t// FIXME: these might not be the true values\n\t\tconst scrollW = 25;\n\t\tconst scrollH = 25;\n\n\t\t// find the dimensions of the document\n\n\t\tconst $body = $content.closest('body');\n\t\tconst $html = $body.parent();\n\n\t\tlet scrollTop = $html.scrollTop();\n\t\tlet scrollLeft = $html.scrollLeft();\n\n\t\t$content\n\t\t.css('position', 'absolute')\n\t\t.width( 'auto' )\n\t\t.height( 'auto' );\n\n\t\t// set max dimensions for layout of content\n\t\t$iframe\n\t\t.width( emergencyW )\n\t\t.height( emergencyH );\n\n\t\t// get dimension values\n\t\tlet docW = $content.width();\n\t\tlet docH = $content.height();\n\t\t// On Firefox, this doesn't work for some reason, so use\n\t\t// this roundabout method to set the dimensions.\n\t\tif ( docW === 0 || docH === 0 ) {\n\t\t\tdocW = availW * 0.95;\n\t\t\tdocH = availH * 0.95;\n\t\t}\n\n\t\t// set old dimensions for layout of content\n\t\t$iframe\n\t\t.width( '100%' )\n\t\t.height( '100%' );\n\n\t\t$content\n\t\t.css('position', 'relative')\n\t\t.width( oldContW )\n\t\t.height( oldContH );\n\n\t\tconst docpW = docW + 2 * padding;\n\t\tconst docpH = docH + 2 * padding;\n\n\t\t// Flags\n\n\t\tconst needsHScroll = docpW > emergencyW || ( docpW > emergencyW - scrollW && docpH > emergencyH );\n\t\tconst needsVScroll = docpH > emergencyH || ( docpH > emergencyH - scrollH && docpW > emergencyW );\n\n\t\tconst needsWStretch =\n\t\t( docpW > availW && docpW <= emergencyW ) && ( docpH <= emergencyH ) ||\n\t\t( docpW > availW - scrollW && docpW <= emergencyW - scrollW ) && ( docpH > emergencyH );\n\n\t\tconst needsHStretch =\n\t\t( docpH > availH && docpH <= emergencyH ) && ( docpW <= emergencyW ) ||\n\t\t( docpH > availH - scrollH && docpH <= emergencyH - scrollH ) && ( docpW > emergencyW );\n\n\t\t// Outputs\n\n\t\tlet frameW;\n\t\tlet frameH;\n\n\t\tlet contW;\n\t\tlet contH;\n\n\t\tif ( needsWStretch ) {\n\t\t\tcontW = docW;\n\t\t\tframeW = docpW;\n\t\t} else if ( docpW > availW ) { // form does not even fit with stretching\n\t\t\tcontW = docW;\n\t\t\tframeW = availW;\n\t\t} else {\n\t\t\t//contW = Math.max( Math.min( 1.5 * docW, availW ), availW / 2 );\n\t\t\tcontW = docW;\n\t\t\tframeW = docpW;\n\t\t}\n\n\t\tif ( needsVScroll ){\n\t\t\tframeW += scrollW;\n\t\t} else {\n\t\t\tscrollTop = 0;\n\t\t}\n\n\t\tif ( needsHStretch ) {\n\t\t\tcontH = docH;\n\t\t\tframeH = docpH;\n\t\t} else if ( docpH > availH ) { // form does not even fit with stretching\n\t\t\tcontH = docH;\n\t\t\tframeH = availH;\n\t\t} else {\n\t\t\t//contH = Math.min( 1.1 * docH, availH);\n\t\t\tcontH = docH;\n\t\t\tframeH = docpH;\n\t\t}\n\n\t\tif ( needsHScroll ){\n\t\t\tframeH += scrollH;\n\t\t} else {\n\t\t\tscrollLeft = 0;\n\t\t}\n\n\t\tif ( frameW !== oldFrameW || frameH !== oldFrameH ) {\n\n\t\t\t$iframe[0].style.overflow=\"hidden\";\n\n\t\t\tif ( animate ) {\n\t\t\t\t$content\n\t\t\t\t.width ( 'auto' )\n\t\t\t\t.height ( 'auto' );\n\n\t\t\t\tcontainer.animate({\n\t\t\t\t\twidth: frameW,\n\t\t\t\t\theight: frameH,\n\t\t\t\t\ttop: Math.floor(( - frameH ) / 2),\n\t\t\t\t\tleft: Math.floor(( - frameW ) / 2)\n\t\t\t\t}, {\n\t\t\t\t\tduration: 500,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\t$iframe[0].style.overflow=\"visible\";\n\n\t\t\t\t\t\t$content\n\t\t\t\t\t\t.width ( 'auto' )\n\t\t\t\t\t\t.height ( 'auto' );\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\tcontainer\n\t\t\t\t.width( frameW )\n\t\t\t\t.height ( frameH );\n\n\t\t\t\tcontainer[0].style.top = (Math.floor(( - frameH ) / 2)) + \"px\";\n\t\t\t\tcontainer[0].style.left = (Math.floor(( - frameW ) / 2)) + \"px\";\n\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t$iframe[0].style.overflow=\"visible\";\n\t\t\t\t}, 100);\n\n\t\t\t\t$content\n\t\t\t\t.width ( 'auto' )\n\t\t\t\t.height ( 'auto' );\n\t\t\t}\n\t\t} else {\n\t\t\t$content\n\t\t\t.width ( 'auto' )\n\t\t\t.height ( 'auto' );\n\t\t}\n\n\t\t$html\n\t\t.css('overflow', 'auto')\n\t\t.scrollTop(Math.min(scrollTop, docpH - frameH))\n\t\t.scrollLeft(scrollLeft);\n\n\t\treturn true;\n\t}\n\n\tfunction handleCloseFrame( event ){\n\t\tjQuery(window).unbind( \"resize\", adjustFrameSize );\n\t\tclearTimeout(timer);\n\n\t\tfadeOut( container, () => {\n\t\t\t$background.fadeOut( () => {\n\t\t\t\t$wrapper.remove();\n\t\t\t});\n\t\t});\n\t\treturn false;\n\t}\n\n\tfunction fadeIn( $elem, callback ) {\n\t\t// no fading for broken browsers\n\t\tif ( brokenBrowser ){\n\t\t\t$elem.show();\n\t\t\tif ( callback ) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t} else {\n\t\t\t// what an ugly hack\n\t\t\tif ( $elem === $waitIndicator ) {\n\t\t\t\t$elem.fadeIn( 200, callback );\n\t\t\t} else {\n\t\t\t\t$elem.fadeIn( callback );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction fadeTo($elem, time, target, callback) {\n\t\t// no fading for broken browsers\n\t\tif ( brokenBrowser ){\n\n\t\t\tif (target > 0) {\n\t\t\t\t$elem[0].style.visibility = \"visible\";\n\t\t\t} else {\n\t\t\t\t$elem[0].style.visibility = \"hidden\";\n\t\t\t}\n\n\t\t\tif ( callback ) {\n\t\t\t\tcallback();\n\t\t\t}\n\n\t\t} else {\n\t\t\t$elem.fadeTo(time, target, callback);\n\t\t}\n\t}\n\n\tfunction showForm() {\n\t\tinstance++;\n\n\t\tbrokenChrome =\n\t\t( navigator.userAgent.includes(\"Chrome\") &&\n\t\t\tnavigator.platform.includes(\"Linux x86_64\") );\n\n\t\tbrokenBrowser = brokenChrome;\n\n\t\tlet maxZIndex = 0;\n\n\t\tjQuery(\"*\").each(function() {\n\t\t\tconst curr = parseInt( jQuery( this ).css( \"z-index\" ) );\n\t\t\tmaxZIndex = curr > maxZIndex ? curr : maxZIndex;\n\t\t});\n\n\t\t$wrapper = jQuery( \"<div class='popupform-wrapper' >\" );\n\t\t$background = jQuery( \"<div class='popupform-background' >\" );\n\n\t\tconst $waitIndicatorWrapper = jQuery( \"<div class='popupform-loading'>\" );\n\n\t\t$waitIndicator = jQuery( \"<div class='popupform-loadingbg'></div><div class='popupform-loadingfg'></div>\" );\n\n\t\tconst $anchor = jQuery( \"<div class='popupform-anchor' >\" );\n\n\t\tcontainer = jQuery( \"<div class='popupform-container' >\" );\n\t\t$innerContainer = jQuery( \"<div class='popupform-innercontainer' >\" );\n\t\t$iframe = jQuery( \"<iframe class='popupform-innerdocument' name='popupform-iframe\" + instance + \"' id='popupform-iframe\" + instance + \"' >\");\n\n\t\tconst $closeBtn = jQuery( \"<div class='popupform-close'></div> \" );\n\n\t\t// initially hide background and waitIndicator\n\t\tif (brokenChrome) {\n\t\t\t$background.css(\"background\", \"transparent\");\n\t\t} else {\n\t\t\t$background.css(\"opacity\", 0.0);\n\t\t}\n\n\t\t$waitIndicator.hide();\n\t\tcontainer.hide();\n\n\t\t// insert background and wait indicator into wrapper and all into document\n\t\t$waitIndicatorWrapper\n\t\t.append( $waitIndicator );\n\n\t\t$innerContainer\n\t\t.append( $iframe );\n\n\t\tcontainer\n\t\t.append( $closeBtn )\n\t\t.append( $innerContainer );\n\n\t\t$anchor\n\t\t.append(container);\n\n\t\t$wrapper\n\t\t.css( \"z-index\", maxZIndex + 1 )\n\t\t.append( $background )\n\t\t.append( $waitIndicatorWrapper )\n\t\t.append( $anchor )\n\t\t.appendTo( \"body\" );\n\n\t\t// fade background in\n\t\tif ( !brokenChrome ) {\n\t\t\t$background.fadeTo( 400, 0.6 );\n\t\t}\n\t\tfadeIn( $waitIndicator );\n\n\t\t// attach event handler to close button\n\t\t$closeBtn.click( handleCloseFrame );\n\t}\n\n\tfunction purgePage() {\n\t\tconst path = location.pathname;\n\t\t// get name of the current page from the url\n\t\tconst pageName = path.split(\"/\").pop();\n\t\treturn ( new mw.Api() ).post( { action: 'purge', titles: pageName } );\n\t}\n\n\tfunction handleSubmitData( event, returnedData, textStatus, XMLHttpRequest ){\n\t\tfadeOut( container, () => {\n\t\t\tfadeIn( $waitIndicator );\n\t\t});\n\n\t\tlet $form = jQuery( event.target );\n\t\tconst formdata = $form.serialize() + \"&wpSave=\" + encodeURIComponent($form.find(\"#wpSave\").attr(\"value\"));\n\n\t\tfunction handleInnerSubmit() {\n\t\t\t// find form in fake edit page\n\t\t\tconst $innerform = jQuery(\"<div>\" + returnedData + \"</div>\").find(\"form\");\n\n\t\t\t// check if we got an error page\n\t\t\tif ( $innerform.length === 0 ) {\n\n\t\t\t\t$form.unbind( event );\n\n\t\t\t\t$iframe = container.find(\"iframe\");\n\t\t\t\tdoc = $iframe[0].contentWindow || $iframe[0].contentDocument;\n\t\t\t\tif (doc.document) {\n\t\t\t\t\tdoc = doc.document;\n\t\t\t\t}\n\n\t\t\t\tdoc.open();\n\t\t\t\tdoc.write(returnedData);\n\t\t\t\tdoc.close();\n\n\t\t\t\thandleCloseFrame();\n\t\t\t\tif ( reload ) {\n\t\t\t\t\tpurgePage().then( ( data ) => {\n\t\t\t\t\t\tlocation.reload();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Send the form data off, we do not care for the returned data\n\t\t\tconst innerformdata = $innerform.serialize();\n\t\t\tjQuery.post( $innerform.attr(\"action\"), innerformdata );\n\n\t\t\t// build new url for outer page (we have to ask for a purge)\n\n\t\t\tlet url = location.href;\n\n\t\t\t// does a querystring exist?\n\t\t\tconst start = url.indexOf(\"action=\");\n\n\t\t\tif ( start >= 0 ) {\n\n\t\t\t\tconst stop = url.indexOf(\"&\", start);\n\n\t\t\t\tif ( stop >= 0 ) {\n\t\t\t\t\turl = url.slice( 0, Math.max(0, start - 1) ) + url.slice(stop + 1);\n\t\t\t\t} else {\n\t\t\t\t\turl = url.slice( 0, Math.max(0, start - 1) );\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t$form = jQuery('<form action=\"' + url + '\" method=\"POST\"><input type=\"hidden\" name=\"action\" value=\"purge\"></form>')\n\t\t\t.appendTo('body');\n\n\t\t\t$form\n\t\t\t.submit();\n\n\t\t\tfadeOut( container, () => {\n\t\t\t\tfadeIn( $waitIndicator );\n\t\t\t});\n\n\t\t\treturn false;\n\t\t}\n\n\t\t// Send form data off. PF will send back a fake edit page\n\t\t//\n\t\t// Normally we should check this.action first and only if it is empty\n\t\t// revert to this.ownerDocument.URL. Tough luck, IE does not return an\n\t\t// empty action but fills in some bogus\n\t\tjQuery.post( event.target.ownerDocument.URL , formdata, handleInnerSubmit);\n\n\t\treturn false;\n\t}\n\n\tfunction closeFrameAndFollowLink( link ){\n\t\tclearTimeout(timer);\n\n\t\tfadeOut( container, () => {\n\t\t\tfadeIn ( $waitIndicator );\n\t\t\twindow.location.href = link;\n\t\t});\n\t}\n\n\t// Saw it on http://robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element\n\t// and liked it\n\tfunction getStyle(oElm, strCssRule){\n\t\tlet strValue = \"\";\n\t\tif(document.defaultView && document.defaultView.getComputedStyle){\n\t\t\tstrValue = document.defaultView.getComputedStyle(oElm, \"\").getPropertyValue(strCssRule);\n\t\t} else if(oElm.currentStyle){\n\t\t\tstrCssRule = strCssRule.replace(/\\-(\\w)/g, (strMatch, p1) => p1.toUpperCase());\n\t\t\tstrValue = oElm.currentStyle[strCssRule];\n\t\t}\n\t\treturn strValue;\n\t}\n\n\tfunction handleLoadFrame() {\n\t\tconst $iframecontents = $iframe.contents();\n\n\t\tconst containerAlreadyVisible = container.is( ':visible' );\n\n\t\tif ( !containerAlreadyVisible ) {\n\t\t\t// no need to hide it again\n\t\t\tif ( brokenBrowser ) {\n\t\t\t\tcontainer[0].style.visibility = \"hidden\";\n\t\t\t} else {\n\t\t\t\tcontainer[0].style.opacity = 0;\n\t\t\t}\n\t\t}\n\n\t\tcontainer.show();\n\n\t\t// GuMaxDD has #content but keeps headlines in #gumax-content-body\n\t\t$content = $iframecontents.find(\"#gumax-content-body\");\n\n\t\t// Normal skins use #content (e.g. Vector, Monobook)\n\t\tif ( $content.length === 0 ) {\n\t\t\t$content = $iframecontents.find(\"#content\");\n\t\t}\n\n\t\t// Some skins use #mw_content (e.g. Modern)\n\t\tif ( $content.length === 0 ) {\n\t\t\t$content = $iframecontents.find(\"#mw_content\");\n\t\t}\n\n\t\tconst $iframebody = $content.closest(\"body\");\n\t\tconst $iframedoc = $iframebody.parent();\n\n\t\t// This is not a normal MW page (or it uses an unknown skin)\n\t\tif ( $content.length === 0 ) {\n\t\t\t$content = $iframebody;\n\t\t}\n\n\t\t// The huge left margin looks ugly in Vector - reduce it.\n\t\t// (How does this look for other skins?)\n\t\tconst $siblings = $content\n\t\t.css( {\n\t\t\tmargin: 0,\n\t\t\tpadding: padding,\n\t\t\twidth: \"auto\",\n\t\t\theight: \"auto\",\n\t\t\tminWidth: \"0px\",\n\t\t\tminHeight:\"0px\",\n//\t\t\toverflow: \"visible\",\n//\t\t\tposition: \"relative\",\n//\t\t\ttop: \"0\",\n//\t\t\tleft: \"0\",\n\t\t\tborder: \"none\"\n\t\t} )\n\t\t.parentsUntil('html')\n\t\t.css( {\n\t\t\tmargin: 0,\n\t\t\tpadding: 0,\n\t\t\twidth: \"auto\",\n\t\t\theight: \"auto\",\n\t\t\tminWidth: \"0px\",\n\t\t\tminHeight: \"0px\",\n\t\t\t\"float\": \"none\", // Cavendish skin uses floating -> unfloat content\n//\t\t\tposition: \"relative\",\n//\t\t\ttop: \"0\",\n//\t\t\tleft: \"0\",\n\t\t\tbackground: \"transparent\"\n\t\t})\n\t\t.addBack().siblings();\n\n\t\t$iframedoc.height('100%').width('100%');\n\t\t$iframebody.height('100%').width('100%');\n\n\t\t$siblings.each( function(){\n\t\t\tconst $elem = jQuery(this);\n\n\t\t\t// TODO: Does this really help?\n\t\t\tif ( getStyle(this, \"display\") !== \"none\" && ! (\n\t\t\t\t\t( this.offsetLeft + $elem.outerWidth(true) < 0 ) ||\t\t// left of document\n\t\t\t\t\t( this.offsetTop + $elem.outerHeight(true) < 0 ) || // above document\n\t\t\t\t\t( this.offsetLeft > 100000 ) ||\t\t// right of document\n\t\t\t\t\t( this.offsetTop > 100000 ) // below document\n\t\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tjQuery(this).hide();\n\t\t\t\t//\t\t\t\t\tcss({\n\t\t\t\t//\t\t\t\t\t\theight : \"0px\",\n\t\t\t\t//\t\t\t\t\t\twidth : \"0px\",\n\t\t\t\t//\t\t\t\t\t\tminWidth : \"0px\",\n\t\t\t\t//\t\t\t\t\t\tminHeight : \"0px\",\n\t\t\t\t//\t\t\t\t\t\tmargin : \"0px\",\n\t\t\t\t//\t\t\t\t\t\tpadding : \"0px\"\n\t\t\t\t//\t\t\t\t\t\tborder : \"none\",\n\t\t\t\t//\t\t\t\t\t\toverflow: \"hidden\"\n\t\t\t\t//\t\t\t\t\t//position: \"static\"\n\t\t\t\t//\t\t\t\t\t});\n\t\t\t}\n\t\t\tif ( ( this.offsetLeft + $elem.outerWidth() < 0 ) ||\n\t\t\t\t( this.offsetTop + $elem.outerHeight() < 0 )\n\t\t\t\t) {\n\t\t\t\tthis.style.left = (-$elem.outerWidth(true)) + \"px\";\n\t\t\t\tthis.style.top = (-$elem.outerHeight(true)) + \"px\";\n\t\t\t}\n\t\t});\n\t\t//.children().css(\"position\", \"static\");\n\n\t\tcontainer.show();\n\n\t\t// adjust frame size to dimensions just calculated\n\t\tadjustFrameSize();\n\n\t\t// and attach event handler to adjust frame size every time the window\n\t\t// size changes\n\t\tjQuery( window ).resize( () => {\n\t\t\tadjustFrameSize();\n\t\t} );\n\n\t\t//interval = setInterval(adjustFrameSize, 100);\n\n\t\tconst $form = $content.find(\"#pfForm\");\n\t\tconst innerwdw = document.getElementById( 'popupform-iframe' + instance ).contentWindow;\n\t\tconst innerJ = innerwdw.jQuery;\n\n\t\t// if we have a form and it is not a RunQuery form\n\t\tif ($form.length > 0 && ( typeof $form[0].wpRunQuery === 'undefined') ) {\n\t\t\tlet submitok = false;\n\t\t\tlet innersubmitprocessed = false;\n\n\t\t\t// catch form submit event\n\t\t\t$form\n\t\t\t.bind( \"submit\", ( event ) => {\n\t\t\t\tvar interval = setInterval(() => {\n\t\t\t\t\tif ( innersubmitprocessed ) {\n\t\t\t\t\t\tclearInterval( interval );\n\t\t\t\t\t\tinnersubmitprocessed = false;\n\t\t\t\t\t\tif ( submitok ) {\n\t\t\t\t\t\t\thandleSubmitData( event );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}, 10);\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t// catch inner form submit event\n\t\t\tif ( innerJ ) {\n\t\t\t\tinnerwdw.jQuery($form[0])\n\t\t\t\t.bind( \"submit\", ( event ) => {\n\t\t\t\t\t\tsubmitok = ( event.result === undefined ) ? true : event.result;\n\t\t\t\t\t\tinnersubmitprocessed = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tsubmitok = true;\n\t\t\t\tinnersubmitprocessed = true;\n\t\t\t}\n\t\t}\n\n\t\tif (innerJ) {\n\t\t\t// FIXME: Why did I put this in?\n\t\t\tinnerwdw.jQuery( innerwdw[0] ).on('unload', (event) => false);\n\n\t\t\t//\n\t\t\t$content.bind( 'click', () => {\n\t\t\t\tlet foundQueue = false;\n\t\t\t\tinnerJ('*', $content[0]).each( function() {\n\t\t\t\t\tif ( innerJ(this).queue().length > 0 ) {\n\t\t\t\t\t\tfoundQueue = true;\n\t\t\t\t\t\tinnerJ(this).queue( function(){\n\t\t\t\t\t\t\tsetTimeout( adjustFrameSize, 100, true );\n\t\t\t\t\t\t\tinnerJ(this).dequeue();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif ( ! foundQueue ) {\n\t\t\t\t\tadjustFrameSize( true );\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t} else {\n\t\t\t$content.bind( 'click', () => {\n\t\t\t\t\tadjustFrameSize( true );\n\t\t\t});\n\t\t}\n\n\t\t// find all links. Have to use inner jQuery so event.result below\n\t\t// reflects the result of inner event handlers. We (hopefully) come last\n\t\t// in the chain of event handlers as we only attach when the frame is\n\t\t// already completely loaded, i.e. every inner event handler is already\n\t\t// attached.\n\t\tconst allLinks = (innerJ)?innerJ(\"a[href]\"):jQuery(\"a[href]\");\n\n\t\t// catch 'Cancel'-Link (and other 'back'-links) and close frame instead of going back\n\t\tconst backlinks = allLinks.filter('a[href=\"javascript:history.go(-1);\"]');\n\t\tbacklinks.click(handleCloseFrame);\n\n\t\t// promote any other links to open in main window, prevent nested browsing\n\t\tallLinks\n\t\t.not('a[href*=\"javascript:\"]') // scripted links\n\t\t.not('a[target]')              // targeted links\n\t\t.not('a[href^=\"#\"]')           // local links\n\t\t.not('a.pfUploadable')         // link to file upload\n\t\t.click((event) => {\n\t\t\tif ( event.result !== false ) { // if not already caught by somebody else\n\t\t\t\tcloseFrameAndFollowLink( event.target.getAttribute('href') );\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\t// finally show the frame, but only if it is not already visible\n\t\tif ( ! containerAlreadyVisible ) {\n\t\t\t\tfadeOut ( $waitIndicator, () => {\n\t\t\t\tfadeTo( container, 400, 1 );\n\t\t\t} );\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction handlePopupFormInput( ptarget, elem ) {\n\t\tshowForm();\n\t\treload = $(elem).hasClass('reload');\n\n\t\t$iframe.on( 'load', () => {\n\t\t\t// attach event handler to iframe\n\t\t\t$iframe.bind( 'load', handleLoadFrame );\n\t\t\treturn false;\n\t\t});\n\n\t\telem.target = 'popupform-iframe' + instance;\n\t\treturn true;\n\t}\n\n\tfunction handlePopupFormLink( ptarget, elem ) {\n\t\tshowForm();\n\t\treload = $(elem).hasClass('reload');\n\t\t// store initial readystate\n\t\tlet readystate = $iframe.contents()[0].readyState;\n\n\t\t// set up timer for waiting on the document in the iframe to be dom-ready\n\t\t// this sucks, but there is no other way to catch that event\n\t\t// onload is already too late\n\t\ttimer = setInterval(() => {\n\t\t\t// if the readystate changed\n\t\t\tif ( readystate !== $iframe.contents()[0].readyState ) {\n\t\t\t\t// store new readystate\n\t\t\t\treadystate = $iframe.contents()[0].readyState;\n\n\t\t\t\t// if dom is built but document not yet displayed\n\t\t\t\tif ( readystate === 'interactive' || readystate === 'complete' ) {\n\t\t\t\t\tneedsRender = false; // flag that rendering is already done\n\t\t\t\t\thandleLoadFrame();\n\t\t\t\t}\n\t\t\t}\n\t\t}, 100 );\n\n\t\t// fallback in case we did not catch the dom-ready state\n\t\t$iframe.on('load', ( event ) => {\n\t\t\tif ( needsRender ) { // rendering not already done?\n\t\t\t\thandleLoadFrame( event );\n\t\t\t}\n\t\t\tneedsRender = true;\n\t\t});\n\n\t\tif ( elem.tagName === 'FORM' ) {\n\t\t\telem.target = 'popupform-iframe' + instance;\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconst delim = ptarget.indexOf( '?' );\n\t\t\tconst form = document.createElement(\"form\");\n\n\t\t\tform.target = 'popupform-iframe' + instance;\n\n\t\t\t// Do we have parameters?\n\t\t\tif ( delim > 0 ) {\n\t\t\t\tform.action = ptarget.slice( 0, Math.max(0, delim) );\n\t\t\t\tconst params = String( ptarget.slice( delim + 1 ) ).split(\"&\");\n\t\t\t\tfor ( let i = 0; i < params.length; ++i ) {\n\n\t\t\t\t\tconst input = document.createElement(\"input\");\n\t\t\t\t\tconst param = String( params[i] ).split('=');\n\t\t\t\t\tinput.type = 'hidden';\n\t\t\t\t\tinput.name = decodeURIComponent( param[0] );\n\t\t\t\t\tinput.value = decodeURIComponent( param[1] );\n\t\t\t\t\tform.appendChild( input );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tform.action = ptarget;\n\t\t\t}\n\n\t\t\tdocument.getElementsByTagName('body')[0].appendChild(form);\n\t\t\tform.submit();\n\t\t\tdocument.getElementsByTagName('body')[0].removeChild(form);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t// export public funcitons\n\tthis.handlePopupFormInput = handlePopupFormInput;\n\tthis.handlePopupFormLink = handlePopupFormLink;\n\tthis.adjustFrameSize = adjustFrameSize;\n\n\treturn this;\n}() );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_preview.js","messages":[{"ruleId":"es-x/no-resizable-and-growable-arraybuffers","severity":1,"message":"ES2024 Resizable ArrayBuffer is forbidden.","line":56,"column":3,"nodeType":"MemberExpression","messageId":"forbiddenForResizableArrayBuffer","endLine":56,"endColumn":21}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Handles dynamic Page Preview for Page Forms.\n *\n * @author Stephan Gambke\n */\n\n/*global validateAll */\n\n( function( $, mw ) {\n\n\t'use strict';\n\n\tlet $form;\n\tlet $previewpane;\n\tlet previewHeight;\n\n\t/**\n\t * Called when the content is loaded into the preview pane\n\t *\n\t * @return {Mixed}\n\t */\n\tconst loadFrameHandler = function handleLoadFrame() {\n\n\t\tconst $iframe = $( this );\n\t\tconst $iframecontents = $iframe.contents();\n\n\t\t// find div containing the preview\n\t\tlet $content = $iframecontents.find( '#wikiPreview' );\n\n\t\tconst $iframebody = $content.closest( 'body' );\n\t\tconst $iframedoc = $iframebody.parent();\n\t\t$iframedoc.height( 'auto' );\n\n\t\t// this is not a normal MW page (or it uses an unknown skin)\n\t\tif ( $content.length === 0 ) {\n\t\t\t$content = $iframebody;\n\t\t}\n\n\t\t$content.parentsUntil( 'html' ).addBack()\n\t\t.css( {\n\t\t\tmargin: 0,\n\t\t\tpadding: 0,\n\t\t\twidth: '100%',\n\t\t\theight: 'auto',\n\t\t\tminWidth: '0px',\n\t\t\tminHeight: '0px',\n\t\t\t'float': 'none', // Cavendish skin uses floating -> unfloat content\n\t\t\tborder: 'none',\n\t\t\tbackground: 'transparent'\n\t\t} )\n\t\t.siblings()\n\t\t.hide(); // FIXME: Some JS scripts don't like working on hidden elements\n\n\t\t// and attach event handler to adjust frame size every time the window\n\t\t// size changes\n\t\t$( window ).resize( () => {\n\t\t\t$iframe.height( $iframedoc.height() );\n\t\t} );\n\n\t\t$previewpane.show();\n\n\t\tconst newPreviewHeight = $iframedoc.height();\n\n\t\t$iframe.height( newPreviewHeight );\n\n\t\t$( 'html, body' )\n\t\t.scrollTop( $( 'html, body' ).scrollTop() + newPreviewHeight - previewHeight )\n\t\t.animate( {\n\t\t\tscrollTop: $previewpane.offset().top\n\t\t}, 1000 );\n\n\t\tpreviewHeight = newPreviewHeight;\n\n\t\t$( () => {\n\t\t\twindow.dispatchEvent( new Event( 'resize' ) ); // It fixes form preview\n\t\t} );\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Called when the server has sent the preview\n\t *\n\t * @param {Mixed} result\n\t */\n\tconst resultReceivedHandler = function handleResultReceived( result ) {\n\n\t\tconst htm = result.result;\n\n\t\tlet $iframe = $previewpane.children();\n\n\t\tif ( $iframe.length === 0 ) {\n\n\t\t\t// set initial height of preview area\n\t\t\tpreviewHeight = 0;\n\n\t\t\t$iframe = $( '<iframe>' )\n\t\t\t.css( { //FIXME: Should this go in a style file?\n\t\t\t\t'width': '100%',\n\t\t\t\t'height': previewHeight,\n\t\t\t\t'border': 'none',\n\t\t\t\t'overflow': 'hidden'\n\t\t\t} )\n\t\t\t.load( loadFrameHandler )\n\t\t\t.appendTo( $previewpane );\n\n\t\t}\n\n\t\tconst ifr = $iframe[0];\n\t\tconst doc = ifr.contentDocument || ifr.contentWindow.document || ifr.Document;\n\n\t\tdoc.open();\n\t\tdoc.write( htm );\n\t\tdoc.close();\n\n\t};\n\n\t/**\n\t * Called when the preview button was clicked\n\t */\n\tconst previewButtonClickedHandler = function handlePreviewButtonClicked() {\n\n\t\tif ( !validateAll() ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// data array to be sent to the server\n\t\tconst data = {\n\t\t\taction: 'pfautoedit',\n\t\t\tformat: 'json'\n\t\t};\n\n\t\t// do we have a URL like .../index.php?title=pagename&action=formedit ?\n\t\tif ( mw.config.get( 'wgAction' ) === 'formedit' ) {\n\n\t\t\t// set the title, server has to find a suitable form\n\t\t\tdata.target = mw.config.get( 'wgPageName' );\n\n\t\t\t// do we have a URL like .../Special:FormEdit/formname/pagename ?\n\t\t} else if ( mw.config.get( 'wgCanonicalNamespace' ) === 'Special' && mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {\n\n\t\t\t// get the pagename and split it into parts\n\t\t\tconst pageName = mw.config.get( 'wgPageName' );\n\t\t\tconst parts = pageName.split( '/' );\n\n\t\t\tif ( mw.util.getParamValue( 'form' ) ) {\n\t\t\t\tdata.form = mw.util.getParamValue( 'form' );\n\t\t\t} else if ( parts.length > 1 ) { // found a formname\n\t\t\t\tdata.form = parts[1];\n\t\t\t}\n\n\t\t\tif ( mw.util.getParamValue( 'target' ) ) {\n\t\t\t\tdata.target = mw.util.getParamValue( 'target' );\n\t\t\t} else if ( parts.length > 2 ) { // found a pagename\n\t\t\t\t// Put the name back together, if it contains slashes.\n\t\t\t\tdata.target = parts.slice(2).join( '/' );\n\t\t\t}\n\t\t}\n\n\t\t// add form values to the data\n\t\tdata.query = $form.serialize();\n\n\t\tif ( data.query.length > 0 ) {\n\t\t\tdata.query += '&';\n\t\t}\n\n\t\tdata.query += 'wpPreview=' + encodeURIComponent( $( this ).attr( 'value' ) );\n\n\t\t$.ajax( {\n\n\t\t\ttype: 'POST', // request type ( GET or POST )\n\t\t\turl: mw.util.wikiScript( 'api' ), // URL to which the request is sent\n\t\t\tdata: data, // data to be sent to the server\n\t\t\tdataType: 'json', // type of data expected back from the server\n\t\t\tsuccess: resultReceivedHandler // function to be called if the request succeeds\n\t\t} );\n\t};\n\n\t/**\n\t * Register plugin\n\t *\n\t *  @return {Mixed}\n\t */\n\t$.fn.pfAjaxPreview = function() {\n\n\t\t$form = this.closest( 'form' );\n\t\t$previewpane = $( '#wikiPreview' );\n\n\t\t// do some sanity checks\n\t\tif ( $previewpane.length === 0 || // no ajax preview without preview area\n\t\t\t$previewpane.contents().length > 0 || // preview only on an empty previewpane\n\t\t\t$form.length === 0 ) { // no ajax preview without form\n\n\t\t\treturn this;\n\t\t}\n\n\t\t// register event handler\n\t\tthis.click( previewButtonClickedHandler );\n\n\t\treturn this;\n\t};\n\n\t$( () => {\n\t\tif ( mw.config.get( 'wgAction' ) === 'formedit' ||\n\t\t\tmw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {\n\t\t\t$( '#wpPreview' ).pfAjaxPreview();\n\t\t\t$( document ).on( 'VEForAllLoaded', () => {\n\t\t\t\tif ( $('.visualeditor').length > 0 ) {\n\t\t\t\t\t$( '#wpPreview' ).off('click', previewButtonClickedHandler).on('click', ( event ) => {\n\t\t\t\t\t\tmw.pageFormsActivateVEFields( () => {\n\t\t\t\t\t\t\tpreviewButtonClickedHandler( event );\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}\n\t} );\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_rating.js","messages":[{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":43,"column":4,"nodeType":"CallExpression","endLine":43,"endColumn":40}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"( function( $, mw, pf ) {\n\t'use strict';\n\n\tjQuery.fn.applyRatingInput = function( fromCalendar ) {\n\t\tconst starWidth = $(this).attr('data-starwidth');\n\t\tlet curValue = '';\n\t\tif ( starWidth === undefined ) {\n\t\t\t// This is probably because we're in a multple-instance\n\t\t\t// template \"starter\", but, in any case, just exit.\n\t\t\treturn;\n\t\t}\n\n\t\tif( fromCalendar !== undefined ) {\n\t\t\tcurValue = fromCalendar;\n\t\t} else {\n\t\t\tcurValue = $(this).attr('data-curvalue');\n\t\t}\n\t\tif ( curValue === '' || curValue === undefined ) {\n\t\t\tcurValue = 0;\n\t\t}\n\t\tconst numStars = $(this).attr('data-numstars');\n\t\tconst allowsHalf = $(this).attr('data-allows-half');\n\t\tconst disabled = $(this).attr('disabled');\n\t\tconst ratingsSettings = {\n\t\t\tnormalFill: '#ddd',\n\t\t\tstarWidth: starWidth,\n\t\t\tnumStars: numStars,\n\t\t\tmaxValue: numStars,\n\t\t\trating: curValue\n\t\t};\n\t\tif ( allowsHalf === undefined ) {\n\t\t\tratingsSettings.fullStar = true;\n\t\t} else {\n\t\t\tratingsSettings.halfStar = true;\n\t\t}\n\t\tif ( disabled === \"disabled\" ) {\n\t\t\tratingsSettings.readOnly = true;\n\t\t}\n\n\t\t$(this).rateYo(ratingsSettings)\n\t\t.on(\"rateyo.set\", function (e, data) {\n\n\t\t\t$(this).parent().children(\":hidden\").attr(\"value\", data.rating);\n\t\t});\n\t};\n\n}( jQuery, mediaWiki, pf ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_regexp.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_simpleupload.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":5,"column":1,"nodeType":"Block","endLine":5,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":6,"column":1,"nodeType":"Block","endLine":6,"endColumn":1},{"ruleId":"prefer-const","severity":1,"message":"'loadingImage' is never reassigned. Use 'const' instead.","line":45,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":45,"endColumn":16}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Javascript Code to enable simple upload functionality using OOUI's SelectFileInputWidget\n * for \"combobox\" and \"text\" input types\n *\n * @param $\n * @param mw\n * @author Nischay Nahata\n * @author Yaron Koren\n * @author Yash Varshney\n */\n\n( function( $, mw ) {\n\t$.fn.initializeSimpleUpload = function() {\n\n\t\tconst inputSpan = this.parent();\n\t\tconst uploadWidget = new OO.ui.SelectFileInputWidget( {\n\t\t\tbutton: {\n\t\t\t\tflags: [\n\t\t\t\t\t'progressive'\n\t\t\t\t],\n\t\t\t\ticon: 'upload',\n\t\t\t\tlabel: mw.message( 'pf-simpleupload' ).text()\n\t\t\t},\n\t\t\tclasses: [ 'simpleUpload' ]\n\t\t} );\n\n\t\tconst removeButton = new OO.ui.ButtonWidget( {\n\t\t\tlabel: mw.message( 'htmlform-cloner-delete' ).text(),\n\t\t\tflags: [\n\t\t\t\t'destructive'\n\t\t\t],\n\t\t\ticon: 'trash',\n\t\t\tclasses: [ 'simpleupload_rmv_btn' ]\n\t\t} );\n\n\t\tconst buttonRow = new OO.ui.HorizontalLayout( {\n\t\t\titems: [\n\t\t\t\tuploadWidget,\n\t\t\t\tremoveButton\n\t\t\t]\n\t\t} );\n\n\t\tlet input,\n\t\t\tcur_value = '',\n\t\t\tloadingImage = inputSpan.find('img.loading');\n\n\t\t// append a row of buttons for upload and remove\n\t\tinputSpan.find('span.simpleUploadInterface').append(buttonRow.$element);\n\n\t\tif ( inputSpan.attr('data-input-type') == 'combobox' ) {\n\t\t\tinput = inputSpan.find('input[role=\"combobox\"]');\n\t\t\tloadingImage.remove();\n\t\t\tinputSpan.prepend(loadingImage);\n\t\t\t// this has been done to align all buttons with combobox properly\n\t\t\t// in a horizontal manner\n\t\t\tinputSpan.find('span.simpleUploadInterface > div.oo-ui-layout').css( {\n\t\t\t\t'display': 'inline',\n\t\t\t\t'margin-left': '-15px'\n\t\t\t} );\n\t\t\tinputSpan.find('div.oo-ui-textInputWidget').css( {\n\t\t\t\t'margin-top': '-15px',\n\t\t\t\t'display': 'inline-block'\n\t\t\t} );\n\t\t\tinputSpan.find('div.simpleUpload').css('margin-top','-6px');\n\t\t\tinputSpan.find('span.simpleupload_rmv_btn').css('margin-top','-6px');\n\t\t} else {\n\t\t\tinput = inputSpan.find('input.createboxInput');\n\t\t}\n\n\t\tcur_value = input.val();\n\n\t\t// hide the remove button for now considering that no file is displayed\n\t\tremoveButton.$element.hide()\n\n\t\t// remove the input part from SelectInputWidget leaving only button\n\t\tinputSpan.find('div.oo-ui-actionFieldLayout-input').remove();\n\t\t// adjust the size of the parent div\n\t\tinputSpan.find('div.simpleUpload').css('width', '100px');\n\t\tif ( inputSpan.attr('data-input-type') == 'text' ) {\n\t\t\tinput.hide();\n\t\t}\n\n\t\tif ( cur_value !== '' && typeof cur_value !== 'undefined' ) {\n\t\t\tlet previewURL = mw.config.get('wgArticlePath').replace('$1', 'Special:Redirect/file/' + encodeURIComponent( cur_value ) );\n\t\t\tpreviewURL += ( !previewURL.includes('?') ) ? '?' : '&';\n\t\t\tpreviewURL += 'width=100';\n\t\t\tinputSpan.prepend($('<img class=\"simpleupload_prv\" src=\"' + previewURL + '\">'));\n\n\t\t\t// now display the remove button for removing the file displayed\n\t\t\tremoveButton.$element.show();\n\t\t}\n\n\t\tremoveButton.$element.find('a').click( () => {\n\t\t\tinputSpan.find('img.simpleupload_prv').remove();\n\t\t\tcur_value = '';\n\t\t\tinput.val('');\n\t\t\tremoveButton.$element.hide();\n\t\t});\n\n\t\tinputSpan.find('span.simpleUploadInterface').find('input[type=\"file\"]').change( (event) => {\n\t\t\tconst fileToUpload = event.target.files[0]; // get (first) File\n\t\t\tconst fileName = event.target.files[0].name;\n\n\t\t\tconst formdata = new FormData(); // see https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects\n\t\t\tformdata.append(\"action\", \"upload\");\n\t\t\tformdata.append(\"format\", \"json\");\n\t\t\tformdata.append(\"ignorewarnings\", \"true\");\n\t\t\tformdata.append(\"filename\", fileName);\n\t\t\tformdata.append(\"token\", mw.user.tokens.get( 'csrfToken' ) );\n\t\t\tformdata.append(\"file\", fileToUpload);\n\n\t\t\tloadingImage.show();\n\t\t\t// As we now have created the data to send, we send it...\n\t\t\t$.ajax( { // http://stackoverflow.com/questions/6974684/how-to-send-formdata-objects-with-ajax-requests-in-jquery\n\t\t\t\turl: mw.util.wikiScript( 'api' ), // url to api.php\n\t\t\t\tcontentType:false,\n\t\t\t\tprocessData:false,\n\t\t\t\ttype:'POST',\n\t\t\t\tdata: formdata,// the formdata object we created above\n\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t// do what you like, console logs are just for demonstration :-)\n\t\t\t\t\tif ( !data.error ) {\n\t\t\t\t\t\tcur_value = fileName;\n\n\t\t\t\t\t\t// give the fileName to the field overwriting whatever was wrtitten there\n\t\t\t\t\t\tinput.val(fileName);\n\n\t\t\t\t\t\tinputSpan.find('img.simpleupload_prv').remove();\n\t\t\t\t\t\tlet imagePreviewURL = mw.config.get('wgArticlePath').replace( '$1', 'Special:Redirect/file/' + encodeURIComponent( cur_value ) );\n\t\t\t\t\t\timagePreviewURL += ( !imagePreviewURL.includes('?') ) ? '?' : '&';\n\t\t\t\t\t\timagePreviewURL += 'width=100';\n\t\t\t\t\t\tinputSpan.prepend('<img class=\"simpleupload_prv\" src=\"' + imagePreviewURL + '\">');\n\t\t\t\t\t\tloadingImage.hide();\n\t\t\t\t\t\tremoveButton.$element.show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\twindow.alert(\"Error: \" + data.error.info);\n\t\t\t\t\t\t// if any error pops up, just hide the remove button\n\t\t\t\t\t\tremoveButton.$element.hide();\n\t\t\t\t\t\tloadingImage.hide();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function( xhr,status, error ) {\n\t\t\t\t\twindow.alert('Something went wrong! Please check the log for errors');\n\t\t\t\t\tremoveButton.$element.hide();\n\t\t\t\t\tloadingImage.hide();\n\t\t\t\t\tmw.log(error);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t};\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_spreadsheet.js","messages":[{"ruleId":"prefer-const","severity":1,"message":"'editor' is never reassigned. Use 'const' instead.","line":326,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":326,"endColumn":9},{"ruleId":"prefer-const","severity":1,"message":"'templateName' is never reassigned. Use 'const' instead.","line":373,"column":7,"nodeType":"Identifier","messageId":"useConst","endLine":373,"endColumn":19},{"ruleId":"prefer-const","severity":1,"message":"'formName' is never reassigned. Use 'const' instead.","line":374,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":374,"endColumn":12},{"ruleId":"prefer-const","severity":1,"message":"'editMultiplePages' is never reassigned. Use 'const' instead.","line":376,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":376,"endColumn":21},{"ruleId":"es-x/no-for-of-loops","severity":1,"message":"ES2015 'for-of' statements are forbidden.","line":394,"column":3,"nodeType":"ForOfStatement","messageId":"forbidden","endLine":429,"endColumn":4},{"ruleId":"es-x/no-for-of-loops","severity":1,"message":"ES2015 'for-of' statements are forbidden.","line":440,"column":3,"nodeType":"ForOfStatement","messageId":"forbidden","endLine":442,"endColumn":4},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":534,"column":5,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":534,"endColumn":17},{"ruleId":"es-x/no-for-of-loops","severity":1,"message":"ES2015 'for-of' statements are forbidden.","line":687,"column":6,"nodeType":"ForOfStatement","messageId":"forbidden","endLine":698,"endColumn":7},{"ruleId":"es-x/no-for-of-loops","severity":1,"message":"ES2015 'for-of' statements are forbidden.","line":690,"column":7,"nodeType":"ForOfStatement","messageId":"forbidden","endLine":696,"endColumn":8},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":706,"column":6,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":706,"endColumn":19},{"ruleId":"no-shadow","severity":1,"message":"'columnParams' is already declared in the upper scope on line 853 column 11.","line":751,"column":12,"nodeType":"Identifier","messageId":"noShadow","endLine":751,"endColumn":24},{"ruleId":"prefer-const","severity":1,"message":"'numberOfColumns' is never reassigned. Use 'const' instead.","line":863,"column":10,"nodeType":"Identifier","messageId":"useConst","endLine":863,"endColumn":25},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":863,"column":28,"nodeType":"CallExpression","endLine":863,"endColumn":62},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":867,"column":6,"nodeType":"CallExpression","endLine":867,"endColumn":40},{"ruleId":"prefer-const","severity":1,"message":"'templateName' is never reassigned. Use 'const' instead.","line":924,"column":7,"nodeType":"Identifier","messageId":"useConst","endLine":924,"endColumn":19},{"ruleId":"prefer-const","severity":1,"message":"'table' is never reassigned. Use 'const' instead.","line":925,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":925,"endColumn":9},{"ruleId":"prefer-const","severity":1,"message":"'editMultiplePages' is never reassigned. Use 'const' instead.","line":927,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":927,"endColumn":21},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":928,"column":27,"nodeType":"CallExpression","endLine":928,"endColumn":61},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Positional selector extensions are not allowed","line":933,"column":4,"nodeType":"CallExpression","endLine":933,"endColumn":38}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":19,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Code to integrate the jExcel JavaScript library into Page Forms.\n *\n * @author Yaron Koren\n * @author Balabky9\n * @author Amr El-Absy\n */\n\n// @TODO - make this based on the API limit, which in turn is based on whether the user has the \"apihighlimits\" right.\nconst numPagesToQuery = 50;\nconst saveIcon = '<span class=\"oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-check oo-ui-labelElement-invisible oo-ui-iconWidget\" aria-disabled=\"false\" title=\"' + mw.message( 'upload-dialog-button-save' ).escaped() + '\"></span>';\nconst cancelIcon = '<span class=\"oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-close oo-ui-labelElement-invisible oo-ui-iconWidget\" aria-disabled=\"false\" title=\"' + mw.message( 'cancel' ).escaped() + '\"></span>';\nconst addIcon = '<span class=\"oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-add oo-ui-labelElement-invisible oo-ui-iconWidget\" aria-disabled=\"false\" title=\"' + mw.message( 'apisandbox-add-multi' ).escaped() + '\"></span>';\nconst upIcon = '<span class=\"oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-upTriangle oo-ui-labelElement-invisible oo-ui-iconWidget\" aria-disabled=\"false\" title=\"' + 'Raise' + '\"></span>';\nconst downIcon = '<span class=\"oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-downTriangle oo-ui-labelElement-invisible oo-ui-iconWidget\" aria-disabled=\"false\" title=\"' + 'Lower' + '\"></span>';\nconst deleteIcon = '<span class=\"oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement oo-ui-iconElement-icon oo-ui-icon-trash oo-ui-labelElement-invisible oo-ui-iconWidget\" aria-disabled=\"false\" title=\"' + mw.message( 'delete' ).escaped() + '\"></span>';\nconst manageColumnTitle = '\\u2699';\nconst dataValues = [];\n\n( function( jexcel, mw ) {\n\tconst baseUrl = mw.config.get( 'wgScriptPath' );\n\tmw.spreadsheets = {};\n\n\t// Handle any possible Boolean values from the wiki page.\n\tjexcel.prototype.valueIsYes = function(value) {\n\t\tif ( value === null ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( typeof value === 'boolean' ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( typeof value === 'string' ) {\n\t\t\tvalue = value.toLowerCase();\n\t\t}\n\t\tconst possibleYesMessages = [\n\t\t\tmw.config.get( 'wgPageFormsContLangYes' ).toLowerCase(),\n\t\t\t// Add in '1', and some hardcoded English.\n\t\t\t'1', 'yes', 'true'\n\t\t];\n\t\treturn ( possibleYesMessages.includes(value) );\n\t};\n\n\tjexcel.prototype.getjExcelValue = function( mwValue, columnAttributes ) {\n\t\tlet date,\n\t\t\tmonthNum;\n\t\tif ( mwValue == null ) {\n\t\t\treturn null;\n\t\t}\n\t\tmwValue = this.decodeValues( mwValue );\n\t\tif ( columnAttributes['type'] == 'checkbox' ) {\n\t\t\treturn jexcel.prototype.valueIsYes(mwValue);\n\t\t} else if ( columnAttributes['list'] == true ) {\n\t\t\t// The list delimiter unfortunately can't be set for\n\t\t\t// jExcel - it's hardcoded to a semicolon - and values\n\t\t\t// can't have spaces around them. So we have to\n\t\t\t// modify the current value for it to be handled\n\t\t\t// correctly.\n\t\t\tconst individualValues = mwValue.split( columnAttributes['delimiter'] );\n\t\t\treturn $.map( individualValues, $.trim ).join(';');\n\t\t} else if ( columnAttributes['type'] == 'date' ) {\n\t\t\tdate = new Date( mwValue );\n\t\t\t// Avoid timezone strangeness.\n\t\t\tdate.setTime( date.getTime() + 60000 * date.getTimezoneOffset());\n\t\t\tmonthNum = date.getMonth() + 1;\n\t\t\treturn date.getFullYear() + '-' + monthNum + '-' + date.getDate();\n\t\t} else if ( columnAttributes['type'] == 'datetime' ) {\n\t\t\tdate = new Date( mwValue );\n\t\t\t// Avoid timezone strangeness, if what we're handling\n\t\t\t// is just a date.\n\t\t\tif ( ! mwValue.includes(':') ) {\n\t\t\t\tdate.setTime( date.getTime() + 60000 * date.getTimezoneOffset());\n\t\t\t}\n\t\t\tmonthNum = date.getMonth() + 1;\n\t\t\treturn date.getFullYear() + '-' + monthNum + '-' + date.getDate() +\n\t\t\t\t' ' + date.getHours() + ':' + date.getMinutes();\n\t\t} else {\n\t\t\treturn mwValue;\n\t\t}\n\t}\n\n\tjexcel.prototype.getMWValueFromCell = function( $cell, columnAttributes ) {\n\t\tlet jExcelValue;\n\t\tif ( columnAttributes['type'] == 'checkbox' ) {\n\t\t\tjExcelValue = $cell.find('input').prop( 'checked' );\n\t\t} else {\n\t\t\tjExcelValue = $cell.html();\n\t\t}\n\t\treturn jexcel.prototype.getMWValueFromjExcelValue( jExcelValue, columnAttributes );\n\t}\n\n\tjexcel.prototype.getMWValueFromjExcelValue = function( jExcelValue, columnAttributes ) {\n\t\tif ( jExcelValue == null ) {\n\t\t\treturn null;\n\t\t}\n\t\tjExcelValue = this.decodeValues( jExcelValue );\n\t\tif ( columnAttributes['type'] == 'checkbox' ) {\n\t\t\treturn ( jExcelValue == 'true' ) ?\n\t\t\t\tmw.config.get( 'wgPageFormsContLangYes' ) :\n\t\t\t\tmw.config.get( 'wgPageFormsContLangNo' );\n\t\t} else if ( columnAttributes['list'] == true ) {\n\t\t\tconst delimiter = columnAttributes['delimiter'] + ' ';\n\t\t\treturn jExcelValue.replace(/;/g, delimiter);\n\t\t} else if ( columnAttributes['type'] == 'date' || columnAttributes['type'] == 'datetime' ) {\n\t\t\treturn jExcelValue;\n\t\t} else {\n\t\t\tconst mwValue = jExcelValue.replace( /\\<br\\>/g, \"\\n\" );\n\t\t\treturn mwValue;\n\t\t}\n\t}\n\n\tjexcel.prototype.generateQueryStringForSave = function( formName, templateName, pageName, rowValues, columns ) {\n\t\tlet queryString = 'form=' + formName + '&target=' + encodeURIComponent( pageName );\n\t\tlet curColumn;\n\t\tfor ( const columnName in rowValues ) {\n\t\t\tif ( columnName == 'page' ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor ( const columnNum in columns ) {\n\t\t\t\tif ( columns[columnNum]['title'] == columnName ) {\n\t\t\t\t\tcurColumn = columns[columnNum];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tqueryString += '&' + templateName + '[' + columnName + ']=' +\n\t\t\t\tencodeURIComponent( jexcel.prototype.getMWValueFromjExcelValue( rowValues[columnName], curColumn ) );\n\t\t}\n\t\treturn queryString;\n\t}\n\n\tjexcel.prototype.saveChanges = function( spreadsheetID, templateName, pageName, newPageName, formName, rowNum, rowValues, columns, editMultiplePages ) {\n\t\t$(\"div#\" + spreadsheetID + \" table.jexcel td[data-y = \" + rowNum + \"]\").not(\".jexcel_row\").each( function() {\n\t\t\tconst columnNum = $(this).attr(\"data-x\");\n\t\t\tconst curColumn = columns[columnNum]['title'];\n\t\t\tconst curValue = rowValues[curColumn];\n\t\t\tif ( rowValues[curColumn] !== undefined ) {\n\t\t\t\tmw.spreadsheets[spreadsheetID].setValue( this, curValue );\n\t\t\t}\n\t\t});\n\n\t\tif ( editMultiplePages === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst data = {\n\t\t\taction: 'pfautoedit',\n\t\t\tformat: 'json',\n\t\t\tquery: jexcel.prototype.generateQueryStringForSave( formName, templateName, pageName, rowValues, columns )\n\t\t};\n\t\treturn $.ajax({\n\t\t\ttype: 'POST',\n\t\t\turl: baseUrl + '/api.php',\n\t\t\tdata: data,\n\t\t\tdataType: 'json',\n\t\t\tsuccess: function(successData) {\n\t\t\t\tif ( newPageName !== '' && newPageName !== undefined && newPageName !== pageName ) {\n\t\t\t\t\tjexcel.prototype.movePage( pageName, newPageName );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tjexcel.prototype.getToken = function() {\n\t\tconst url = baseUrl + '/api.php?action=query&format=json&meta=tokens&type=csrf';\n\t\treturn $.post( url );\n\t}\n\n\tjexcel.prototype.movePage = function( fromPage, toPage ) {\n\t\treturn $.when( jexcel.prototype.getToken() ).then( ( postResult ) => {\n\t\t\tconst data = {\n\t\t\t\ttoken: postResult.query.tokens.csrftoken\n\t\t\t};\n\t\t\tconst query = 'from=' + encodeURIComponent( fromPage ) + \"&to=\" + encodeURIComponent( toPage ) + \"&movetalk&noredirect\";\n\t\t\treturn $.ajax( {\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: baseUrl + '/api.php?action=move&format=json&' + query,\n\t\t\t\tdataType: 'json',\n\t\t\t\tdata: data\n\t\t\t} );\n\t\t});\n\t}\n\n\tjexcel.prototype.cancelChanges = function( spreadsheetID, rowValues, rowNum, columnNames ) {\n\t\t$(\"div#\" + spreadsheetID + \" table.jexcel td[data-y = \" + rowNum + \"]\").not(\".jexcel_row\").each( function() {\n\t\t\tconst columnNum = $(this).attr(\"data-x\");\n\t\t\tconst curColumn = columnNames[columnNum];\n\t\t\tif ( rowValues[curColumn] !== undefined ) {\n\t\t\t\tmw.spreadsheets[spreadsheetID].setValue( this, rowValues[curColumn] );\n\t\t\t} else {\n\t\t\t\tmw.spreadsheets[spreadsheetID].setValue( this, \"\" );\n\t\t\t}\n\t\t} );\n\n\t\t$(\"div#\" + spreadsheetID + \" td[data-y = \" + rowNum + \"] .save-changes\").each( function() {\n\t\t\t$(this).parent().hide();\n\t\t\t$(this).parent().siblings('.mit-row-icons').show();\n\t\t} );\n\t}\n\n\t// Add a new page.\n\tjexcel.prototype.saveNewRow = function( spreadsheetID, templateName, formName, rowNum, pageName, rowValues, columns, editMultiplePages ) {\n\t\tconst $manageCell = $( \"div#\" + spreadsheetID + \" td[data-y=\" + rowNum + \"]\" ).last();\n\n\t\tconst spanContents = '<a href=\"#\" class=\"save-changes\">' + saveIcon + '</a> | ' +\n\t\t\t'<a href=\"#\" class=\"cancel-changes\">' + cancelIcon + '</a>';\n\n\t\t$manageCell.children('span.save-or-cancel')\n\t\t\t.attr('id', 'page-span-' + pageName)\n\t\t\t.html( spanContents )\n\t\t\t.hide();\n\n\t\tif ( editMultiplePages == undefined ) {\n\t\t\t$manageCell.children('.mit-row-icons').show();\n\t\t\treturn;\n\t\t}\n\n\t\tconst data = {\n\t\t\taction: 'pfautoedit',\n\t\t\tformat: 'json',\n\t\t\tquery: jexcel.prototype.generateQueryStringForSave( formName, templateName, pageName, rowValues, columns )\n\t\t};\n\t\treturn $.ajax( {\n\t\t\ttype: 'POST',\n\t\t\turl: baseUrl + '/api.php',\n\t\t\tdata: data,\n\t\t\tdataType: 'json'\n\t\t} );\n\t}\n\n\t// Decode values\n\tjexcel.prototype.decodeValues = function( value ) {\n\t\tvalue = $('<div />').html( value ).text();\n\t\treturn value;\n\t}\n\n\tjexcel.prototype.deleteRow = function( spreadsheetID, rowNum ) {\n\t\trowNum = parseInt(rowNum);\n\t\tmw.spreadsheets[spreadsheetID].deleteRow(rowNum);\n\t\tdataValues[spreadsheetID].splice(rowNum, 1);\n\t}\n\n\tjexcel.prototype.getAutocompleteAttributes = function( cell ) {\n\t\tlet autocompletedatatype = jQuery(cell).attr('data-autocomplete-data-type');\n\t\tlet autocompletesettings = jQuery(cell).attr('data-autocomplete-settings');\n\t\tif ( autocompletedatatype == undefined || autocompletesettings == undefined ) {\n\t\t\t// that means we are in Special:MultipageEdit\n\t\t\t// here we take attributes from the column head,\n\t\t\t// to use other types of autocompletion( apart from\n\t\t\t// \"cargo field\" and \"property\" ), the attributes in\n\t\t\t// each cell can also be set.\n\t\t\tconst data_x = jQuery(cell).attr('data-x');\n\t\t\tconst $table = jQuery(cell).parents().find('table');\n\t\t\tautocompletedatatype = jQuery($table).find('thead td[data-x=\"'+data_x+'\"]').attr('data-autocomplete-data-type');\n\t\t\tautocompletesettings = jQuery($table).find('thead td[data-x=\"'+data_x+'\"]').attr('data-autocomplete-settings');\n\t\t}\n\t\treturn {\n\t\t\tautocompletedatatype: autocompletedatatype, autocompletesettings: autocompletesettings\n\t\t};\n\t}\n\n\t// If a field is dependent on some other field in the form\n\t// then it returns its name.\n\tjexcel.prototype.dependenton = function(origname) {\n\t\tconst wgPageFormsDependentFields = mw.config.get('wgPageFormsDependentFields');\n\t\t\tfor (let i = 0; i < wgPageFormsDependentFields.length; i++) {\n\t\t\t\tconst dependentFieldPair = wgPageFormsDependentFields[i];\n\t\t\t\tif (dependentFieldPair[1] === origname) {\n\t\t\t\t\treturn dependentFieldPair[0];\n\t\t\t\t}\n\t\t\t}\n\t};\n\n\tjexcel.prototype.getEditorForAutocompletion = function( inputType, x, y, autocompletedatatype, autocompletesettings, cell, type ) {\n\t\tlet editor;\n\t\tlet pfSpreadsheetAutocomplete = false,\n\t\t\twidget;\n\t\tconst config = {\n\t\t\tdata_x: x,\n\t\t\tdata_y: y,\n\t\t\tautocompletedatatype: autocompletedatatype,\n\t\t};\n\t\tif ( autocompletedatatype == 'category' || autocompletedatatype == 'cargo field'\n\t\t\t|| autocompletedatatype == 'property' || autocompletedatatype == 'concept' ) {\n\t\t\tpfSpreadsheetAutocomplete = true;\n\t\t\tconfig['autocompletesettings'] = autocompletesettings;\n\t\t\tif ( inputType == 'combobox' ) {\n\t\t\t\twidget = new pf.SpreadsheetComboBoxInput(config);\n\t\t\t} else {\n\t\t\t\twidget = new pf.spreadsheetAutocompleteWidget(config);\n\t\t\t}\n\t\t} else if ( autocompletedatatype == 'dep_on' ) {\n\t\t\t// values dependent on\n\t\t\tconst dep_on_field = jexcel.prototype.dependenton(cell.getAttribute('origname'));\n\t\t\tif ( dep_on_field !== null ) {\n\t\t\t\tpfSpreadsheetAutocomplete = true;\n\t\t\t\tconfig['autocompletesettings'] = cell.getAttribute('name');\n\t\t\t\tconfig['dep_on_field'] = dep_on_field;\n\t\t\t\tif ( inputType == 'combobox' ) {\n\t\t\t\t\twidget = new pf.SpreadsheetComboBoxInput(config);\n\t\t\t\t} else {\n\t\t\t\t\twidget = new pf.spreadsheetAutocompleteWidget(config);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// this is probably the case where some parameters are set\n\t\t\t\t// in a wrong way in form definition, in that case use the default jexcel editor\n\t\t\t\tpfSpreadsheetAutocomplete = false;\n\t\t\t}\n\t\t} else if ( autocompletedatatype == 'external data' ) {\n\t\t\t// values from external data\n\t\t\tif ( autocompletesettings == cell.getAttribute('origname') ) {\n\t\t\t\tpfSpreadsheetAutocomplete = true;\n\t\t\t\tconfig['autocompletesettings'] = autocompletesettings;\n\t\t\t\tif ( inputType == 'combobox' ) {\n\t\t\t\t\twidget = new pf.SpreadsheetComboBoxInput(config);\n\t\t\t\t} else {\n\t\t\t\t\twidget = new pf.spreadsheetAutocompleteWidget(config);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// this is probably the case where some autocomplete parameters are set\n\t\t\t\t// in a wrong way in form definition, in that case use the default jexcel editor\n\t\t\t\tpfSpreadsheetAutocomplete = false;\n\t\t\t}\n\t\t}\n\n\t\teditor = pfSpreadsheetAutocomplete ? widget.$element[0] : document.createElement(type);\n\n\t\treturn {\n\t\t\teditor: editor, pfSpreadsheetAutocomplete: pfSpreadsheetAutocomplete\n\t\t};\n\t}\n\n\tjexcel.prototype.getValueToBeSavedAfterClosingEditor = function( cell, pfSpreadsheetAutocomplete, ooui_input_val ) {\n\t\tif (pfSpreadsheetAutocomplete) {\n\t\t\t// setting the value to be saved after closing the editor\n\t\t\treturn ooui_input_val;\n\t\t} else {\n\t\t\treturn cell.children[0].value;\n\t\t}\n\t}\n\n\tjexcel.prototype.setAutocompleteAttributesOfColumns = function( cell, gridParams, templateName, fieldNum ) {\n\t\t$(cell).attr( 'name', templateName + '[' + $(cell).attr('title') + ']' );\n\t\tif ( gridParams[templateName][fieldNum]['autocompletedatatype'] == undefined ) {\n\t\t\t$(cell).attr( 'data-autocomplete-data-type', '' );\n\t\t\t$(cell).attr( 'data-autocomplete-settings', '' );\n\t\t} else {\n\t\t\t$(cell).attr( 'data-autocomplete-data-type', gridParams[templateName][fieldNum]['autocompletedatatype'] );\n\t\t\t$(cell).attr( 'data-autocomplete-settings', gridParams[templateName][fieldNum]['autocompletesettings'] );\n\t\t}\n\t}\n\n\tjexcel.prototype.setAutocompleteAttributesOfCells = function( table, templateName, data_x, cell ) {\n\t\tconst autocompletedatatype = $(table).find('thead td[data-x=\"'+data_x+'\"]').attr('data-autocomplete-data-type'),\n\t\t\tautocompletesettings = $(table).find('thead td[data-x=\"'+data_x+'\"]').attr('data-autocomplete-settings');\n\t\t$(cell).attr({\n\t\t\t'name': templateName +'|'+$(table).find('thead td[data-x=\"'+data_x+'\"]').attr('title'),\n\t\t\t'origname': templateName +'['+$(table).find('thead td[data-x=\"'+data_x+'\"]').attr('title')+']',\n\t\t\t'data-autocomplete-data-type': autocompletedatatype,\n\t\t\t'data-autocomplete-settings': autocompletesettings\n\t\t});\n\t}\n\n})( jexcel, mediaWiki );\n\n( function( $, mw, pf ) {\n\tconst baseUrl = mw.config.get( 'wgScriptPath' ),\n\t\tgridParams = mw.config.get( 'wgPageFormsGridParams' ),\n\t\tgridValues = mw.config.get( 'wgPageFormsGridValues' );\n\n\t$( '.pfSpreadsheet' ).each( function() {\n\t\tconst table = this;\n\t\tlet templateName = $(this).attr( 'data-template-name' ),\n\t\t\tformName = $(this).attr( 'data-form-name' ),\n\t\t\tspreadsheetID = $(this).attr( 'id' ),\n\t\t\teditMultiplePages = $(this).attr( 'editMultiplePages' );\n\t\tconst columns = [];\n\n\t\t// Somewhat crude attempt at setting reasonable column widths,\n\t\t// based on the browser width and the number of columns, with\n\t\t// built-in maximum and minimum widths.\n\t\tconst numColumns = Object.keys(gridParams[templateName]).length;\n\t\tlet columnWidth = ( $('#content').width() - 150 ) / numColumns;\n\t\tif ( isNaN(columnWidth) ) {\n\t\t\tcolumnWidth = 200;\n\t\t}\n\t\tif ( columnWidth < 100 ) {\n\t\t\tcolumnWidth = 100;\n\t\t} else if ( columnWidth > 400 ) {\n\t\t\tcolumnWidth = 400;\n\t\t}\n\n\t\tlet columnName;\n\t\tfor ( const templateParam of gridParams[templateName] ) {\n\t\t\tcolumnName = templateParam['name'];\n\t\t\tconst columnType = templateParam['type'];\n\t\t\tlet jExcelType = 'text';\n\t\t\tconst columnAttributes = {\n\t\t\t\ttitle: columnName,\n\t\t\t\twidth: columnWidth + \"px\"\n\t\t\t};\n\t\t\tif ( columnType == 'checkbox' ) {\n\t\t\t\tjExcelType = 'checkbox';\n\t\t\t} else if ( columnType == 'date' ) {\n\t\t\t\tjExcelType = 'calendar';\n\t\t\t\tcolumnAttributes['options'] = {\n\t\t\t\t\tformat: 'YYYY-MM-DD'\n\t\t\t\t}\n\t\t\t} else if ( columnType == 'datetime' ) {\n\t\t\t\tjExcelType = 'calendar';\n\t\t\t\tcolumnAttributes['options'] = {\n\t\t\t\t\ttime: 1,\n\t\t\t\t\tformat: 'YYYY-MM-DD HH:MI'\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst allowedValues = templateParam['values'];\n\t\t\tif ( allowedValues !== undefined ) {\n\t\t\t\tjExcelType = 'dropdown';\n\t\t\t\tcolumnAttributes['source'] = allowedValues;\n\t\t\t\tif ( templateParam['list'] === true ) {\n\t\t\t\t\tcolumnAttributes['multiple'] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( jExcelType == 'text' ) {\n\t\t\t\tcolumnAttributes['wordWrap'] = true;\n\t\t\t}\n\t\t\tcolumnAttributes['type'] = jExcelType;\n\t\t\tcolumns.push( columnAttributes );\n\t\t}\n\n\t\t// One more column, for the management icons.\n\t\tcolumns.push( {\n\t\t\ttitle: manageColumnTitle,\n\t\t\twidth: \"100px\",\n\t\t\ttype: \"html\",\n\t\t\treadOnly: true\n\t\t} );\n\n\t\tconst columnNames = [];\n\t\tfor ( const column of columns ) {\n\t\t\tcolumnNames.push( column.title );\n\t\t}\n\n\t\tconst pageIDs = [];\n\t\tconst pagesData = [];\n\t\tconst myData = [];\n\t\tconst newPageNames = [];\n\t\tconst modifiedDataValues = [];\n\n\t\tif ( editMultiplePages == undefined ) {\n\t\t\tpopulateSpreadsheet();\n\t\t} else {\n\t\t\tgetPagesForTemplate( templateName, null );\n\t\t}\n\n\t\tfunction getPagesForTemplate( templateNamed, continueStr ) {\n\t\t\tlet apiUrl = baseUrl + '/api.php?action=query&format=json&list=embeddedin&eilimit=500&eititle=Template:' + templateNamed;\n\t\t\tif ( continueStr !== null ) {\n\t\t\t\tapiUrl += \"&eicontinue=\" + continueStr;\n\t\t\t}\n\t\t\t$.ajax({\n\t\t\t\t// We get 500 pages because that's the limit\n\t\t\t\t// for \"prop=revision\".\n\t\t\t\turl: apiUrl,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttype: 'POST',\n\t\t\t\tasync: false,\n\t\t\t\theaders: { 'Api-User-Agent': 'Example/1.0' },\n\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\tconst pageObjects = data.query.embeddedin;\n\t\t\t\t\tfor ( let i = 0; i < pageObjects.length; i++ ) {\n\t\t\t\t\t\tpageIDs.push(pageObjects[i].pageid);\n\t\t\t\t\t}\n\t\t\t\t\tif ( data.continue !== undefined ) {\n\t\t\t\t\t\tgetPagesForTemplate( templateNamed, data.continue.eicontinue );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgetAllPageDataAndPopulateSpreadsheet( 0 );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function(xhr, status, error){\n\t\t\t\t\tmw.notify( \"ERROR: Unable to retrieve pages for the selected template\", { type: 'error' } );\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Recursive function to get the contents of each page from\n\t\t// the API, some number of pages at a time.\n\t\tfunction getAllPageDataAndPopulateSpreadsheet( offset ) {\n\t\t\tconst curPageIDs = pageIDs.slice(offset, offset + numPagesToQuery);\n\t\t\tconst pageIDsStr = curPageIDs.join('|');\n\t\t\t$.ajax({\n\t\t\t\turl: baseUrl + '/api.php?action=query&format=json&prop=revisions&rvprop=content&rvslots=main&formatversion=2&pageids=' + pageIDsStr,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttype: 'POST',\n\t\t\t\theaders: { 'Api-User-Agent': 'Example/1.0' },\n\t\t\t\tsuccess: function(data) {\n\t\t\t\t\tif ( data.query == undefined ) {\n\t\t\t\t\t\t// There are no calls to this template.\n\t\t\t\t\t\tpopulateSpreadsheet();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tfor ( let pageNum = 0; pageNum < data.query.pages.length; pageNum++ ) {\n\t\t\t\t\t\tconst curRevision = data.query.pages[pageNum].revisions[0];\n\t\t\t\t\t\tconst pageContents = curRevision.slots.main.content;\n\t\t\t\t\t\tpagesData.push( {\n\t\t\t\t\t\t\ttitle: data.query.pages[pageNum].title,\n\t\t\t\t\t\t\tcontents: pageContents\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\tif ( curPageIDs.length == numPagesToQuery ) {\n\t\t\t\t\t\tgetAllPageDataAndPopulateSpreadsheet( offset + numPagesToQuery );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpopulateSpreadsheet();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction getTemplateCalls( pageContent, pageName ) {\n\t\t\t// Match all the template calls and their contents\n\t\t\tconst startDelimiter = '{{' + templateName.toLowerCase() + '\\\\b';\n\t\t\tconst endDelimiter = '}}';\n\t\t\tconst regex = new RegExp( startDelimiter, 'g' );\n\t\t\tconst contents = [];\n\t\t\tlet contentStart, contentEnd;\n\t\t\tcontentStart = contentEnd = 0;\n\t\t\tlet match;\n\t\t\t// Parse contents of individual templates\n\t\t\twhile ( ( match = regex.exec( pageContent.toLowerCase() ) ) !== null ) {\n\t\t\t\tcontentStart = match['index'];\n\t\t\t\tlet content = '';\n\t\t\t\tlet numOpenCurlyBracketPairs = 1;\n\t\t\t\tlet curPos = contentStart + startDelimiter.length - 2;\n\t\t\t\tvar curPair;\n\t\t\t\tdo {\n\t\t\t\t\tconst curChar = pageContent.charAt(curPos);\n\t\t\t\t\tcurPair = curChar + pageContent.charAt(curPos + 1);\n\t\t\t\t\tif ( curPair == '{{' ) {\n\t\t\t\t\t\tnumOpenCurlyBracketPairs++;\n\t\t\t\t\t} else if ( curPair == '}}' ) {\n\t\t\t\t\t\tnumOpenCurlyBracketPairs--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( numOpenCurlyBracketPairs > 0 ) {\n\t\t\t\t\t\tcontent += curChar;\n\t\t\t\t\t}\n\t\t\t\t\tcurPos++;\n\t\t\t\t} while ( numOpenCurlyBracketPairs > 0 && curPair !== '' );\n\n\t\t\t\tcontent = content.trim();\n\t\t\t\t// If this is actually a call to a template with\n\t\t\t\t// a different name, ignore it.\n\t\t\t\tif ( content !== '' && content.charAt(0) !== '|' ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcontents.push( 'page=' + pageName + content );\n\t\t\t}\n\t\t\treturn contents;\n\t\t}\n\n\t\tfunction getTemplateParams( templateText ) {\n\t\t\tconst params = [];\n\t\t\tif ( templateText == '' ) {\n\t\t\t\treturn params;\n\t\t\t}\n\n\t\t\tlet numOpenCurlyBrackets = 0;\n\t\t\tlet numOpenSquareBrackets = 0;\n\t\t\tlet curReturnValue = '';\n\n\t\t\tfor ( let i = 0; i < templateText.length; i++ ) {\n\t\t\t\tconst curChar = templateText.charAt(i);\n\t\t\t\tif ( curChar == '{' ) {\n\t\t\t\t\tnumOpenCurlyBrackets++;\n\t\t\t\t} else if ( curChar == '}' ) {\n\t\t\t\t\tnumOpenCurlyBrackets--;\n\t\t\t\t}\n\t\t\t\tif ( curChar == '[' ) {\n\t\t\t\t\tnumOpenSquareBrackets++;\n\t\t\t\t} else if ( curChar == ']' ) {\n\t\t\t\t\tnumOpenSquareBrackets--;\n\t\t\t\t}\n\n\t\t\t\tif ( curChar == '|' && numOpenCurlyBrackets == 0 && numOpenSquareBrackets == 0 ) {\n\t\t\t\t\tparams.push( curReturnValue.trim() );\n\t\t\t\t\tcurReturnValue = '';\n\t\t\t\t} else {\n\t\t\t\t\tcurReturnValue += curChar;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparams.push( curReturnValue.trim() );\n\n\t\t\treturn params;\n\t\t}\n\n\t\t//(function getData () {\n\n\t\t\t// Called whenever the user makes a change to the data.\n\t\t\tfunction editMade( instance, cell, x, y, value ) {\n\t\t\t\tspreadsheetID = $(instance).attr('id');\n\t\t\t\tcolumnName = columnNames[x];\n\t\t\t\tif ( columnName === \"page\" ) {\n\t\t\t\t\tnewPageNames[y] = value;\n\t\t\t\t}\n\n\t\t\t\t// Update either the \"save\" or the \"add\" icon,\n\t\t\t\t// depending on which one exists for this row.\n\t\t\t\t$( \"div#\" + spreadsheetID + \" td[data-y = \" + y + \"] .save-changes\" ).each( function() {\n\t\t\t\t\tif ( modifiedDataValues[spreadsheetID] === undefined ) {\n\t\t\t\t\t\tmodifiedDataValues[spreadsheetID] = {};\n\t\t\t\t\t}\n\t\t\t\t\tconst pageName = $(this).parent().attr(\"id\").replace(\"page-span-\", \"\");\n\t\t\t\t\tif ( modifiedDataValues[spreadsheetID][y] === undefined ) {\n\t\t\t\t\t\t// Hacky way to do a \"deep copy\".\n\t\t\t\t\t\tmodifiedDataValues[spreadsheetID][y] = JSON.parse(JSON.stringify(dataValues[spreadsheetID][y]));\n\t\t\t\t\t}\n\t\t\t\t\tmodifiedDataValues[spreadsheetID][y][columnName] = value;\n\t\t\t\t\t// @HACK - there's probably a better way to only\n\t\t\t\t\t// attach one click listener to this icon.\n\t\t\t\t\t$(this).off();\n\t\t\t\t\t$(this).click( function( event ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tjexcel.prototype.saveChanges(\n\t\t\t\t\t\t\tspreadsheetID,\n\t\t\t\t\t\t\ttemplateName,\n\t\t\t\t\t\t\tpageName,\n\t\t\t\t\t\t\tnewPageNames[y],\n\t\t\t\t\t\t\tformName,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tmodifiedDataValues[spreadsheetID][y],\n\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\teditMultiplePages\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdataValues[spreadsheetID][y] = JSON.parse(JSON.stringify(modifiedDataValues[spreadsheetID][y]));\n\t\t\t\t\t\t$(this).parent().hide();\n\t\t\t\t\t\t$(this).parent().siblings('.mit-row-icons').show();\n\t\t\t\t\t} );\n\t\t\t\t\t// Use this opportunity to make the icons appear.\n\t\t\t\t\t$(this).parent().show();\n\t\t\t\t\t$(this).parent().siblings('.mit-row-icons').hide();\n\t\t\t\t});\n\t\t\t\t$(\"div#\" + spreadsheetID + \" td[data-y = \" + y + \"] .save-new-row\").each(function() {\n\t\t\t\t\tdataValues[spreadsheetID][y][columnName] = value;\n\t\t\t\t\t// @HACK - see above\n\t\t\t\t\t$(this).off();\n\t\t\t\t\t$(this).click( function( event ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tjexcel.prototype.saveNewRow(\n\t\t\t\t\t\t\tspreadsheetID,\n\t\t\t\t\t\t\ttemplateName,\n\t\t\t\t\t\t\tformName,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tnewPageNames[y],\n\t\t\t\t\t\t\tdataValues[spreadsheetID][y],\n\t\t\t\t\t\t\tcolumns,\n\t\t\t\t\t\t\teditMultiplePages\n\t\t\t\t\t\t);\n\t\t\t\t\t\t$(this).parent().hide();\n\t\t\t\t\t} );\n\t\t\t\t});\n\t\t\t\t$( \"div#\" + spreadsheetID + \" td[data-y = \" + y + \"] .cancel-changes\" ).each( function() {\n\t\t\t\t\t// @HACK - see above\n\t\t\t\t\t$(this).off();\n\t\t\t\t\t$(this).click( function( event ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tjexcel.prototype.cancelChanges(\n\t\t\t\t\t\t\tspreadsheetID,\n\t\t\t\t\t\t\tdataValues[spreadsheetID][y],\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tcolumnNames\n\t\t\t\t\t\t);\n\t\t\t\t\t\t$(this).parent().hide();\n\t\t\t\t\t\t$(this).parent().siblings('.mit-row-icons').show();\n\t\t\t\t\t} );\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Populate the starting spreadsheet.\n\t\t\tfunction populateSpreadsheet() {\n\t\t\t\tif ( dataValues[spreadsheetID] == undefined ) {\n\t\t\t\t\tdataValues[spreadsheetID] = [];\n\t\t\t\t}\n\t\t\t\tlet templateCalls = [];\n\t\t\t\tconst numRows = pagesData.length;\n\t\t\t\tlet columnNum;\n\t\t\t\tfor (let j = 0; j < numRows; j++) {\n\t\t\t\t\ttemplateCalls = getTemplateCalls(pagesData[j].contents, pagesData[j].title);\n\t\t\t\t\tfor (const templateCall of templateCalls) {\n\t\t\t\t\t\tconst fieldArray = getTemplateParams( templateCall );\n\t\t\t\t\t\tconst fieldValueObject = {};\n\t\t\t\t\t\tfor (const field of fieldArray) {\n\t\t\t\t\t\t\tconst equalPos = field.indexOf('=');\n\t\t\t\t\t\t\tlet fieldLabel = field.slice(0, Math.max(0, equalPos));\n\t\t\t\t\t\t\tconst fieldValue = field.slice(Math.max(0, equalPos + 1));\n\t\t\t\t\t\t\tfieldLabel = fieldLabel.trim();\n\t\t\t\t\t\t\tfieldValueObject[fieldLabel] = fieldValue.trim();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataValues[spreadsheetID].push(fieldValueObject);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif ( editMultiplePages == undefined ) {\n\t\t\t\t\tdataValues[spreadsheetID] = gridValues[templateName];\n\t\t\t\t}\n\t\t\t\tfor ( let rowNum = 0; rowNum < dataValues[spreadsheetID].length; rowNum++ ) {\n\t\t\t\t\tconst rowValues = dataValues[spreadsheetID][rowNum];\n\t\t\t\t\tvar pageName;\n\t\t\t\t\tfor ( columnNum = 0; columnNum < columnNames.length; columnNum++ ) {\n\t\t\t\t\t\tcolumnName = columnNames[columnNum];\n\t\t\t\t\t\tconst curValue = rowValues[columnName];\n\t\t\t\t\t\tif ( myData[rowNum] == undefined ) {\n\t\t\t\t\t\t\tmyData[rowNum] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( columnName == 'page' ) {\n\t\t\t\t\t\t\tpageName = curValue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( curValue !== undefined ) {\n\t\t\t\t\t\t\tconst jExcelValue = jexcel.prototype.getjExcelValue( curValue, gridParams[templateName][columnNum] );\n\t\t\t\t\t\t\tmyData[rowNum].push( jExcelValue );\n\t\t\t\t\t\t\tdataValues[spreadsheetID][rowNum][columnName] = jExcelValue;\n\t\t\t\t\t\t} else if ( columnName === manageColumnTitle ) {\n\t\t\t\t\t\t\tlet cellContents = '<span class=\"save-or-cancel\" style=\"display: none\" id=\"page-span-' + pageName + '\">' +\n\t\t\t\t\t\t\t\t'<a href=\"#\" class=\"save-changes\">' + saveIcon + '</a> | ' +\n\t\t\t\t\t\t\t\t'<a href=\"#\" class=\"cancel-changes\">' + cancelIcon + '</a>' +\n\t\t\t\t\t\t\t\t'</span>';\n\n\t\t\t\t\t\t\tif ( editMultiplePages === undefined ) {\n\t\t\t\t\t\t\t\tcellContents += '<span class=\"mit-row-icons\">' + // \"mit\" = \"multiple-instance template\"\n\t\t\t\t\t\t\t\t\t'<a href=\"#\" class=\"raise-row\">' + upIcon + '</a>' +\n\t\t\t\t\t\t\t\t\t' <a href=\"#\" class=\"lower-row\">' + downIcon + '</a>' +\n\t\t\t\t\t\t\t\t\t' | <a href=\"#\" class=\"delete-row\">' + deleteIcon + '</a>' +\n\t\t\t\t\t\t\t\t\t'</span>';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmyData[rowNum].push( cellContents );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmyData[rowNum].push(\"\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Called after a new row is added.\n\t\t\t\tfunction rowAdded(instance) {\n\t\t\t\t\tconst $instance = $(instance);\n\t\t\t\t\tconst spreadsheetId = $instance.attr('id');\n\t\t\t\t\trowAdded2( $instance, spreadsheetId );\n\t\t\t\t}\n\n\t\t\t\tfunction rowAdded2( $instance, spreadsheetId ) {\n\t\t\t\t\tconst $newRow = $instance.find(\"tr\").last();\n\t\t\t\t\tconst columnParams = gridParams[templateName];\n\t\t\t\t\tfor ( columnNum = 0; columnNum < columnParams.length; columnNum++ ) {\n\t\t\t\t\t\tconst defaultValue = columnParams[columnNum]['default'];\n\t\t\t\t\t\tif ( defaultValue == undefined ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet realDefaultValue = defaultValue;\n\t\t\t\t\t\t// Special handling for some default values.\n\t\t\t\t\t\tif ( defaultValue == 'now' ) {\n\t\t\t\t\t\t\tconst date = new Date();\n\t\t\t\t\t\t\tconst monthNum = date.getMonth() + 1;\n\t\t\t\t\t\t\trealDefaultValue = date.getFullYear() + '-' + monthNum + '-' + date.getDate() +\n\t\t\t\t\t\t\t\t' ' + date.getHours() + ':' + date.getMinutes();\n\t\t\t\t\t\t} else if ( defaultValue == 'current user' ) {\n\t\t\t\t\t\t\trealDefaultValue = mw.config.get( 'wgUserName' );\n\t\t\t\t\t\t} else if ( defaultValue == 'uuid' ) {\n\t\t\t\t\t\t\trealDefaultValue = window.pfGenerateUUID();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst $curCell = $newRow.find(\"td:nth-child(\" + ( columnNum + 2 ) + \")\");\n\t\t\t\t\t\t$curCell.html(realDefaultValue);\n\t\t\t\t\t}\n\t\t\t\t\tconst $cell = $newRow.find(\"td\").last();\n\t\t\t\t\tlet manageCellContents = '';\n\n\t\t\t\t\tif ( editMultiplePages === undefined ) {\n\t\t\t\t\t\tmanageCellContents = '<span class=\"mit-row-icons\">' +\n\t\t\t\t\t\t\t'<a href=\"#\" class=\"raise-row\">' + upIcon + '</a>' +\n\t\t\t\t\t\t\t' <a href=\"#\" class=\"lower-row\">' + downIcon + '</a>' +\n\t\t\t\t\t\t\t' | <a href=\"#\" class=\"delete-row\">' + deleteIcon + '</a>' +\n\t\t\t\t\t\t\t'</span>';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmanageCellContents = '<span class=\"save-or-cancel\">' +\n\t\t\t\t\t\t\t'<a class=\"save-new-row\">' + addIcon + '</a> | ' +\n\t\t\t\t\t\t\t'<a class=\"cancel-adding\">' + cancelIcon + '</a></span>';\n\t\t\t\t\t}\n\t\t\t\t\t$cell.html(manageCellContents);\n\n\t\t\t\t\t// Don't activate the \"add page\" icon\n\t\t\t\t\t// yet, because the row doesn't have a\n\t\t\t\t\t// page name.\n\t\t\t\t\t// @TODO - should the icon even be there?\n\t\t\t\t\t$cell.find(\"a.cancel-adding\").click( ( event ) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tjexcel.prototype.deleteRow(spreadsheetId, dataValues[spreadsheetId].length);\n\t\t\t\t\t} );\n\t\t\t\t\tif ( editMultiplePages === undefined ) {\n\t\t\t\t\t\t$cell.find(\"a.delete-row\").click( ( event ) => {\n\t\t\t\t\t\t\tconst y = $cell.attr(\"data-y\");\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tjexcel.prototype.deleteRow( spreadsheetId, y );\n\t\t\t\t\t\t\t//dataValues[spreadsheetId].splice(y, 1);\n\t\t\t\t\t\t} );\n\t\t\t\t\t\t$cell.find(\"a.raise-row\").click( ( event ) => {\n\t\t\t\t\t\t\tconst y = $cell.attr(\"data-y\");\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tif ( y > 0 ) {\n\t\t\t\t\t\t\t\tmw.spreadsheets[spreadsheetId].moveRow( y, y - 1 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t\t$cell.find(\"a.lower-row\").click( ( event ) => {\n\t\t\t\t\t\t\tconst curSpreadsheet = mw.spreadsheets[spreadsheetId];\n\t\t\t\t\t\t\tconst y = parseInt( $cell.attr(\"data-y\") );\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tif ( y + 1 < curSpreadsheet.getData().length ) {\n\t\t\t\t\t\t\t\tcurSpreadsheet.moveRow( y, y + 1 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Providing the autocomplete attributes whenever a new row is added\n\t\t\t\t\tif ( editMultiplePages === undefined ) {\n\t\t\t\t\t\t$(table).find('tbody td').not('.jexcel_row').each(function() {\n\t\t\t\t\t\t\tconst data_x = $(this).attr('data-x');\n\t\t\t\t\t\t\tjexcel.prototype.setAutocompleteAttributesOfCells( table, templateName, data_x, this );\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tdataValues[spreadsheetId].push( {} );\n\t\t\t\t}\n\n\t\t\t\tmw.spreadsheets[spreadsheetID] = jexcel( table, {\n\t\t\t\t\tdata: myData,\n\t\t\t\t\tcolumns: columns,\n\t\t\t\t\ttableOverflow: true,\n\t\t\t\t\tloadingSpin: true,\n\t\t\t\t\tonchange: editMade,\n\t\t\t\t\tcolumnSorting: true,\n\t\t\t\t\tallowInsertColumn: false,\n\t\t\t\t\tallowDeletingAllRows: true,\n\t\t\t\t\toninsertrow: rowAdded,\n\t\t\t\t\tcontextMenu: function() {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t\ttableHeight: \"2500px\",\n\t\t\t\t\tpagination: (editMultiplePages === undefined ) ? false : 100,\n\t\t\t\t\tsearch: (editMultiplePages !== undefined ),\n\t\t\t\t\tfilters: (editMultiplePages !== undefined ),\n\t\t\t\t\ttext: {\n\t\t\t\t\t\tsearch: mw.msg( 'search' )\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t// Set the \"label\" for columns that have a label defined.\n\t\t\t\tconst columnParams = gridParams[templateName];\n\t\t\t\tfor ( columnNum = 0; columnNum < columnParams.length; columnNum++ ) {\n\t\t\t\t\tconst columnLabel = columnParams[columnNum]['label'];\n\t\t\t\t\tif ( columnLabel == undefined ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t$(table).find('thead').find('td[data-x=' + columnNum + ']').html(columnLabel);\n\t\t\t\t}\n\n\t\t\t\tif ( editMultiplePages !== undefined ) {\n\t\t\t\t\tlet numberOfColumns = $(table).find('thead tr:first td').not('.jexcel_selectall').length,\n\t\t\t\t\t\tfieldNum = 0;\n\t\t\t\t\t// Provide the autocomplete attributes to each column of the spreadsheet\n\t\t\t\t\t// which is populated at the starting.\n\t\t\t\t\t$(table).find('thead tr:first td').not('.jexcel_selectall').each( function() {\n\t\t\t\t\t\t// to avoid the last column, used numberOfColumns-1\n\t\t\t\t\t\tif ( fieldNum < numberOfColumns-1 ) {\n\t\t\t\t\t\t\tjexcel.prototype.setAutocompleteAttributesOfColumns( this, gridParams, templateName, fieldNum );\n\t\t\t\t\t\t\tfieldNum++;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tconst addRowButton = new OO.ui.FieldLayout( new OO.ui.ButtonWidget( {\n\t\t\t\t\tclasses: [ 'add-row' ],\n\t\t\t\t\ticon: 'add',\n\t\t\t\t\tlabel: mw.msg( 'pf-spreadsheet-addrow' )\n\t\t\t\t} ) );\n\n\t\t\t\t$(table).append(addRowButton.$element);\n\n\t\t\t\t$('div#' + spreadsheetID + ' span.add-row').click( function( event ) {\n\t\t\t\t\tconst curSpreadsheet = mw.spreadsheets[spreadsheetID];\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( curSpreadsheet.getData().length > 0 ) {\n\t\t\t\t\t\tcurSpreadsheet.insertRow();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurSpreadsheet.setData([ ' ' ]);\n\t\t\t\t\t\tconst $curSpreadsheetDiv = $(this).closest('.pfSpreadsheet');\n\t\t\t\t\t\trowAdded2($curSpreadsheetDiv, spreadsheetID);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t$('div#' + spreadsheetID + ' a.raise-row').click( function( event ) {\n\t\t\t\t\tconst y = $(this).parents('td').attr(\"data-y\");\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( y > 0 ) {\n\t\t\t\t\t\tmw.spreadsheets[spreadsheetID].moveRow( y, y - 1 );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t$('div#' + spreadsheetID + ' a.lower-row').click( function( event ) {\n\t\t\t\t\tconst curSpreadsheet = mw.spreadsheets[spreadsheetID];\n\t\t\t\t\tconst y = parseInt( $(this).parents('td').attr(\"data-y\") );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( y + 1 < curSpreadsheet.getData().length ) {\n\t\t\t\t\t\tmw.spreadsheets[spreadsheetID].moveRow( y, y + 1 );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\t$('div#' + spreadsheetID + ' a.delete-row').click( function( event ) {\n\t\t\t\t\tconst y = $(this).parents('td').attr(\"data-y\");\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tjexcel.prototype.deleteRow( spreadsheetID, y );\n\t\t\t\t\t//dataValues[spreadsheetID].splice(y, 1);\n\t\t\t\t} );\n\n\t\t\t\t$('div#' + spreadsheetID + ' div.loadingImage').css( \"display\", \"none\" );\n\n\t\t\t}\n\t\t//})();\n\t});\n\n\t$('.pfSpreadsheet').each( function() {\n\t\tlet templateName = $(this).attr( 'data-template-name' ),\n\t\t\ttable = this,\n\t\t\tfieldNum = 0,\n\t\t\teditMultiplePages = $(this).attr('editmultiplepages');\n\t\tconst numberOfColumns = $(table).find('thead tr:first td').not('.jexcel_selectall').length;\n\n\t\tif ( editMultiplePages == undefined ) {\n\t\t\t// Provide the autocomplete attributes to each column of the spreadsheet\n\t\t\t// which is populated at the starting.\n\t\t\t$(table).find('thead tr:first td').not('.jexcel_selectall').each( function() {\n\t\t\t\t// to avoid the last column, used numberOfColumns-1\n\t\t\t\tif ( fieldNum < numberOfColumns-1 ) {\n\t\t\t\t\tjexcel.prototype.setAutocompleteAttributesOfColumns( this, gridParams, templateName, fieldNum );\n\t\t\t\t\tfieldNum++;\n\t\t\t\t}\n\t\t\t} );\n\t\t\t// Providing \"name\" and \"origname\" and autocomplete attributes to every cell of the spreadsheet\n\t\t\t$(table).find('tbody td').not('.jexcel_row').each(function() {\n\t\t\t\tconst data_x = $(this).attr('data-x');\n\t\t\t\tjexcel.prototype.setAutocompleteAttributesOfCells( table, templateName, data_x, this );\n\t\t\t});\n\t\t}\n\t} )\n\n\t// If this is a spreadsheet display within a form, create hidden\n\t// inputs for every cell when the form is submitted, so that all the\n\t// data will actually get submitted.\n\t$( \"#pfForm\" ).submit(( event ) => {\n\t\t$( '.pfSpreadsheet' ).each( function() {\n\t\t\tconst $grid = $(this),\n\t\t\t\ttemplateName = $(this).attr( 'data-template-name' ),\n\t\t\t\tformName = $(this).attr( 'data-form-name' ),\n\t\t\t\teditMultiplePages = $(this).attr( 'editMultiplePages' );\n\n\t\t\t// Add a hidden input for each template, so that the PHP code can know\n\t\t\t// which values came from a spreadsheet.\n\t\t\tif ( !editMultiplePages ) {\n\t\t\t\t$('<input>').attr( 'type', 'hidden' ).attr( 'name', 'spreadsheet_templates[' + templateName + ']' ).attr( 'value', 'true' ).appendTo( '#pfForm' );\n\t\t\t}\n\n\t\t\t$grid.find( \"td\" ).not('.readonly').each( function() {\n\t\t\t\tconst rowNum = $(this).attr('data-y');\n\t\t\t\tconst columnNum = $(this).attr('data-x');\n\t\t\t\tif ( rowNum == undefined || columnNum == undefined ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst mwValue = jexcel.prototype.getMWValueFromCell( $(this), gridParams[templateName][columnNum] );\n\t\t\t\tconst paramName = gridParams[templateName][columnNum].name;\n\t\t\t\tconst inputName = templateName + '[' + ( rowNum + 1 ) + '][' + paramName + ']';\n\t\t\t\t$('<input>').attr( 'type', 'hidden' ).attr( 'name', inputName ).attr( 'value', mwValue ).appendTo( '#pfForm' );\n\t\t\t});\n\t\t});\n\t});\n\n\n}( jQuery, mediaWiki, pf ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_submit.js","messages":[{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substring()`.","line":142,"column":46,"nodeType":"CallExpression","messageId":"substring","endLine":142,"endColumn":74},{"ruleId":"no-shadow","severity":1,"message":"'$form' is already declared in the upper scope on line 14 column 6.","line":175,"column":10,"nodeType":"Identifier","messageId":"noShadow","endLine":175,"endColumn":15}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Javascript handler for the save-and-continue button\n *\n * @author Stephan Gambke\n */\n\n/*global validateAll */\n\n( function( $, mw ) {\n\n\t'use strict';\n\n\tlet $sacButtons;\n\tlet $form;\n\n\tfunction setChanged( event ) {\n\t\t$sacButtons\n\t\t\t.addClass( 'pf-save_and_continue-changed' )\n\t\t\t.addClass( 'oo-ui-widget-enabled' )\n\t\t\t.removeClass( 'oo-ui-widget-disabled' );\n\t\t$sacButtons.children('button').prop( 'disabled', false );\n\n\t\treturn true;\n\t}\n\n\t// Prevent multiple submission of form\n\tjQuery.fn.preventDoubleSubmission = function() {\n\t\t$form = $( '#pfForm' );\n\t\t$( this ).on( 'submit', (e) => {\n\t\t\tif ( $form.data('submitted') === true ) {\n\t\t\t\t// Previously submitted - don't submit again\n\t\t\t\te.preventDefault();\n\t\t\t} else {\n\t\t\t\t// Mark it so that the next submit can be ignored\n\t\t\t\t$form.data('submitted', true);\n\t\t\t\t$( '.editButtons > .oo-ui-buttonElement' ).removeClass( 'oo-ui-widget-enabled' ).addClass( 'oo-ui-widget-disabled' );\n\t\t\t}\n\t\t});\n\t\t// Keep chainability\n\t\treturn this;\n\t};\n\t$( '#pfForm' ).preventDoubleSubmission();\n\t/**\n\t * Called when the server has sent the preview\n\t *\n\t * @param {Mixed} result\n\t * @param {Mixed} textStatus\n\t * @param {Mixed} jqXHR\n\t */\n\tconst resultReceivedHandler = function handleResultReceived( result, textStatus, jqXHR ) {\n\t\t// Store the target name\n\t\tlet $target = $form.find( 'input[name=\"target\"]' );\n\n\t\tif ( $target.length === 0 ) {\n\t\t\t$target = $( '<input type=\"hidden\" name=\"target\">' );\n\t\t\t$form.append ( $target );\n\t\t}\n\n\t\t$target.attr( 'value', result.$target );\n\n\t\t// Store the form name\n\t\t$target = $form.find( 'input[name=\"form\"]' );\n\n\t\tif ( $target.length === 0 ) {\n\t\t\t$target = $( '<input type=\"hidden\" name=\"form\">' );\n\t\t\t$form.append ( $target );\n\t\t}\n\n\t\t$target.attr( 'value', result.form.title );\n\n\t\t$sacButtons\n\t\t.addClass( 'pf-save_and_continue-ok' )\n\t\t.removeClass( 'pf-save_and_continue-wait' )\n\t\t.removeClass( 'pf-save_and_continue-error' );\n\n\t};\n\n\tconst resultReceivedErrorHandler = function handleError( jqXHR ){\n\t\tconst errors = $.parseJSON( jqXHR.responseText ).errors;\n\n\t\t$sacButtons\n\t\t.addClass( 'pf-save_and_continue-error' )\n\t\t.removeClass( 'pf-save_and_continue-wait' );\n\n\t\t// Remove all old error messages and set new ones\n\t\t$( '.errorbox' ).remove();\n\n\n\t\tif ( errors.length > 0 ){\n\t\t\tlet i;\n\t\t\tfor ( i = 0; i < errors.length; i += 1 ) {\n\t\t\t\tif ( errors[i].level < 2 ) { // show errors and warnings\n\t\t\t\t\t$( '#contentSub' )\n\t\t\t\t\t.append( '<div id=\"form_error_header\" class=\"errorbox\" style=\"font-size: medium\">' +\n\t\t\t\t\t\t'<img src=\"' + mw.config.get( 'wgPageFormsScriptPath' ) + '/skins/MW-Icon-AlertMark.png\" />' +\n\t\t\t\t\t\t'&nbsp;' + errors[i].message + '</div><br clear=\"both\" />' );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( 'html, body' ).scrollTop( $( '#contentSub' ).offset().top );\n\t\t}\n\t};\n\n\tfunction collectData() {\n\t\tconst $summaryfield = jQuery( '#wpSummary', $form );\n\t\tconst saveAndContinueSummary = mw.msg( 'pf_formedit_saveandcontinue_summary', mw.msg( 'pf_formedit_saveandcontinueediting' ) );\n\t\tlet params;\n\n\t\tif ( $summaryfield.length > 0 ) {\n\n\t\t\tconst oldsummary = $summaryfield.attr( 'value' );\n\n\t\t\tif ( oldsummary !== '' ) {\n\t\t\t\t$summaryfield.attr( 'value', oldsummary + ' (' + saveAndContinueSummary + ')' );\n\t\t\t} else {\n\t\t\t\t$summaryfield.attr( 'value', saveAndContinueSummary );\n\t\t\t}\n\n\t\t\tparams = $form.serialize();\n\n\t\t\t$summaryfield.attr( 'value', oldsummary );\n\t\t} else {\n\t\t\tparams = $form.serialize();\n\t\t\tparams += '&wpSummary=' + saveAndContinueSummary;\n\t\t}\n\n\t\tif ( mw.config.get( 'wgAction' ) === 'formedit' ) {\n\t\t\tparams += '&target=' + encodeURIComponent( mw.config.get( 'wgPageName' ) );\n\t\t} else if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {\n\t\t\tconst url = mw.config.get( 'wgPageName' );\n\n\t\t\tlet start = url.indexOf( '/' ) + 1; // find start of subpage\n\t\t\tlet stop;\n\n\t\t\tif ( start >= 0 ) {\n\t\t\t\tstop = url.indexOf( '/', start ); // find end of first subpage\n\t\t\t} else {\n\t\t\t\tstop = -1;\n\t\t\t}\n\n\t\t\tif ( stop >= 0 ) {\n\t\t\t\tparams += '&form=' + encodeURIComponent( url.substring( start, stop ) );\n\n\t\t\t\tstart = stop + 1;\n\t\t\t\tparams += '&target=' + encodeURIComponent( url.slice( start ) );\n\n\t\t\t} else {\n\t\t\t\tparams += '&form=' + encodeURIComponent( url.slice( start ) );\n\t\t\t}\n\t\t}\n\n\t\tparams += '&wpMinoredit=1';\n\n\t\treturn params;\n\t}\n\n\tfunction handleSaveAndContinue( event ) {\n\n\t\tevent.stopImmediatePropagation();\n\n\t\t// remove old error messages\n\t\tconst el = document.getElementById( 'form_error_header' );\n\n\t\tif ( el ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\tif ( validateAll() ) {\n\t\t\t// disable save and continue button\n\t\t\t$sacButtons\n\t\t\t.attr( 'disabled', 'disabled' )\n\t\t\t.addClass( 'pf-save_and_continue-wait' )\n\t\t\t.removeClass( 'pf-save_and_continue-changed' );\n\n\t\t\tconst $form = $( '#pfForm' );\n\n\t\t\tconst data = {\n\t\t\t\taction: 'pfautoedit',\n\t\t\t\tformat: 'json',\n\t\t\t\tquery: collectData() // add form values to the data\n\t\t\t};\n\n\t\t\tdata.query += '&wpSave=' + encodeURIComponent( $( event.currentTarget ).attr( 'value' ) );\n\n\t\t\t$.ajax( {\n\t\t\t\ttype: 'POST', // request type ( GET or POST )\n\t\t\t\turl: mw.util.wikiScript( 'api' ), // URL to which the request is sent\n\t\t\t\tdata: data, // data to be sent to the server\n\t\t\t\tdataType: 'json', // type of data expected back from the server\n\t\t\t\tsuccess: resultReceivedHandler, // function to be called if the request succeeds\n\t\t\t\terror: resultReceivedErrorHandler // function to be called on error\n\t\t\t} );\n\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tmw.pageFormsActivateVEFields = function( callback ) {\n\t\tconst visualEditors = $.fn.getVEInstances();\n\t\tif ( visualEditors.length > 0 ) {\n\t\t\tconst savingQueue = [];\n\t\t\t$(visualEditors).each( ( i, ve ) => {\n\t\t\t\tsavingQueue.push( ve.target.updateContent() );\n\t\t\t});\n\t\t\t$.when.apply( $, savingQueue ).then( () => {\n\t\t\t\tcallback();\n\t\t\t});\n\t\t} else {\n\t\t\tcallback();\n\t\t}\n\t};\n\n\tif ( mw.config.get( 'wgAction' ) === 'formedit' || mw.config.get( 'wgCanonicalSpecialPageName' ) === 'FormEdit' ) {\n\t\t$(() => { // Wait until DOM is loaded.\n\t\t\t$form = $( '#pfForm' );\n\t\t\t$sacButtons = $( '.pf-save_and_continue', $form );\n\t\t\t$sacButtons.click( handleSaveAndContinue );\n\n\t\t\t$form\n\t\t\t.on( 'keyup', 'input,select,textarea', ( event ) => {\n\t\t\t\tif ( event.which < 32 ){\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\treturn setChanged( event );\n\t\t\t} )\n\t\t\t.on( 'change', 'input,select,textarea', setChanged )\n\t\t\t.on( 'click', '.multipleTemplateAdder', setChanged )\n\t\t\t.on( 'mousedown', '.instanceRearranger,.removeButton', setChanged );\n\n\t\t\t// Run only when VEForAll extension is present\n\t\t\t$( document ).on( 'VEForAllLoaded', () => {\n\t\t\t\t// Special submit form & other actions handling when VEForAll editor is present\n\t\t\t\tif ( $('.visualeditor').length > 0 ) {\n\t\t\t\t\t// Interrupt \"Save page\", \"Show preview\" and \"Show changes\" actions\n\t\t\t\t\tconst $formButtons = $( '#wpSave, #wpPreview, #wpDiff' );\n\t\t\t\t\tlet canSubmit = false;\n\n\t\t\t\t\tif ( $formButtons.length > 0 ) {\n\t\t\t\t\t\t$formButtons.each( ( i, button ) => {\n\t\t\t\t\t\t\t$( button ).on( 'click', ( event ) => {\n\t\t\t\t\t\t\t\tif ( !canSubmit ) {\n\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\tmw.pageFormsActivateVEFields( () => {\n\t\t\t\t\t\t\t\t\t\tif ( validateAll() ) {\n\t\t\t\t\t\t\t\t\t\t\tcanSubmit = true;\n\t\t\t\t\t\t\t\t\t\t\t$( button ).find(\"[type='submit']\").click();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t\t// Interrupt \"Save and continue\" action\n\t\t\t\t\t$sacButtons.off('click', handleSaveAndContinue).click( ( event ) => {\n\t\t\t\t\t\tmw.pageFormsActivateVEFields( () => {\n\t\t\t\t\t\t\thandleSaveAndContinue( event );\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});\n\t}\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_timepicker.js","messages":[{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":62,"column":9,"nodeType":"CallExpression","endLine":62,"endColumn":60}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Javascript code to be used with input type timepicker.\n *\n * @author Stephan Gambke\n */\n\n/**\n * Initializes a timepicker input\n *\n * @param {string} inputID the id of the input to initialize\n * @param {Object} params the parameter object for the timepicker, contains\n *\t\tminTime: (String) the minimum time to be shown (format hh:mm)\n *\t\tmaxTime: (String) the maximum time to be shown (format hh:mm)\n *\t\tinterval: (String) the interval between selectable times in minutes\n *\t\tformat: (String) a format string (unused) (do we even need it?)\n */\nwindow.PF_TP_init = function( inputID, params ) { // minTime, maxTime, interval, format\n\n\tconst inputIDshow = inputID + '_show';\n\n\tconst $inputShow = jQuery( '#' + inputID );\n\t$inputShow.attr( 'id', inputIDshow );\n\n\tlet $input;\n\n\t// set up hidden input if this timepicker is not part of a datetimepicker\n\tif ( ! params.partOfDTP ) {\n\n\t\t$input = jQuery( '<input type=\"hidden\" >');\n\t\t$input.attr( {\n\t\t\tid: inputID,\n\t\t\tname: $inputShow.attr( 'name' ),\n\t\t\tvalue: $inputShow.val()\n\t\t} );\n\t\t$input.val($inputShow.val());\n\n\t\t$inputShow.after( $input );\n\t\t$inputShow.removeAttr( 'name' );\n\n\t} else {\n\t\t$input = $inputShow;\n\t}\n\n\tconst tabindex = $inputShow.attr('tabindex');\n\n\t// append time picker button\n\tconst $button = jQuery( '<button type=\"button\" ></button>' );\n\t$button.attr({\n\t\t'class': params.userClasses,\n\t\t'id': inputID + '_button',\n\t\t'tabindex': tabindex\n\t});\n\n\n\tif ( params.disabled ) {\n\n\t\t$button.attr( 'disabled', 'disabled' );\n\n\t} else {\n\n\t\t$button.click( () => {\n\t\t\tif ( jQuery( '#' + inputID + '_tree>ul' ).is(':visible') ) {\n\t\t\t\t$inputShow.blur();\n\t\t\t} else {\n\t\t\t\t$inputShow.focus();\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tconst $img = jQuery( '<img>' );\n\t$img.attr( 'src', params.buttonImage );\n\n\t$button.append( $img );\n\n\t$input.after( $button );\n\n\t// sanitize inputs\n\tconst re = /^\\d+:\\d\\d$/;\n\tlet minh = 0;\n\tlet minm = 0;\n\n\tlet maxh = 23;\n\tlet maxm = 59;\n\n\tif ( re.test( params.minTime ) ) {\n\n\t\tconst min = params.minTime.split( ':', 2 );\n\t\tminh = Number( min[0] );\n\t\tminm = Number( min[1] );\n\n\t\tif ( minm > 59 ) {\n\t\t\tminm = 59;\n\t\t}\n\t}\n\n\tif ( re.test( params.maxTime ) ) {\n\n\t\tconst max = params.maxTime.split( ':', 2 );\n\t\tmaxh = Number( max[0] );\n\t\tmaxm = Number( max[1] );\n\n\t\tif ( maxm > 59 ) {\n\t\t\tmaxm = 59;\n\t\t}\n\t}\n\n\tlet interv = Number( params.interval );\n\n\tif ( interv < 1 ) {\n\t\tinterv = 1;\n\t} else if ( interv > 60 ) {\n\t\tinterv = 60;\n\t}\n\n\t// build html structure\n\tconst $sp = jQuery( '<span class=\"PF_timepicker\" id=\"' + inputID + '_tree\" ></span>' ).insertBefore( $inputShow );\n\n\tconst $ulh = jQuery( '<ul class=\"PF_timepicker_hours\" >' ).appendTo( $sp );\n\n\n\tfor ( let h = minh; h <= maxh; ++h ) {\n\n\t\tconst $lih = jQuery( '<li class=\"ui-state-default PF_timepicker_hour\">' + ( ( h < 10 ) ? '0' : '' ) + h + '</li>' ).appendTo( $ulh );\n\n\t\t//TODO: Replace value for \"show\" by formatted string\n\t\t$lih\n\t\t.data( 'value', ( ( h < 10 ) ? '0' : '' ) + h + ':00' )\n\t\t.data( 'show', ( ( h < 10 ) ? '0' : '' ) + h + ':00' );\n\n\t\tconst $ulm = jQuery( '<ul class=\"PF_timepicker_minutes\" >' ).appendTo( $lih );\n\n\t\tfor ( let m = ( (h === minh) ? minm : 0 ) ; m <= ( (h === maxh) ? maxm : 59 ); m += interv ) {\n\n\t\t\tconst $lim = jQuery( '<li class=\"ui-state-default PF_timepicker_minute\">' + ( ( m < 10 ) ? '0' : '' ) + m  + '</li>' ).appendTo( $ulm );\n\n\t\t\t//TODO: Replace value for \"show\" by formatted string\n\t\t\t$lim\n\t\t\t.data( 'value', ( ( h < 10 ) ? '0' : '' ) + h + ':' + ( ( m < 10 ) ? '0' : \"\" ) + m )\n\t\t\t.data( 'show', ( ( h < 10 ) ? '0' : '' ) + h + ':' + ( ( m < 10 ) ? '0' : \"\" ) + m );\n\n\t\t}\n\n\t}\n\n\t// initially hide everything\n\tjQuery( '#' + inputID + '_tree ul' )\n\t.hide();\n\n\t// attach event handlers\n\tjQuery( '#' + inputID + '_tree li' ) // hours\n\t.mouseover((evt) => {\n\n\t\t// clear any timeout that may still run on the last list item\n\t\tclearTimeout( jQuery( evt.currentTarget ).data( 'timeout' ) );\n\n\t\tjQuery( evt.currentTarget )\n\n\t\t// switch classes to change display style\n\t\t.removeClass( 'ui-state-default' )\n\t\t.addClass( 'ui-state-hover' )\n\n\t\t// set timeout to show minutes for selected hour\n\t\t.data( 'timeout', setTimeout(\n\t\t\t() => {\n\t\t\t\tjQuery( evt.currentTarget ).children().fadeIn();\n\t\t\t}, 400 ) );\n\n\t})\n\n\t.mouseout((evt) => {\n\n\t\t// clear any timeout that may still run on this jQuery list item\n\t\tclearTimeout( jQuery( evt.currentTarget ).data( 'timeout' ) );\n\n\t\tjQuery( evt.currentTarget )\n\n\t\t// switch classes to change display style\n\t\t.removeClass( 'ui-state-hover' )\n\t\t.addClass( 'ui-state-default' )\n\n\t\t// hide minutes after a short pause\n\t\t.data( 'timeout', setTimeout(\n\t\t\t() => {\n\t\t\t\tjQuery(evt.currentTarget).children().fadeOut();\n\t\t\t}, 400 ) );\n\n\t});\n\n\tjQuery( '#' + inputID + '_tree li' ) // hours, minutes\n\t.mousedown(function(evt){\n\n\t\t// set values and leave input\n\t\t$inputShow\n\t\t// Are both these calls necessary? At least the 2nd one is.\n\t\t.attr( 'value', jQuery( this ).data( 'show' ) )\n\t\t.val(jQuery( this ).data( 'show' ) )\n\t\t.blur()\n\t\t.change();\n\n\t\t// clear any timeout that may still run on this jQuery list item\n\t\tclearTimeout( jQuery( evt.currentTarget ).data( 'timeout' ) );\n\n\t\tjQuery( evt.currentTarget )\n\n\t\t// switch classes to change display style\n\t\t.removeClass( 'ui-state-hover' )\n\t\t.addClass( 'ui-state-default' );\n\n\t\t// avoid propagation to parent list item (e.g. hours),\n\t\t// they would overwrite the input value\n\t\treturn false;\n\t});\n\n\t// show timepicker when input gets focus\n\t$inputShow\n\t.focus(() => {\n\t\tjQuery( '#' + inputID + '_tree>ul' ).fadeIn();\n\t});\n\n\t// hide timepicker when input loses focus\n\t$inputShow\n\t.blur(() => {\n\t\tjQuery( '#' + inputID + '_tree ul' ).fadeOut( 'normal', function() {\n\t\t\tjQuery(this).hide();\n\t\t});\n\t});\n\n\tif ( ! params.partOfDTP ) {\n\t\t$inputShow\n\t\t.change(function() {\n\t\t\tjQuery( '#' + inputID ).val( jQuery(this).val() );\n\t\t});\n\t}\n\n\tjQuery( '#' + inputID + '_show ~ button[name=\"button\"]' )\n\t.click( () => {\n\t\t$inputShow.focus();\n\t});\n\n};\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_tree.js","messages":[{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"$\" type.","line":6,"column":1,"nodeType":"Block","endLine":6,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"mw\" type.","line":7,"column":1,"nodeType":"Block","endLine":7,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"pf\" type.","line":8,"column":1,"nodeType":"Block","endLine":8,"endColumn":1}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/**\n * Defines the applyJStree() function, which turns an HTML \"tree\" of\n * checkboxes or radiobuttons into a dynamic and collapsible tree of options\n * using the jsTree JS library.\n *\n * @param $\n * @param mw\n * @param pf\n * @author Mathias Lidal\n * @author Yaron Koren\n * @author Priyanshu Varshney\n * @author Amr El-Absy\n */\n\n ( function($, mw, pf) {\n\n\tpf.TreeInput = function(elem) {\n\t\tthis.element = elem;\n\t\tthis.id = $(this.element).attr('id');\n\t};\n\n\tconst TreeInput_proto = new pf.TreeInput();\n\n\tTreeInput_proto.setOptions = function() {\n\t\tconst data = $(this.element).attr('data');\n\t\tthis.data = JSON.parse(data);\n\t\tconst params = $(this.element).attr('params');\n\t\tthis.params = JSON.parse(params);\n\t\tthis.delimiter = this.params.delimiter;\n\t\tthis.multiple = this.params.multiple;\n\t\tthis.values = [];\n\t\tthis.cur_value = this.params.cur_value;\n\n\t\tconst options = {\n\t\t\t'plugins' :  [ 'checkbox' ],\n\t\t\t'core' : {\n\t\t\t\t'data' : this.data,\n\t\t\t\t'multiple': this.multiple,\n\t\t\t\t'themes' : {\n\t\t\t\t\t\"icons\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t'checkbox': {\n\t\t\t\t'three_state': false,\n\t\t\t\t'cascade': \"none\"\n\t\t\t}\n\t\t};\n\n\t\treturn options;\n\t};\n\n\tTreeInput_proto.check = function( data ) {\n\t\tconst $input = $(this.element).next('input.PFTree_data');\n\n\t\tif ( this.multiple ) {\n\t\t\tthis.values.push( data );\n\t\t\tconst data_string = this.values.join( this.delimiter );\n\t\t\t$input.attr( 'value', data_string );\n\t\t} else {\n\t\t\tthis.values.push( data );\n\t\t\t$input.attr('value', data);\n\t\t}\n\t};\n\n\tTreeInput_proto.uncheck = function( data ) {\n\t\tconst $input = $( this.element ).next( 'input.PFTree_data' );\n\n\t\tthis.values.splice( this.values.indexOf( data ), 1 );\n\t\tconst data_string = this.values.join( this.delimiter );\n\t\t$input.attr( 'value', data_string );\n\t};\n\n\tTreeInput_proto.setCurValue = function() {\n\t\tif ( this.cur_value !== null && this.cur_value !== undefined && this.cur_value !== \"\" ) {\n\t\t\tconst $input = $( this.element ).next( 'input.PFTree_data' );\n\n\t\t\t$input.attr( 'value', this.cur_value );\n\t\t\tthis.values = this.cur_value.split( this.delimiter );\n\t\t}\n\t};\n\n\tpf.TreeInput.prototype = TreeInput_proto;\n\n} (jQuery, mediaWiki, pf) );\n\n$.fn.extend({\n\tapplyJSTree: function() {\n\t\tconst tree = new pf.TreeInput(this);\n\t\tconst options = tree.setOptions();\n\n\t\t$(this).jstree(options);\n\n\t\t$(this).bind('select_node.jstree', (evt, data) => {\n\t\t\ttree.check(data.node.text);\n\t\t});\n\t\t$(this).bind('deselect_node.jstree', (evt, data) => {\n\t\t\ttree.uncheck(data.node.text);\n\t\t});\n\n\t\ttree.setCurValue();\n\t}\n});\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PF_wikieditor.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/PageForms.js","messages":[{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":201,"column":10,"nodeType":"CallExpression","endLine":201,"endColumn":56},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":232,"column":19,"nodeType":"CallExpression","endLine":232,"endColumn":46},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":243,"column":9,"nodeType":"CallExpression","endLine":243,"endColumn":30},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead.","line":293,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":293,"endColumn":26},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead.","line":345,"column":6,"nodeType":"Identifier","messageId":"useConst","endLine":345,"endColumn":29},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead.","line":371,"column":6,"nodeType":"Identifier","messageId":"useConst","endLine":371,"endColumn":29},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":771,"column":3,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":771,"endColumn":15},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":840,"column":2,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":840,"endColumn":23},{"ruleId":"block-scoped-var","severity":1,"message":"'negative' declared on line 843 column 7 is used outside of binding context.","line":840,"column":6,"nodeType":"Identifier","messageId":"outOfScope","endLine":840,"endColumn":14},{"ruleId":"no-var","severity":1,"message":"Unexpected var, use let or const instead.","line":843,"column":3,"nodeType":"VariableDeclaration","messageId":"unexpectedVar","endLine":843,"endColumn":23},{"ruleId":"block-scoped-var","severity":1,"message":"'negative' declared on line 843 column 7 is used outside of binding context.","line":849,"column":7,"nodeType":"Identifier","messageId":"outOfScope","endLine":849,"endColumn":15},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1023,"column":8,"nodeType":"VariableDeclarator","endLine":1023,"endColumn":68},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1024,"column":8,"nodeType":"VariableDeclarator","endLine":1024,"endColumn":64},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1030,"column":8,"nodeType":"VariableDeclarator","endLine":1030,"endColumn":76},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1031,"column":8,"nodeType":"VariableDeclarator","endLine":1031,"endColumn":72},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1125,"column":9,"nodeType":"CallExpression","endLine":1125,"endColumn":42},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1232,"column":9,"nodeType":"VariableDeclarator","endLine":1232,"endColumn":68},{"ruleId":"jsdoc/require-returns-check","severity":1,"message":"JSDoc @return declaration present but return expression not available in function.","line":1246,"column":1,"nodeType":"Block","endLine":1251,"endColumn":4},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1265,"column":10,"nodeType":"CallExpression","endLine":1265,"endColumn":55},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1269,"column":8,"nodeType":"CallExpression","endLine":1269,"endColumn":53},{"ruleId":"no-jquery/no-sizzle","severity":1,"message":"Selector extensions are not allowed","line":1474,"column":27,"nodeType":"CallExpression","endLine":1476,"endColumn":61},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsCargoFields' is never reassigned. Use 'const' instead.","line":1490,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":1490,"endColumn":25},{"ruleId":"prefer-const","severity":1,"message":"'wgPageFormsFieldProperties' is never reassigned. Use 'const' instead.","line":1491,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":1491,"endColumn":29},{"ruleId":"prefer-const","severity":1,"message":"'dependentField' is never reassigned. Use 'const' instead.","line":1565,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":1565,"endColumn":18},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1574,"column":8,"nodeType":"CallExpression","endLine":1574,"endColumn":39},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1703,"column":9,"nodeType":"VariableDeclarator","endLine":1703,"endColumn":72},{"ruleId":"no-jquery/variable-pattern","severity":1,"message":"jQuery collection names must match the variablePattern","line":1710,"column":10,"nodeType":"VariableDeclarator","endLine":1710,"endColumn":30},{"ruleId":"mediawiki/no-unlabeled-buttonwidget","severity":1,"message":"OOUI button has no label. Even icon-only buttons should set a label with invisibleLabel set to true.","line":1789,"column":19,"nodeType":"NewExpression","messageId":"noLabel","endLine":1796,"endColumn":6},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1970,"column":30,"nodeType":"CallExpression","endLine":1970,"endColumn":64},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1983,"column":8,"nodeType":"CallExpression","endLine":1983,"endColumn":47},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1987,"column":8,"nodeType":"CallExpression","endLine":1987,"endColumn":46},{"ruleId":"no-jquery/no-class-state","severity":1,"message":"Where possible, maintain application state in JS to avoid slower DOM queries","line":1992,"column":7,"nodeType":"CallExpression","endLine":1992,"endColumn":38}],"suppressedMessages":[{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '|'.","line":1826,"column":8,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":1826,"endColumn":24,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '|'.","line":1829,"column":8,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":1829,"endColumn":25,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '|'.","line":1832,"column":28,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":1832,"endColumn":41,"suppressions":[{"kind":"directive","justification":""}]},{"ruleId":"no-bitwise","severity":2,"message":"Unexpected use of '&'.","line":1832,"column":28,"nodeType":"BinaryExpression","messageId":"unexpected","endLine":1832,"endColumn":35,"suppressions":[{"kind":"directive","justification":""}]}],"errorCount":0,"fatalErrorCount":0,"warningCount":32,"fixableErrorCount":0,"fixableWarningCount":0,"source":"const Sortable = require( 'ext.pageforms.sortable' );\n\n/**\n * PageForms.js\n *\n * Javascript utility functions for the Page Forms extension.\n *\n * @author Yaron Koren\n * @author Sanyam Goyal\n * @author Stephan Gambke\n * @author Jeffrey Stuckman\n * @author Harold Solbrig\n * @author Eugene Mednikov\n */\n/*global wgPageFormsShowOnSelect, wgPageFormsFieldProperties, wgPageFormsCargoFields, wgPageFormsDependentFields, validateAll, alert, pf, Sortable*/\n\n( function( $, mw ) {\n\n/*\n * Functions to register/unregister methods for the initialization and\n * validation of inputs.\n */\n\n// Initialize data object to hold initialization and validation data\nfunction setupPF() {\n\n\t$(\"#pfForm\").data(\"PageForms\",{\n\t\tinitFunctions : [],\n\t\tvalidationFunctions : []\n\t});\n\n}\n\n// Register a validation method\n//\n// More than one method may be registered for one input by subsequent calls to\n// PageForms_registerInputValidation.\n//\n// Validation functions and their data are stored in a numbered array\n//\n// @param valfunction The validation functions. Must take a string (the input's id) and an object as parameters\n// @param param The parameter object given to the validation function\n$.fn.PageForms_registerInputValidation = function(valfunction, param) {\n\n\tif ( ! this.attr(\"id\") ) {\n\t\treturn this;\n\t}\n\n\tif ( ! $(\"#pfForm\").data(\"PageForms\") ) {\n\t\tsetupPF();\n\t}\n\n\t$(\"#pfForm\").data(\"PageForms\").validationFunctions.push({\n\t\tinput : this.attr(\"id\"),\n\t\tvalfunction : valfunction,\n\t\tparameters : param\n\t});\n\n\treturn this;\n};\n\n// Register an initialization method\n//\n// More than one method may be registered for one input by subsequent calls to\n// PageForms_registerInputInit. This method also executes the initFunction\n// if the element referenced by /this/ is not part of a multipleTemplateStarter.\n//\n// Initialization functions and their data are stored in a associative array\n//\n// @param initFunction The initialization function. Must take a string (the input's id) and an object as parameters\n// @param param The parameter object given to the initialization function\n// @param noexecute If set, the initialization method will not be executed here\n$.fn.PageForms_registerInputInit = function( initFunction, param, noexecute ) {\n\n\t// return if element has no id\n\tif ( ! this.attr(\"id\") ) {\n\t\treturn this;\n\t}\n\n\t// setup data structure if necessary\n\tif ( ! $(\"#pfForm\").data(\"PageForms\") ) {\n\t\tsetupPF();\n\t}\n\n\t// if no initialization function for this input was registered yet,\n\t// create entry\n\tif ( ! $(\"#pfForm\").data(\"PageForms\").initFunctions[this.attr(\"id\")] ) {\n\t\t$(\"#pfForm\").data(\"PageForms\").initFunctions[this.attr(\"id\")] = [];\n\t}\n\n\t// record initialization function\n\t$(\"#pfForm\").data(\"PageForms\").initFunctions[this.attr(\"id\")].push({\n\t\tinitFunction : initFunction,\n\t\tparameters : param\n\t});\n\n\t// execute initialization if input is not part of multipleTemplateStarter\n\t// and if not forbidden\n\tif ( this.closest(\".multipleTemplateStarter\").length === 0 && !noexecute) {\n\t\tconst $input = this;\n\t\t// ensure initFunction is only executed after doc structure is complete\n\t\t$(() => {\n\t\t\tif ( initFunction !== undefined ) {\n\t\t\t\tinitFunction( $input.attr(\"id\"), param );\n\t\t\t}\n\t\t});\n\t}\n\n\treturn this;\n};\n\n// Unregister all validation methods for the element referenced by /this/\n$.fn.PageForms_unregisterInputValidation = function() {\n\n\tconst pfdata = $(\"#pfForm\").data(\"PageForms\");\n\n\tif ( this.attr(\"id\") && pfdata ) {\n\t\t// delete every validation method for this input\n\t\tfor ( let i = 0; i < pfdata.validationFunctions.length; i++ ) {\n\t\t\tif ( typeof pfdata.validationFunctions[i] !== 'undefined' &&\n\t\t\t\tpfdata.validationFunctions[i].input === this.attr(\"id\") ) {\n\t\t\t\tdelete pfdata.validationFunctions[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn this;\n};\n\n// Unregister all initialization methods for the element referenced by /this/\n$.fn.PageForms_unregisterInputInit = function() {\n\n\tif ( this.attr(\"id\") && $(\"#pfForm\").data(\"PageForms\") ) {\n\t\tdelete $(\"#pfForm\").data(\"PageForms\").initFunctions[this.attr(\"id\")];\n\t}\n\n\treturn this;\n};\n\n// Called from within PF_ComboBoxInput.php.\nmw.hook('pf.comboboxChange').add( ( $parentSpan ) => {\n\tconst initPage = $parentSpan.find('select').length > 0;\n\tconst partOfMultiple = $parentSpan.attr('data-origid') !== undefined;\n\t$parentSpan.showIfSelected( partOfMultiple, initPage );\n});\n\n/*\n * Functions for handling 'show on select'\n */\n\n// Display a div that would otherwise be hidden by \"show on select\".\nfunction showDiv( div_id, $instanceWrapperDiv, initPage ) {\n\tconst speed = initPage ? 0 : 'fast';\n\tlet $elem;\n\tif ( $instanceWrapperDiv !== null ) {\n\t\t$elem = $('[data-origID=\"' + div_id + '\"]', $instanceWrapperDiv);\n\t} else {\n\t\t$elem = $('#' + div_id);\n\t}\n\n\t$elem\n\t.addClass('shownByPF')\n\n\t.find(\".hiddenByPF\")\n\t.removeClass('hiddenByPF')\n\t.addClass('shownByPF')\n\n\t.find(\".disabledByPF\")\n\t.prop('disabled', false)\n\t.removeClass('disabledByPF');\n\n\t$elem.each( function() {\n\t\tif ( $(this).css('display') === 'none' ) {\n\n\t\t\t$(this).slideDown(speed, function() {\n\t\t\t\t$(this).fadeTo(speed,1);\n\t\t\t});\n\n\t\t}\n\t});\n\n\t// Now re-show any form elements that are meant to be shown due\n\t// to the current value of form inputs in this div that are now\n\t// being uncovered.\n\tconst wgPageFormsShowOnSelect = mw.config.get( 'wgPageFormsShowOnSelect' );\n\t$elem.find(\".pfShowIfSelected, .pfShowIfChecked\").each( function() {\n\t\tconst $uncoveredInput = $(this);\n\t\tlet uncoveredInputID = null;\n\t\tif ( $instanceWrapperDiv === null ) {\n\t\t\tuncoveredInputID = $uncoveredInput.attr(\"id\");\n\t\t} else {\n\t\t\tuncoveredInputID = $uncoveredInput.attr(\"data-origID\");\n\t\t}\n\t\tconst showOnSelectVals = wgPageFormsShowOnSelect[uncoveredInputID];\n\n\t\tif ( showOnSelectVals !== undefined ) {\n\t\t\tconst inputVal = $uncoveredInput.val();\n\t\t\tfor ( let i = 0; i < showOnSelectVals.length; i++ ) {\n\t\t\t\tconst options = showOnSelectVals[i][0];\n\t\t\t\tconst div_id2 = showOnSelectVals[i][1];\n\t\t\t\tif ( $uncoveredInput.hasClass( 'pfShowIfSelected' ) ) {\n\t\t\t\t\tshowDivIfSelected( options, div_id2, inputVal, $instanceWrapperDiv, initPage );\n\t\t\t\t} else {\n\t\t\t\t\t$uncoveredInput.showDivIfChecked( options, div_id2, $instanceWrapperDiv, initPage );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n\n// Hide a div due to \"show on select\". The CSS class is there so that PF can\n// ignore the div's contents when the form is submitted.\nfunction hideDiv( div_id, $instanceWrapperDiv, initPage ) {\n\tconst speed = initPage ? 0 : 'fast';\n\tlet $elem;\n\t// IDs can't contain spaces, and jQuery won't work with such IDs - if\n\t// this one has a space, display an alert.\n\tif ( div_id.includes(' ') ) {\n\t\t// TODO - this should probably be a language value, instead of\n\t\t// hardcoded in English.\n\t\talert( \"Warning: this form has \\\"show on select\\\" pointing to an invalid element ID (\\\"\" + div_id + \"\\\") - IDs in HTML cannot contain spaces.\" );\n\t}\n\n\tif ( $instanceWrapperDiv !== null ) {\n\t\t$elem = $instanceWrapperDiv.find('[data-origID=' + div_id + ']');\n\t} else {\n\t\t$elem = $('#' + div_id);\n\t}\n\n\t// If we're just setting up the page, and this element has already\n\t// been marked to be shown by some other input, don't hide it.\n\tif ( initPage && $elem.hasClass('shownByPF') ) {\n\t\treturn;\n\t}\n\n\t$elem.find(\"span, div\").addClass('hiddenByPF');\n\n\t$elem.each( function() {\n\t\tif ( $(this).css('display') !== 'none' ) {\n\n\t\t\t// if 'display' is not 'hidden', but the element is hidden otherwise\n\t\t\t// (e.g. by having height = 0), just hide it, else animate the hiding\n\t\t\tif ( $(this).is(':hidden') ) {\n\t\t\t\t$(this).hide();\n\t\t\t} else {\n\t\t\t\t$(this).fadeTo(speed, 0, function() {\n\t\t\t\t\t$(this).slideUp(speed);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// Also, recursively hide further elements that are only shown because\n\t// inputs within this now-hidden div were checked/selected.\n\tconst wgPageFormsShowOnSelect = mw.config.get( 'wgPageFormsShowOnSelect' );\n\t$elem.find(\".pfShowIfSelected, .pfShowIfChecked\").each( function() {\n\t\tlet showOnSelectVals;\n\t\tif ( $instanceWrapperDiv === null ) {\n\t\t\tshowOnSelectVals = wgPageFormsShowOnSelect[$(this).attr(\"id\")];\n\t\t} else {\n\t\t\tshowOnSelectVals = wgPageFormsShowOnSelect[$(this).attr(\"data-origID\")];\n\t\t}\n\n\t\tif ( showOnSelectVals !== undefined ) {\n\t\t\tfor ( let i = 0; i < showOnSelectVals.length; i++ ) {\n\t\t\t\t//var options = showOnSelectVals[i][0];\n\t\t\t\tconst div_id2 = showOnSelectVals[i][1];\n\t\t\t\thideDiv( div_id2, $instanceWrapperDiv, initPage );\n\t\t\t}\n\t\t}\n\t});\n}\n\n// Show this div if the current value is any of the relevant options -\n// otherwise, hide it.\nfunction showDivIfSelected(options, div_id, inputVal, $instanceWrapperDiv, initPage) {\n\tfor ( let i = 0; i < options.length; i++ ) {\n\t\t// If it's a listbox and the user has selected more than one\n\t\t// value, it'll be an array - handle either case.\n\t\tif (($.isArray(inputVal) && $.inArray(options[i], inputVal) >= 0) ||\n\t\t\t(!$.isArray(inputVal) && (inputVal === options[i]))) {\n\t\t\tshowDiv( div_id, $instanceWrapperDiv, initPage );\n\t\t\treturn;\n\t\t}\n\t}\n\thideDiv( div_id, $instanceWrapperDiv, initPage );\n}\n\n// Used for handling 'show on select' for the 'dropdown', 'listbox',\n// 'combobox' and 'tokens' input types.\n$.fn.showIfSelected = function(partOfMultiple, initPage) {\n\tlet inputVal,\n\t\twgPageFormsShowOnSelect = mw.config.get( 'wgPageFormsShowOnSelect' ),\n\t\tshowOnSelectVals,\n\t\t$instanceWrapperDiv;\n\n\tif ( this.attr( 'data-input-type' ) == 'combobox' ) {\n\t\tif ( initPage ) {\n\t\t\tinputVal = $(this).find('select').val();\n\t\t} else {\n\t\t\tinputVal = $(this).find('input').val();\n\t\t}\n\t} else if ( this.attr( 'data-input-type' ) == 'tokens' ) {\n\t\tinputVal = $(this).find('select').val();\n\t} else {\n\t\tinputVal = this.val();\n\t}\n\n\tif ( partOfMultiple ) {\n\t\tshowOnSelectVals = wgPageFormsShowOnSelect[this.attr(\"data-origID\")];\n\t\t$instanceWrapperDiv = this.closest('.multipleTemplateInstance');\n\t} else {\n\t\tshowOnSelectVals = wgPageFormsShowOnSelect[this.attr(\"id\")];\n\t\t$instanceWrapperDiv = null;\n\t}\n\n\tif ( showOnSelectVals !== undefined ) {\n\t\tfor ( let i = 0; i < showOnSelectVals.length; i++ ) {\n\t\t\tconst options = showOnSelectVals[i][0];\n\t\t\tconst div_id = showOnSelectVals[i][1];\n\t\t\tshowDivIfSelected( options, div_id, inputVal, $instanceWrapperDiv, initPage );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n// Show this div if any of the relevant selections are checked -\n// otherwise, hide it.\n$.fn.showDivIfChecked = function(options, div_id, $instanceWrapperDiv, initPage ) {\n\tfor ( let i = 0; i < options.length; i++ ) {\n\t\tif ($(this).find('[value=\"' + options[i] + '\"]').is(\":checked\")) {\n\t\t\tshowDiv( div_id, $instanceWrapperDiv, initPage );\n\t\t\treturn this;\n\t\t}\n\t}\n\thideDiv( div_id, $instanceWrapperDiv, initPage );\n\n\treturn this;\n};\n\n// Used for handling 'show on select' for the 'checkboxes' and 'radiobutton'\n// inputs.\n$.fn.showIfChecked = function(partOfMultiple, initPage) {\n\tlet wgPageFormsShowOnSelect = mw.config.get( 'wgPageFormsShowOnSelect' ),\n\t\tshowOnSelectVals,\n\t\t$instanceWrapperDiv,\n\t\ti;\n\n\tif ( partOfMultiple ) {\n\t\tshowOnSelectVals = wgPageFormsShowOnSelect[this.attr(\"data-origID\")];\n\t\t$instanceWrapperDiv = this.closest('.multipleTemplateInstance');\n\t} else {\n\t\tshowOnSelectVals = wgPageFormsShowOnSelect[this.attr(\"id\")];\n\t\t$instanceWrapperDiv = null;\n\t}\n\n\tif ( showOnSelectVals !== undefined ) {\n\t\tfor ( i = 0; i < showOnSelectVals.length; i++ ) {\n\t\t\tconst options = showOnSelectVals[i][0];\n\t\t\tconst div_id = showOnSelectVals[i][1];\n\t\t\tthis.showDivIfChecked( options, div_id, $instanceWrapperDiv, initPage );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n// Used for handling 'show on select' for the 'checkbox' input.\n$.fn.showIfCheckedCheckbox = function( partOfMultiple, initPage ) {\n\tlet wgPageFormsShowOnSelect = mw.config.get( 'wgPageFormsShowOnSelect' ),\n\t\tdivIDs,\n\t\t$instanceWrapperDiv = null,\n\t\ti;\n\tif ( partOfMultiple ) {\n\t\tdivIDs = wgPageFormsShowOnSelect[this.attr( \"data-origID\" )];\n\t\t$instanceWrapperDiv = this.closest( \".multipleTemplateInstance\" );\n\t}\n\tif ( divIDs === undefined ) {\n\t\tdivIDs = wgPageFormsShowOnSelect[this.attr( \"id\" )];\n\t}\n\tfor ( i = 0; i < divIDs.length; i++ ) {\n\t\tconst divID = divIDs[i];\n\t\tif ( $( this ).find( '[value]' ).is( \":checked\" ) ) {\n\t\t\tshowDiv( divID, $instanceWrapperDiv, initPage );\n\t\t} else {\n\t\t\thideDiv( divID, $instanceWrapperDiv, initPage );\n\t\t}\n\t}\n\n\treturn this;\n};\n\n/*\n * Validation functions\n */\n\n// Set the error message for an input.\n$.fn.setErrorMessage = function(msg, val) {\n\tconst container = this.find('.pfErrorMessages');\n\tcontainer.html($('<div>').addClass( 'errorMessage' ).text( mw.msg( msg, val ) ));\n};\n\n// Append an error message to the end of an input.\n$.fn.addErrorMessage = function(msg, val) {\n\tthis.find('input').addClass('inputError');\n\tthis.find('select2-container').addClass('inputError');\n\tthis.append($('<div>').addClass( 'errorMessage' ).text( mw.msg( msg, val ) ));\n\t// If this is part of a minimized multiple-template instance, add a\n\t// red border around the instance rectangle to make it easier to find.\n\tthis.parents( '.multipleTemplateInstance.minimized' ).css( 'border', '1px solid red' );\n};\n\n$.fn.isAtMaxInstances = function() {\n\tconst numInstances = this.find(\"div.multipleTemplateInstance\").length;\n\tconst maximumInstances = this.attr(\"maximumInstances\");\n\tif ( numInstances >= maximumInstances ) {\n\t\tthis.parent().setErrorMessage( 'pf_too_many_instances_error', maximumInstances );\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n$.fn.validateNumInstances = function() {\n\tconst minimumInstances = this.attr(\"minimumInstances\");\n\tconst maximumInstances = this.attr(\"maximumInstances\");\n\tconst numInstances = this.find(\"div.multipleTemplateInstance\").length;\n\tif ( numInstances < minimumInstances ) {\n\t\tthis.parent().addErrorMessage( 'pf_too_few_instances_error', minimumInstances );\n\t\treturn false;\n\t} else if ( numInstances > maximumInstances ) {\n\t\tthis.parent().addErrorMessage( 'pf_too_many_instances_error', maximumInstances );\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateMandatoryField = function() {\n\tconst fieldVal = this.find(\".mandatoryField\").val();\n\tlet isEmpty;\n\n\tif (fieldVal === null) {\n\t\tisEmpty = true;\n\t} else if ($.isArray(fieldVal)) {\n\t\tisEmpty = (fieldVal.length === 0);\n\t} else {\n\t\tisEmpty = (fieldVal.replace(/\\s+/, '') === '');\n\t}\n\tif (isEmpty) {\n\t\tthis.addErrorMessage( 'pf_blank_error' );\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateUniqueField = function() {\n\n\tconst UNDEFINED = \"undefined\";\n\tconst field = this.find(\".uniqueField\");\n\tconst fieldVal = field.val();\n\n\tif (typeof fieldVal === UNDEFINED || fieldVal.replace(/\\s+/, '') === '') {\n\t\treturn true;\n\t}\n\n\tconst fieldOrigVal = field.prop(\"defaultValue\");\n\tif (fieldVal === fieldOrigVal) {\n\t\treturn true;\n\t}\n\n\tconst categoryFieldName = field.prop(\"id\") + \"_unique_for_category\";\n\tconst $categoryField = $(\"[name=\" + categoryFieldName + \"]\");\n\tlet category = $categoryField.val();\n\n\tconst namespaceFieldName = field.prop(\"id\") + \"_unique_for_namespace\";\n\tconst $namespaceField = $(\"[name=\" + namespaceFieldName + \"]\");\n\tconst namespace = $namespaceField.val();\n\n\tlet url = mw.config.get( 'wgScriptPath' ) + \"/api.php?format=json&action=\";\n\n\tlet query,\n\t\tisNotUnique;\n\n\t// SMW\n\tconst propertyFieldName = field.prop(\"id\") + \"_unique_property\",\n\t\t$propertyField = $(\"[name=\" + propertyFieldName + \"]\"),\n\t\tproperty = $propertyField.val();\n\tif (typeof property !== UNDEFINED && property.replace(/\\s+/, '') !== '') {\n\n\t\tquery = \"[[\" + property + \"::\" + fieldVal + \"]]\";\n\n\t\tif (typeof category !== UNDEFINED &&\n\t\t\tcategory.replace(/\\s+/, '') !== '') {\n\t\t\tquery += \"[[Category:\" + category + \"]]\";\n\t\t}\n\n\t\tif (typeof namespace !== UNDEFINED) {\n\t\t\tif (namespace.replace(/\\s+/, '') !== '') {\n\t\t\t\tquery += \"[[:\" + namespace + \":+]]\";\n\t\t\t} else {\n\t\t\t\tquery += \"[[:+]]\";\n\t\t\t}\n\t\t}\n\n\t\tconst conceptFieldName = field.prop(\"id\") + \"_unique_for_concept\";\n\t\tconst $conceptField = $(\"[name=\" + conceptFieldName + \"]\");\n\t\tconst concept = $conceptField.val();\n\t\tif (typeof concept !== UNDEFINED &&\n\t\t\tconcept.replace(/\\s+/, '') !== '') {\n\t\t\tquery += \"[[Concept:\" + concept + \"]]\";\n\t\t}\n\n\t\tquery += \"|limit=1\";\n\t\tquery = encodeURIComponent(query);\n\n\t\turl += \"ask&query=\" + query;\n\t\tisNotUnique = true;\n\t\t$.ajax({\n\t\t\turl: url,\n\t\t\tdataType: 'json',\n\t\t\tasync: false,\n\t\t\tsuccess: function(data) {\n\t\t\t\tif (data.query.meta.count === 0) {\n\t\t\t\t\tisNotUnique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (isNotUnique) {\n\t\t\tthis.addErrorMessage( 'pf_not_unique_error' );\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// Cargo\n\tconst cargoTableFieldName = field.prop(\"id\") + \"_unique_cargo_table\";\n\tconst $cargoTableField = $(\"[name=\" + cargoTableFieldName + \"]\");\n\tlet cargoTable = $cargoTableField.val();\n\tconst cargoFieldFieldName = field.prop(\"id\") + \"_unique_cargo_field\";\n\tconst $cargoFieldField = $(\"[name=\" + cargoFieldFieldName + \"]\");\n\tconst cargoField = $cargoFieldField.val();\n\tif (typeof cargoTable !== UNDEFINED && cargoTable.replace(/\\s+/, '') !== ''\n\t\t&& typeof cargoField !== UNDEFINED\n\t\t&& cargoField.replace(/\\s+/, '') !== '') {\n\n\t\tquery = \"&where=\" + cargoField + \"+=+'\" + fieldVal + \"'\";\n\n\t\tif (typeof category !== UNDEFINED &&\n\t\t\tcategory.replace(/\\s+/, '') !== '') {\n\t\t\tcategory = category.replace(/\\s/, '_');\n\t\t\tquery += \"+AND+cl_to=\" + category + \"+AND+cl_from=_pageID\";\n\t\t\tcargoTable += \",categorylinks\";\n\t\t}\n\n\t\tif (typeof namespace !== UNDEFINED) {\n\t\t\tquery += \"+AND+_pageNamespace=\";\n\t\t\tif (namespace.replace(/\\s+/, '') !== '') {\n\t\t\t\tconst ns = mw.config.get('wgNamespaceIds')[namespace.toLowerCase()];\n\t\t\t\tif (typeof ns !== UNDEFINED) {\n\t\t\t\t\tquery += ns;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tquery += \"0\";\n\t\t\t}\n\t\t}\n\n\t\tquery += \"&limit=1\";\n\n\t\turl += \"cargoquery&tables=\" + cargoTable + \"&fields=\" + cargoField +\n\t\t\tquery;\n\t\tisNotUnique = true;\n\t\t$.ajax({\n\t\t\turl: url,\n\t\t\tdataType: 'json',\n\t\t\tasync: false,\n\t\t\tsuccess: function(data) {\n\t\t\t\tif (data.cargoquery.length === 0) {\n\t\t\t\t\tisNotUnique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (isNotUnique) {\n\t\t\tthis.addErrorMessage( 'pf_not_unique_error' );\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn true;\n\n};\n\n$.fn.validateMandatoryComboBox = function() {\n\tconst $combobox = this.find(':input');\n\tif ($combobox.val() === null || $combobox.val() === '') {\n\t\tthis.addErrorMessage( 'pf_blank_error' );\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateMandatoryDateField = function() {\n\tif (this.find(\".dayInput\").val() === '' ||\n\t\tthis.find(\".monthInput\").val() === '' ||\n\t\tthis.find(\".yearInput\").val() === '') {\n\t\tthis.addErrorMessage( 'pf_blank_error' );\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateMandatoryRadioButton = function() {\n\tconst checkedValue = this.find(\"input:checked\").val();\n\tif (!checkedValue || checkedValue == '') {\n\t\tthis.addErrorMessage('pf_blank_error');\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateMandatoryCheckboxes = function() {\n\t// Get the number of checked checkboxes within this span - must\n\t// be at least one.\n\tconst numChecked = this.find(\"input:checked\").length;\n\tif (numChecked === 0) {\n\t\tthis.addErrorMessage('pf_blank_error');\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateMandatoryTree = function() {\n\tconst input_value = this.find( 'input' ).attr( 'value' );\n\tif ( input_value === undefined || input_value === '' ) {\n\t\tthis.addErrorMessage( 'pf_blank_error' );\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n$.fn.validateMandatoryDatePicker = function() {\n\tconst input = this.find('input');\n\tif (input.val() === null || input.val() === '') {\n\t\tthis.addErrorMessage( 'pf_blank_error' );\n\t\treturn false;\n\t} else {\n\t\treturn true;\n\t}\n};\n\n/*\n * Type-based validation\n */\n\n$.fn.validateURLField = function() {\n\tconst fieldVal = this.find(\"input\").val();\n\tlet url_protocol = mw.config.get( 'wgUrlProtocols' );\n\t//removing backslash before colon from url_protocol string\n\turl_protocol = url_protocol.replace( /\\\\:/, ':' );\n\t//removing '//' from wgUrlProtocols as this causes to match any protocol in regexp\n\turl_protocol = url_protocol.replace( /\\|\\\\\\/\\\\\\//, '' );\n\tconst url_regexp = new RegExp( '(' + url_protocol + ')' + '(\\\\w+:{0,1}\\\\w*@)?(\\\\S+)(:[0-9]+)?(\\/|\\/([\\\\w#!:.?+=&%@!\\\\-\\/]))?' );\n\tif (fieldVal === \"\" || url_regexp.test(fieldVal)) {\n\t\treturn true;\n\t} else {\n\t\tthis.addErrorMessage( 'pf_bad_url_error' );\n\t\treturn false;\n\t}\n};\n\n$.fn.validateEmailField = function() {\n\tconst fieldVal = this.find(\"input\").val();\n\t// code borrowed from http://javascript.internet.com/forms/email-validation---basic.html\n\tconst email_regexp = /^\\s*\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,63})+\\s*$/;\n\tif (fieldVal === '' || email_regexp.test(fieldVal)) {\n\t\treturn true;\n\t} else {\n\t\tthis.addErrorMessage( 'pf_bad_email_error' );\n\t\treturn false;\n\t}\n};\n\n$.fn.validateNumberField = function() {\n\tconst fieldVal = this.find(\"input\").val();\n\t// Handle \"E notation\"/scientific notation (\"1.2e-3\") in addition\n\t// to regular numbers\n\tif (fieldVal === '' ||\n\tfieldVal.match(/^\\s*[\\-+]?((\\d{1,3}(,\\d{3})+[\\.,]?\\d*)|(\\d*[\\.,]?\\d+))([eE]?[\\-\\+]?\\d+)?\\s*$/)) {\n\t\treturn true;\n\t} else {\n\t\tthis.addErrorMessage( 'pf_bad_number_error' );\n\t\treturn false;\n\t}\n};\n\n$.fn.validateIntegerField = function() {\n\tconst fieldVal = this.find(\"input\").val();\n\tif ( fieldVal === '' || fieldVal == parseInt( fieldVal, 10 ) ) {\n\t\treturn true;\n\t} else {\n\t\tthis.addErrorMessage( 'pf_bad_integer_error' );\n\t\treturn false;\n\t}\n};\n\n$.fn.validateDateField = function() {\n\t// validate only if day and year fields are both filled in\n\tconst dayVal = this.find(\".dayInput\").val();\n\tconst yearVal = this.find(\".yearInput\").val();\n\tif (dayVal === '' || yearVal === '') {\n\t\treturn true;\n\t} else if (dayVal.match(/^\\d+$/) && dayVal <= 31) {\n\t\t// no year validation, since it can also include\n\t\t// 'BC' and possibly other non-number strings\n\t\treturn true;\n\t} else {\n\t\tthis.addErrorMessage( 'pf_bad_date_error' );\n\t\treturn false;\n\t}\n};\n\n// Standalone pipes are not allowed, because they mess up the template\n// parsing; unless they're part of a call to a template or a parser function.\n$.fn.checkForPipes = function() {\n\t// We need to check for a few different things because this is\n\t// called for a variety of different input types.\n\tlet fieldVal = this.find(\"textarea\").val();\n\tif ( fieldVal === undefined ) {\n\t\tfieldVal = this.find(\"select\").val();\n\t}\n\tif ( fieldVal === undefined ) {\n\t\tfieldVal = this.find(\"input\").val();\n\t}\n\tif ( fieldVal === undefined ) {\n\t\tfieldVal = this.text();\n\t}\n\tif ( fieldVal === undefined ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray(fieldVal) ) {\n\t\tfieldVal = fieldVal.join();\n\t}\n\n\tif ( !fieldVal.includes('|') ) {\n\t\treturn true;\n\t}\n\n\t// Also allow pipes within special tags, like <pre> or <syntaxhighlight>.\n\t// Code copied, more or less, from PFTemplateInForm::escapeNonTemplatePipes().\n\tconst startAndEndTags = [\n\t\t[ '<pre', 'pre>' ],\n\t\t[ '<syntaxhighlight', 'syntaxhighlight>' ],\n\t\t[ '<source', 'source>' ],\n\t\t[ '<ref', 'ref>' ]\n\t];\n\n\tfor ( const i in startAndEndTags ) {\n\t\tconst startTag = startAndEndTags[i][0];\n\t\tconst endTag = startAndEndTags[i][1];\n\t\tconst pattern = RegExp( \"(\" + startTag + \"[^]*?)\\\\|([^]*?\" + endTag + \")\", 'i' );\n\t\tvar matches;\n\t\twhile ( ( matches = fieldVal.match( pattern ) ) !== null ) {\n\t\t\t// Special handling, to avoid escaping pipes\n\t\t\t// within a string that looks like:\n\t\t\t// startTag ... endTag | startTag ... endTag\n\t\t\tif ( matches[1].includes( endTag ) &&\n\t\t\t\tmatches[2].includes( startTag ) ) {\n\t\t\t\tfieldVal = fieldVal.replace( pattern, \"$1\" + \"\\2\" + \"$2\");\n\t\t\t} else {\n\t\t\t\tfieldVal = fieldVal.replace( pattern, \"$1\" + \"\\1\" + \"$2\" );\n\t\t\t}\n\t\t}\n\t}\n\tfieldVal = fieldVal.replace( \"\\2\", '|' );\n\n\t// Now check for pipes outside of brackets.\n\tlet nextPipe,\n\t\tnextDoubleBracketsStart,\n\t\tnextDoubleBracketsEnd;\n\n\t// There's at least one pipe - here's where the real work begins.\n\t// We do a mini-parsing of the string to try to make sure that every\n\t// pipe is within either double square brackets (links) or double\n\t// curly brackets (parser functions, template calls).\n\t// For simplicity's sake, turn all curly brackets into square brackets,\n\t// so we only have to check for one thing.\n\t// This will incorrectly allow bad text like \"[[a|b}}\", but hopefully\n\t// that's not a major problem.\n\tfieldVal = fieldVal.replace( /{{/g, '[[' );\n\tfieldVal = fieldVal.replace( /}}/g, ']]' );\n\tlet curIndex = 0;\n\tlet numUnclosedBrackets = 0;\n\twhile ( true ) {\n\t\tnextDoubleBracketsStart = fieldVal.indexOf( '[[', curIndex );\n\n\t\tif ( numUnclosedBrackets === 0 ) {\n\t\t\tnextPipe = fieldVal.indexOf( '|', curIndex );\n\t\t\tif ( nextPipe < 0 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif ( nextDoubleBracketsStart < 0 || nextPipe < nextDoubleBracketsStart ) {\n\t\t\t\t// There's a pipe where it shouldn't be.\n\t\t\t\tthis.addErrorMessage( 'pf_pipe_error' );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif ( nextDoubleBracketsEnd < 0 ) {\n\t\t\t// Something is malformed - might as well throw\n\t\t\t// an error.\n\t\t\tthis.addErrorMessage( 'pf_pipe_error' );\n\t\t\treturn false;\n\t\t}\n\n\t\tnextDoubleBracketsEnd = fieldVal.indexOf( ']]', curIndex );\n\n\t\tif ( nextDoubleBracketsStart >= 0 && nextDoubleBracketsStart < nextDoubleBracketsEnd ) {\n\t\t\tnumUnclosedBrackets++;\n\t\t\tcurIndex = nextDoubleBracketsStart + 2;\n\t\t} else {\n\t\t\tnumUnclosedBrackets--;\n\t\t\tcurIndex = nextDoubleBracketsEnd + 2;\n\t\t}\n\t}\n\n\t// We'll never get here, but let's have this line anyway.\n\treturn true;\n};\n\nfunction leftPad( number, targetLength ) {\n\tvar negative = false;\n\tif ( number < 0 ) {\n\t\tnumber = number * -1;\n\t\tvar negative = true;\n\t}\n\tlet output = number + '';\n\twhile ( output.length < targetLength ) {\n\t\toutput = '0' + output;\n\t}\n\tif ( negative ) {\n\t\toutput = '-' + output\n\t}\n\treturn output;\n}\n\nfunction validateStartEndDateField( startInput, endInput ) {\n\tif ( !startInput.length || !endInput.length ) {\n\t\treturn true;\n\t}\n\n\t// We get the index, instead of the actual value, of the month dropdown in\n\t// case it's a text value (i.e., with $wgAmericanDates.)\n\tconst startYearVal = leftPad( startInput.find(\".yearInput\").val(),4 );\n\tconst startMonthVal = leftPad( startInput.find(\".monthInput\").prop('selectedIndex'),2 );\n\tconst startDayVal = leftPad( startInput.find(\".dayInput\").val(),2 );\n\n\tconst endYearVal = leftPad( endInput.find(\".yearInput\").val(),4 );\n\tconst endMonthVal = leftPad( endInput.find(\".monthInput\").prop('selectedIndex'),2 );\n\tconst endDayVal = leftPad( endInput.find(\".dayInput\").val(),2 );\n\n\tconst startDate = startYearVal + \"/\" + startMonthVal + \"/\" + startDayVal;\n\n\tconst endDate = endYearVal + \"/\" + endMonthVal + \"/\" + endDayVal;\n\n\tif ( startDate <= endDate || endDate == \"0000/00/00\") {\n\t\treturn true;\n\t} else {\n\t\tif ( endInput ) {\n\t\t\tendInput.addErrorMessage( 'pf_start_end_date_error' )\n\t\t} else if ( startInput ) {\n\t\t\tstartInput.addErrorMessage( 'pf_start_end_date_error' )\n\t\t}\n\t\treturn false;\n\t}\n}\n\nfunction validateStartEndDateTimeField( startInput, endInput ) {\n\tif ( !startInput.length || !endInput.length ) {\n\t\treturn true;\n\t}\n\tconst startYearVal = leftPad( startInput.find(\".yearInput\").val(),4 );\n\tconst startMonthVal = leftPad( startInput.find(\".monthInput\").val(),2 );\n\tconst startDayVal = leftPad( startInput.find(\".dayInput\").val(),2 );\n\tconst startHoursVal = leftPad( startInput.find(\".hoursInput\").val(),2 );\n\tconst startMinutesVal = leftPad( startInput.find(\".minutesInput\").val(),2 );\n\tconst startSecondsVal = leftPad( startInput.find(\".secondsInput\").val(),2 );\n\tconst startAmPmVal = startInput.find(\".ampmInput\").val();\n\n\tconst endYearVal = leftPad( endInput.find(\".yearInput\").val(),4 );\n\tconst endMonthVal = leftPad( endInput.find(\".monthInput\").val(),2 );\n\tconst endDayVal = leftPad( endInput.find(\".dayInput\").val(),2 );\n\tconst endHoursVal = leftPad( endInput.find(\".hoursInput\").val(),2 );\n\tconst endMinutesVal = leftPad( endInput.find(\".minutesInput\").val(),2 );\n\tconst endSecondsVal = leftPad( endInput.find(\".secondsInput\").val(),2 );\n\tconst endAmPmVal = endInput.find(\".ampmInput\").val();\n\n\tconst startDateTime = startYearVal + \"/\" + startMonthVal + \"/\" + startDayVal + \" \" +\n\tstartHoursVal + \":\" + startMinutesVal + \":\" + startSecondsVal + \" \" + startAmPmVal;\n\n\tconst endDateTime = endYearVal + \"/\" + endMonthVal + \"/\" + endDayVal + \" \" +\n\t\tendHoursVal + \":\" + endMinutesVal + \":\" + endSecondsVal + \" \" + endAmPmVal;\n\n\tif ( startDateTime <= endDateTime || endDateTime == \"0000/00/00 00:00:00 \" ) {\n\t\treturn true;\n\t} else {\n\t\tif ( endInput ) {\n\t\t\tendInput.addErrorMessage( 'pf_start_end_datetime_error' )\n\t\t} else if ( startInput ) {\n\t\t\tstartInput.addErrorMessage( 'pf_start_end_datetime_error' )\n\t\t}\n\t\treturn false;\n\t}\n\n}\n\nwindow.validateAll = function() {\n\n\t// Remove all old error messages.\n\t$(\".errorMessage\").remove();\n\n\t// Hook that fires on form submission, before the validation.\n\tmw.hook('pf.formValidationBefore').fire();\n\n\tconst args = {numErrors: 0};\n\tmw.hook('pf.formValidation').fire( args );\n\tlet num_errors = args.numErrors;\n\n\t// Make sure all inputs are ignored in the \"starter\" instance\n\t// of any multiple-instance template.\n\t$(\".multipleTemplateStarter\").find(\"span, div\").addClass(\"hiddenByPF\");\n\n\t$(\".multipleTemplateList\").each( function() {\n\t\tif (! $(this).validateNumInstances() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\n\t$(\"span.inputSpan.mandatoryFieldSpan\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateMandatoryField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.comboboxSpan.mandatoryFieldSpan\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateMandatoryComboBox() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.dateInput.mandatoryFieldSpan\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateMandatoryDateField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.radioButtonSpan.mandatoryFieldSpan\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateMandatoryRadioButton() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.checkboxesSpan.mandatoryFieldSpan\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateMandatoryCheckboxes() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"div.pfTreeInputWrapper.mandatory\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateMandatoryTree() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"div.pfPickerWrapper.mandatory\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).find('.pfPicker').validateMandatoryDatePicker() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.inputSpan.uniqueFieldSpan\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateUniqueField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.inputSpan, span.comboboxSpan\").not(\".hiddenByPF, .freeText, .pageSection\").each( function() {\n\t\tif (! $(this).checkForPipes() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.URLInput\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateURLField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.emailInput\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateEmailField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.numberInput\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateNumberField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.integerInput\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateIntegerField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"span.dateInput\").not(\".hiddenByPF\").each( function() {\n\t\tif (! $(this).validateDateField() ) {\n\t\t\tnum_errors += 1;\n\t\t}\n\t});\n\t$(\"input.modifiedInput\").not(\".hiddenByPF\").each( function() {\n\t\t// No separate function needed.\n\t\t$(this).parent().addErrorMessage( 'pf_modified_input_error' );\n\t\tnum_errors += 1;\n\t});\n\n\tconst startDateInput = $(\"span.startDateInput\").not(\".hiddenByPF\")\n\tconst endDateInput = $(\"span.endDateInput\").not(\".hiddenByPF\")\n\n\tif ( !validateStartEndDateField( startDateInput, endDateInput ) ) {\n\t\tnum_errors += 1;\n\t}\n\n\tconst startDateTimeInput = $(\"span.startDateTimeInput\").not(\".hiddenByPF\")\n\tconst endDateTimeInput = $(\"span.endDateTimeInput\").not(\".hiddenByPF\")\n\n\tif ( !validateStartEndDateTimeField( startDateTimeInput, endDateTimeInput ) ) {\n\t\tnum_errors += 1;\n\t}\n\t// call registered validation functions\n\tconst pfdata = $(\"#pfForm\").data('PageForms');\n\n\tif ( pfdata && pfdata.validationFunctions.length > 0 ) { // found data object?\n\n\t\t// for every registered input\n\t\tfor ( let i = 0; i < pfdata.validationFunctions.length; i++ ) {\n\n\t\t\t// if input is not part of multipleTemplateStarter\n\t\t\tif ( typeof pfdata.validationFunctions[i] !== 'undefined' &&\n\t\t\t\t$(\"#\" + pfdata.validationFunctions[i].input).closest(\".multipleTemplateStarter\").length === 0 &&\n\t\t\t\t$(\"#\" + pfdata.validationFunctions[i].input).closest(\".hiddenByPF\").length === 0 ) {\n\n\t\t\t\tif (! pfdata.validationFunctions[i].valfunction(\n\t\t\t\t\t\tpfdata.validationFunctions[i].input,\n\t\t\t\t\t\tpfdata.validationFunctions[i].parameters)\n\t\t\t\t\t) {\n\t\t\t\t\tnum_errors += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (num_errors > 0) {\n\t\t// add error header, if it's not there already\n\t\tif ($(\"#form_error_header\").length === 0) {\n\t\t\t$(\"#contentSub\").append('<div id=\"form_error_header\" class=\"errorbox\" style=\"font-size: medium\"><img src=\"' + mw.config.get( 'wgPageFormsScriptPath' ) + '/skins/MW-Icon-AlertMark.png\" />&nbsp;' + mw.message( 'pf_formerrors_header' ).escaped() + '</div><br clear=\"both\" />');\n\t\t}\n\t\t// The \"Save page\", etc. buttons were disabled to prevent\n\t\t// double-clicking; since there has been an error, re-enable\n\t\t// them so that the form can be submitted again after the\n\t\t// user tries to fix these errors.\n\t\t$( '.editButtons > .oo-ui-buttonElement' ).removeClass( 'oo-ui-widget-disabled' ).addClass( 'oo-ui-widget-enabled' );\n\t\t// Also undo the indicator that the form was submitted.\n\t\t$( '#pfForm' ).data('submitted', false);\n\t\tscroll(0, 0);\n\t} else {\n\t\t// Disable inputs hidden due to either \"show on select\" or\n\t\t// because they're part of the \"starter\" div for\n\t\t// multiple-instance templates, so that they aren't\n\t\t// submitted by the form.\n\t\t$('.hiddenByPF').find(\"input, select, textarea\").not(':disabled')\n\t\t.prop('disabled', true)\n\t\t.addClass('disabledByPF');\n\t\t//remove error box if it exists because there are no errors in the form now\n\t\t$(\"#contentSub\").find(\".errorbox\").remove();\n\t}\n\n\t// Hook that fires on form submission, after the validation.\n\tmw.hook('pf.formValidationAfter').fire();\n\n\treturn (num_errors === 0);\n};\n\n/**\n * Minimize all instances if the total height of all the instances\n * is over 800 pixels - to allow for easier navigation and sorting.\n */\n$.fn.possiblyMinimizeAllOpenInstances = function() {\n\tif ( ! this.hasClass( 'minimizeAll' ) ) {\n\t\treturn;\n\t}\n\n\tconst displayedFieldsWhenMinimized = this.attr('data-displayed-fields-when-minimized');\n\tlet allDisplayedFields = null;\n\tif ( displayedFieldsWhenMinimized ) {\n\t\tallDisplayedFields = displayedFieldsWhenMinimized.split(',').map((item) => item.trim().toLowerCase());\n\t}\n\n\tthis.find('.multipleTemplateInstance').not('.minimized').each( function() {\n\t\tconst $instance = $(this);\n\t\t$instance.addClass('minimized');\n\t\tlet valuesStr = '';\n\t\t$instance.find( \"input[type != 'hidden'][type != 'button'], select, textarea, div.ve-ce-surface\" ).each( function() {\n\t\t\t// If the set of fields to be displayed was specified in\n\t\t\t// the form definition, check against that list.\n\t\t\tif ( allDisplayedFields !== null ) {\n\t\t\t\tconst fieldFullName = $(this).attr('name');\n\t\t\t\tif ( !fieldFullName ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst matches = fieldFullName.match(/.*\\[.*\\]\\[(.*)\\]/);\n\t\t\t\tconst fieldRealName = matches[1].toLowerCase();\n\t\t\t\tif ( !allDisplayedFields.includes( fieldRealName ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet curVal = $(this).val();\n\t\t\tif ( $(this).hasClass('ve-ce-surface') ) {\n\t\t\t\t// Special handling for VisualEditor/VEForAll textareas.\n\t\t\t\tcurVal = $(this).text();\n\t\t\t}\n\t\t\tif ( typeof curVal !== 'string' || curVal === '' ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst inputType = $(this).attr('type');\n\t\t\tif ( inputType === 'checkbox' || inputType === 'radio' ) {\n\t\t\t\tif ( ! $(this).is(':checked') ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( curVal.length > 70 ) {\n\t\t\t\tcurVal = curVal.slice(0, 70) + \"...\";\n\t\t\t}\n\t\t\tif ( valuesStr !== '' ) {\n\t\t\t\tvaluesStr += ' &middot; ';\n\t\t\t}\n\t\t\tvaluesStr += curVal;\n\t\t});\n\t\tif ( valuesStr === '' ) {\n\t\t\tvaluesStr = '<em>' + mw.message('pf-formedit-nodata').escaped() + '</em>';\n\t\t}\n\t\t$instance.find('.instanceMain').fadeOut( \"medium\", () => {\n\t\t\t$instance.find('.instanceRearranger').after('<td class=\"fieldValuesDisplay\">' + valuesStr + '</td>');\n\t\t});\n\t});\n};\n\n$.fn.displayWizardScreen = function( screenNum, $wizardNav ) {\n\tconst $wizardScreens = $(this);\n\tlet $curScreen;\n\n\t$wizardScreens.each( function(i) {\n\t\t// screenNum starts at 1, not 0.\n\t\tif ( i + 1 == screenNum ) {\n\t\t\t$curScreen = $(this);\n\t\t\t$(this).show();\n\t\t} else {\n\t\t\t$(this).hide();\n\t\t}\n\t});\n\n\t// The rest of this function is taken up with displaying the\n\t// navigation to the next and previous wizard screens.\n\tconst numScreens = $wizardScreens.length;\n\n\t$wizardNav.empty();\n\n\tconst $navButtons = $('<div class=\"pf-wizard-buttons\"></div>');\n\n\tif ( screenNum > 1 ) {\n\t\tlet backText = $curScreen.attr('data-back-text');\n\t\tif ( backText == undefined ) {\n\t\t\tbackText = mw.msg('pf-wizard-back');\n\t\t}\n\t\tconst prevButton = new OO.ui.ButtonWidget( {\n\t\t\tlabel: backText,\n\t\t\ticon: 'previous',\n\t\t\tclasses: [ 'pf-wizard-back-button' ]\n\t\t} );\n\t\tprevButton.$element.click( () => {\n\t\t\t$wizardScreens.displayWizardScreen( screenNum - 1, $wizardNav );\n\t\t});\n\t\t$navButtons.append( prevButton.$element );\n\t}\n\n\tif ( screenNum < numScreens ) {\n\t\tlet continueText = $curScreen.attr('data-continue-text');\n\t\tif ( continueText == undefined ) {\n\t\t\tcontinueText = mw.msg('pf-wizard-continue');\n\t\t}\n\t\tconst continueButton = new OO.ui.ButtonWidget( {\n\t\t\tlabel: continueText,\n\t\t\tflags: [\n\t\t\t\t'primary',\n\t\t\t\t'progressive'\n\t\t\t],\n\t\t\ticon: 'next',\n\t\t\tclasses: [ 'pf-wizard-continue-button' ]\n\t\t} );\n\t\tcontinueButton.$element.click( () => {\n\t\t\t$wizardScreens.displayWizardScreen( screenNum + 1, $wizardNav );\n\t\t});\n\t\t$navButtons.append( continueButton.$element );\n\t}\n\t$wizardNav.append( $navButtons );\n\n\t// We need this in order to clear the float from the \"previous\" button.\n\t$wizardNav.append('<br style=\"clear: both;\" />');\n\n\t// Use progress bar if the number of screens is greater than 10 and circles in the other case\n\tif ( numScreens > 10 ) {\n\t\tconst progressBar = new OO.ui.ProgressBarWidget( {\n\t\t\tprogress: 100 * screenNum / numScreens\n\t\t} );\n\t\tconst progressBarLayout = new OO.ui.FieldLayout(\n\t\t\tprogressBar,\n\t\t\t{\n\t\t\t\tlabel: 'Step ' + screenNum + ' of ' + numScreens,\n\t\t\t\talign: 'inline'\n\t\t\t}\n\t\t);\n\t\t$wizardNav.append( progressBarLayout.$element );\n\t} else {\n\t\t$( '.pf-wizard-buttons' ).addClass( 'pf-wizard-buttons-circle' );\n\t\tconst progressCiclesUL = $( '<ul class=\"pfWizardCircles\"></ul>' );\n\t\tfor( let i = 1; i <= numScreens; i++ ) {\n\t\t\tlet circle = '<li>' + i + '</li>';\n\t\t\tif ( i == screenNum ) {\n\t\t\t\tcircle = '<li class=\"active\">' + i + '</li>';\n\t\t\t}\n\t\t\tprogressCiclesUL.append( $( circle ) );\n\t\t}\n\t\t$wizardNav.append( progressCiclesUL );\n\t}\n};\n\nlet num_elements = 0;\n\n/**\n * Functions for multiple-instance templates.\n *\n * @param {Mixed} addAboveCurInstance\n * @return {Mixed}\n */\n$.fn.addInstance = function( addAboveCurInstance ) {\n\tconst wgPageFormsShowOnSelect = mw.config.get( 'wgPageFormsShowOnSelect' );\n\tconst wgPageFormsHeightForMinimizingInstances = mw.config.get( 'wgPageFormsHeightForMinimizingInstances' );\n\tconst $wrapper = this.closest(\".multipleTemplateWrapper\");\n\tconst $multipleTemplateList = $wrapper.children('.multipleTemplateList');\n\n\t// If the nubmer of instances is already at the maximum allowed,\n\t// exit here.\n\tif ( $multipleTemplateList.isAtMaxInstances() ) {\n\t\treturn false;\n\t}\n\n\tif ( wgPageFormsHeightForMinimizingInstances >= 0 ) {\n\t\tif ( ! $multipleTemplateList.hasClass('minimizeAll') &&\n\t\t\t$multipleTemplateList.height() >= wgPageFormsHeightForMinimizingInstances ) {\n\t\t\t$multipleTemplateList.addClass('minimizeAll');\n\t\t}\n\t\tif ( $multipleTemplateList.hasClass('minimizeAll') ) {\n\t\t\t$multipleTemplateList\n\t\t\t\t.addClass('currentFocus')\n\t\t\t\t.possiblyMinimizeAllOpenInstances();\n\t\t}\n\t}\n\n\t// Global variable.\n\tnum_elements++;\n\n\t// Create the new instance\n\tconst $new_div = $multipleTemplateList\n\t\t.children(\".multipleTemplateStarter\")\n\t\t.clone()\n\t\t.removeClass('multipleTemplateStarter')\n\t\t.addClass('multipleTemplateInstance')\n\t\t.addClass('multipleTemplate') // backwards compatibility\n\t\t.removeAttr(\"id\")\n\t\t.fadeTo(0,0)\n\t\t.slideDown('fast', function() {\n\t\t\t$(this).fadeTo('fast', 1);\n\t\t});\n\n\t// Add on a new attribute, \"data-origID\", representing the ID of all\n\t// HTML elements that had an ID; and delete the actual ID attribute\n\t// of any divs and spans (presumably, these exist only for the\n\t// sake of \"show on select\"). We do the deletions because no two\n\t// elements on the page are allowed to have the same ID.\n\t$new_div.find('[id!=\"\"]').attr('data-origID', function() {\n\t\treturn this.id;\n\t});\n\t$new_div.find('div[id!=\"\"], span[id!=\"\"]').removeAttr('id');\n\n\t$new_div.find('.hiddenByPF')\n\t\t.removeClass('hiddenByPF')\n\t\t.find('.disabledByPF')\n\t\t.prop('disabled', false)\n\t\t.removeClass('disabledByPF');\n\n\t// Make internal ID unique for the relevant form elements, and replace\n\t// the [num] index in the element names with an actual unique index\n\t$new_div.find(\"input, select, textarea\").each(\n\t\tfunction() {\n\t\t\t// Add in a 'b' at the end of the name to reduce the\n\t\t\t// chance of name collision with another field\n\t\t\tif (this.name) {\n\t\t\t\tconst old_name = this.name.replace(/\\[num\\]/g, '');\n\t\t\t\t$(this).attr('origName', old_name);\n\t\t\t\tthis.name = this.name.replace(/\\[num\\]/g, '[' + num_elements + 'b]');\n\t\t\t}\n\n\t\t\t// Do the same thing with \"feeds to map\", which also\n\t\t\t// needs to be modified for each instance.\n\t\t\tconst feedsToMap = $(this).attr('data-feeds-to-map');\n\t\t\tif ( feedsToMap !== undefined && feedsToMap !== false ) {\n\t\t\t\t$(this).attr('data-feeds-to-map', feedsToMap.replace(/\\[num\\]/g, '[' + num_elements + 'b]') );\n\t\t\t}\n\n\t\t\tif (this.id) {\n\n\t\t\t\tconst old_id = this.id;\n\n\t\t\t\tthis.id = this.id.replace(/input_/g, 'input_' + num_elements + '_');\n\n\t\t\t\t// TODO: Data in wgPageFormsShowOnSelect should probably be stored in\n\t\t\t\t// $(\"#pfForm\").data('PageForms')\n\t\t\t\tif ( wgPageFormsShowOnSelect[ old_id ] ) {\n\t\t\t\t\twgPageFormsShowOnSelect[ this.id ] = wgPageFormsShowOnSelect[ old_id ];\n\t\t\t\t}\n\n\t\t\t\t// register initialization and validation methods for new inputs\n\n\t\t\t\tconst pfdata = $(\"#pfForm\").data('PageForms');\n\t\t\t\tif ( pfdata ) { // found data object?\n\t\t\t\t\tlet i;\n\t\t\t\t\tif ( pfdata.initFunctions[old_id] ) {\n\n\t\t\t\t\t\t// For every initialization method for\n\t\t\t\t\t\t// input with id old_id, register the\n\t\t\t\t\t\t// method for the new input.\n\t\t\t\t\t\tfor ( i = 0; i < pfdata.initFunctions[old_id].length; i++ ) {\n\n\t\t\t\t\t\t\t$(this).PageForms_registerInputInit(\n\t\t\t\t\t\t\t\tpfdata.initFunctions[old_id][i].initFunction,\n\t\t\t\t\t\t\t\tpfdata.initFunctions[old_id][i].parameters,\n\t\t\t\t\t\t\t\ttrue //do not yet execute\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// For every validation method for the\n\t\t\t\t\t// input with ID old_id, register it\n\t\t\t\t\t// for the new input.\n\t\t\t\t\tfor ( i = 0; i < pfdata.validationFunctions.length; i++ ) {\n\n\t\t\t\t\t\tif ( typeof pfdata.validationFunctions[i] !== 'undefined' &&\n\t\t\t\t\t\t\tpfdata.validationFunctions[i].input === old_id ) {\n\n\t\t\t\t\t\t\t$(this).PageForms_registerInputValidation(\n\t\t\t\t\t\t\t\tpfdata.validationFunctions[i].valfunction,\n\t\t\t\t\t\t\t\tpfdata.validationFunctions[i].parameters\n\t\t\t\t\t\t\t);\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}\n\t);\n\n\t// datepicker and datetimepicker inputs require special handling.\n\t$new_div.find(\"div.pfPicker\").attr('data-ooui', function() {\n\t\treturn $(this).attr('data-ooui').replace(/\\[num\\]/g, '[' + num_elements + 'b]');\n\t});\n\n\t$new_div.find('a').attr('href', function() {\n\t\t// Make sure not to add a valid \"href\" attribute to <a> tags that don't have it.\n\t\tif ( this.href == undefined || this.href == false ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.href.replace(/input_/g, 'input_' + num_elements + '_');\n\t});\n\n\t// Update the 'Upload file' link's data attribute to point to the new input ID.\n\t$new_div.find( '.ext-pageforms-uploadable' ).attr(\n\t\t'data-input-id',\n\t\t( index, attr ) => attr.replace( /input_/g, 'input_' + num_elements + '_' )\n\t);\n\n\t$new_div.find('span').attr('id', function() {\n\t\treturn this.id.replace(/span_/g, 'span_' + num_elements + '_');\n\t});\n\n\t// Add the new instance.\n\tif ( addAboveCurInstance ) {\n\t\t$new_div.insertBefore(this.closest(\".multipleTemplateInstance\"))\n\t\t\t.hide().fadeIn();\n\t} else {\n\t\tthis.closest(\".multipleTemplateWrapper\")\n\t\t\t.children(\".multipleTemplateList\")\n\t\t\t.append($new_div.hide().fadeIn());\n\t}\n\n\t// Re-sequence tabindex values for all focusable elements on the entire form so that\n\t// keyboard navigation strictly follows the new logical visual DOM order after insertion.\n\tlet currentTabIndex = 1;\n\t$( '#pfForm' ).find( '[tabindex]' ).each( function() {\n\t\tconst ti = parseInt( $( this ).attr( 'tabindex' ), 10 );\n\t\t// Only re-sequence elements that intentionally participate in the tab order (exclude -1)\n\t\tif ( !isNaN( ti ) && ti > 0 ) {\n\t\t\t$( this ).attr( 'tabindex', currentTabIndex++ );\n\t\t}\n\t} );\n\n\t$new_div.initializeJSElements(true);\n\n\t// Initialize new inputs.\n\t$new_div.find(\"input, select, textarea\").each( function() {\n\t\tif ( ! this.id ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst pfdata = $(\"#pfForm\").data('PageForms');\n\t\tif ( ! pfdata ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// have to store data array: the id attribute\n\t\t// of 'this' might be changed in the init function\n\t\tconst thatData = pfdata.initFunctions[this.id] ;\n\t\tif ( !thatData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Call every initialization method for this input.\n\t\tfor ( let i = 0; i < thatData.length; i++ ) {\n\t\t\tlet initFunction = thatData[i].initFunction;\n\t\t\tif ( initFunction === undefined ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// If the code attempted to store this function before\n\t\t\t// it was defined, only its name was stored. In that\n\t\t\t// case, get the function now.\n\t\t\t// @TODO - move getFunctionFromName() so that it can be\n\t\t\t// called from here, which would be better than\n\t\t\t// window[].\n\t\t\tif ( typeof initFunction === 'string' ) {\n\t\t\t\tinitFunction = window[initFunction];\n\t\t\t}\n\t\t\tinitFunction(\n\t\t\t\tthis.id,\n\t\t\t\tthatData[i].parameters\n\t\t\t);\n\t\t}\n\t});\n\n\t// Hook that fires each time a new template instance is added.\n\t// The first parameter is a jQuery selection of the newly created instance div.\n\tmw.hook('pf.addTemplateInstance').fire($new_div);\n\n\t// Move keyboard focus to the first focusable field in the new instance.\n\t// This ensures that Tab/Enter-triggered instance creation places focus on\n\t// the first input (e.g., a topic dropdown) rather than on the \"add above\"\n\t// icon. We use a setTimeout to defer execution slightly, ensuring the\n\t// row's .fadeIn() animation has started so the elements are officially :visible.\n\tsetTimeout( () => {\n\t\tconst $firstFocusable = $new_div.find(\n\t\t\t'.oo-ui-inputWidget-input, .select2-selection, input:not([type=\"hidden\"]):not(:disabled), select:not(:disabled), textarea:not(:disabled)'\n\t\t).not( '.hiddenByPF, .disabledByPF' ).filter( ':visible' ).first();\n\t\tif ( $firstFocusable.length ) {\n\t\t\t$firstFocusable[0].focus();\n\t\t}\n\t}, 500 );\n};\n\n// The first argument is needed, even though it's an attribute of the element\n// on which this function is called, because it's the 'name' attribute for\n// regular inputs, and the 'origName' attribute for inputs in multiple-instance\n// templates.\n$.fn.setDependentAutocompletion = function( dependentField, baseField, baseValue ) {\n\t// Get data from either Cargo or Semantic MediaWiki.\n\tlet myServer = mw.config.get( 'wgScriptPath' ) + \"/api.php\",\n\t\twgPageFormsCargoFields = mw.config.get( 'wgPageFormsCargoFields' ),\n\t\twgPageFormsFieldProperties = mw.config.get( 'wgPageFormsFieldProperties' );\n\tmyServer += \"?action=pfautocomplete&format=json\";\n\tif ( wgPageFormsCargoFields.hasOwnProperty( dependentField ) ) {\n\t\tconst cargoTableAndFieldStr = wgPageFormsCargoFields[dependentField];\n\t\tconst cargoTableAndField = cargoTableAndFieldStr.split('|');\n\t\tconst cargoTable = cargoTableAndField[0];\n\t\tconst cargoField = cargoTableAndField[1];\n\t\tconst baseCargoTableAndFieldStr = wgPageFormsCargoFields[baseField];\n\t\tconst baseCargoTableAndField = baseCargoTableAndFieldStr.split('|');\n\t\tconst baseCargoTable = baseCargoTableAndField[0];\n\t\tconst baseCargoField = baseCargoTableAndField[1];\n\t\tmyServer += \"&cargo_table=\" + cargoTable + \"&cargo_field=\" + cargoField + \"&is_array=true\" + \"&base_cargo_table=\" + baseCargoTable + \"&base_cargo_field=\" + baseCargoField + \"&basevalue=\" + baseValue;\n\t} else {\n\t\tconst propName = wgPageFormsFieldProperties[dependentField];\n\t\tconst baseProp = wgPageFormsFieldProperties[baseField];\n\t\tmyServer += \"&property=\" + propName + \"&baseprop=\" + baseProp + \"&basevalue=\" + baseValue;\n\t}\n\tconst dependentValues = [];\n\tconst $thisInput = $(this);\n\t// We use $.ajax() here instead of $.getJSON() so that the\n\t// 'async' parameter can be set. That, in turn, is set because\n\t// if the 2nd, \"dependent\" field is a combo box, it can have weird\n\t// behavior: clicking on the down arrow for the combo box leads to a\n\t// \"blur\" event for the base field, which causes the possible\n\t// values to get recalculated, but not in time for the dropdown to\n\t// change values - it still shows the old values. By setting\n\t// \"async: false\", we guarantee that old values won't be shown - if\n\t// the values haven't been recalculated yet, the dropdown won't\n\t// appear at all.\n\t// @TODO - handle this the right way, by having special behavior for\n\t// the dropdown - it should get delayed until the values are\n\t// calculated, then appear.\n\t$.ajax({\n\t\turl: myServer,\n\t\tdataType: 'json',\n\t\tasync: false,\n\t\tsuccess: function(data) {\n\t\t\tconst realData = data.pfautocomplete;\n\t\t\t$.each(realData, (key, val) => {\n\t\t\t\tdependentValues.push(val.title);\n\t\t\t});\n\t\t\t$thisInput.data('autocompletevalues', dependentValues);\n\t\t}\n\t});\n};\n\n/**\n * Called on a 'base' field (e.g., for a country) - sets the autocompletion\n * for its 'dependent' field (e.g., for a city).\n *\n * @param {Mixed} partOfMultiple\n * @return {Mixed}\n */\n$.fn.setAutocompleteForDependentField = function( partOfMultiple ) {\n\tconst curValue = $(this).val();\n\tif ( curValue === null ) {\n\t\treturn this;\n\t}\n\n\tconst nameAttr = partOfMultiple ? 'origName' : 'name';\n\tconst name = $(this).attr(nameAttr);\n\tconst wgPageFormsDependentFields = mw.config.get( 'wgPageFormsDependentFields' );\n\tlet dependent_on_me = [];\n\tfor ( let i = 0; i < wgPageFormsDependentFields.length; i++ ) {\n\t\tconst dependentFieldPair = wgPageFormsDependentFields[i];\n\t\tif ( dependentFieldPair[0] === name ) {\n\t\t\tdependent_on_me.push(dependentFieldPair[1]);\n\t\t}\n\t}\n\tdependent_on_me = $.uniqueSort(dependent_on_me);\n\n\tconst self = this;\n\t$.each( dependent_on_me, function() {\n\t\tlet $element, cmbox, tokens,\n\t\t\tdependentField = this;\n\n\t\tif ( partOfMultiple ) {\n\t\t\t$element = $( self ).closest( '.multipleTemplateInstance' )\n\t\t\t\t.find('[origName=\"' + dependentField + '\"]');\n\t\t} else {\n\t\t\t$element = $('[name=\"' + dependentField + '\"]');\n\t\t}\n\n\t\tif ( $element.hasClass( 'pfTokens' ) ) {\n\t\t\ttokens = new pf.select2.tokens();\n\t\t\ttokens.refresh($element);\n\t\t} else {\n\t\t\t$element.setDependentAutocompletion(dependentField, name, curValue);\n\t\t}\n\t});\n\n\treturn this;\n};\n\n/**\n * Initialize all the JS-using elements contained within this block - can be\n * called for either the entire HTML body, or for a div representing an\n * instance of a multiple-instance template.\n *\n * @param {Mixed} partOfMultiple\n */\n$.fn.initializeJSElements = function( partOfMultiple ) {\n\tthis.find(\".pfShowIfSelected\").each( function() {\n\t\t// Avoid duplicate calls on any one element.\n\t\tif ( !partOfMultiple && $(this).parents('.multipleTemplateWrapper').length > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Don't call this for combobox inputs, except when a new\n\t\t// multiple-instance template instance is created - in all\n\t\t// other cases, their \"show on select\" is triggered separately.\n\t\tif ( $(this).attr( 'data-input-type' ) == 'combobox' ) {\n\t\t\tif ( partOfMultiple ) {\n\t\t\t\t$(this).showIfSelected(true, true)\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t$(this)\n\t\t.showIfSelected(partOfMultiple, true)\n\t\t.change( function() {\n\t\t\t$(this).showIfSelected(partOfMultiple, false);\n\t\t});\n\t});\n\n\tthis.find(\".pfShowIfChecked\").each( function() {\n\t\t// Avoid duplicate calls on any one element.\n\t\tif ( !partOfMultiple && $(this).parents('.multipleTemplateWrapper').length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\t$(this)\n\t\t.showIfChecked(partOfMultiple, true)\n\t\t.click( function() {\n\t\t\t$(this).showIfChecked(partOfMultiple, false);\n\t\t});\n\t});\n\n\tthis.find(\".pfShowIfCheckedCheckbox\").each( function() {\n\t\t// Avoid duplicate calls on any one element.\n\t\tif ( !partOfMultiple && $(this).parents('.multipleTemplateWrapper').length > 0 ) {\n\t\t\treturn;\n\t\t}\n\t\t$(this)\n\t\t.showIfCheckedCheckbox(partOfMultiple, true)\n\t\t.click( function() {\n\t\t\t$(this).showIfCheckedCheckbox(partOfMultiple, false);\n\t\t});\n\t});\n\n\tif ( partOfMultiple ) {\n\t\t// Enable the new remove button\n\t\tthis.find(\".removeButton\").click( function() {\n\n\t\t\t// Unregister initialization and validation for deleted inputs\n\t\t\t$(this).parentsUntil( '.multipleTemplateInstance' ).last().parent().find(\"input, select, textarea\").each( function() {\n\t\t\t\t$(this).PageForms_unregisterInputInit();\n\t\t\t\t$(this).PageForms_unregisterInputValidation();\n\t\t\t});\n\n\t\t\t// Remove the encompassing div for this instance.\n\t\t\t$(this).closest(\".multipleTemplateInstance\")\n\t\t\t.fadeTo('fast', 0, function() {\n\t\t\t\t$(this).slideUp('fast', function() {\n\t\t\t\t\t$(this).remove();\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn false;\n\t\t});\n\t\tthis.find(\".removeButton\").keydown( function( e ) {\n\t\t\tif ( e.key === 'Enter' || e.key === ' ' ) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).trigger( 'click' );\n\t\t\t}\n\t\t});\n\n\t\t// ...and the new adder\n\t\tthis.find('.addAboveButton').click( function() {\n\t\t\t$(this).addInstance( true );\n\t\t\treturn false; // needed to disable <a> behavior\n\t\t});\n\t\tthis.find('.addAboveButton').keydown( function( e ) {\n\t\t\tif ( e.key === 'Enter' || e.key === ' ' ) {\n\t\t\t\te.preventDefault();\n\t\t\t\t// Blur the button before adding the instance so the browser\n\t\t\t\t// has no element to restore focus to after the keydown event.\n\t\t\t\t// This allows our setTimeout in addInstance to set focus on\n\t\t\t\t// the first input of the newly created instance.\n\t\t\t\t$(this).trigger( 'blur' );\n\t\t\t\t$(this).addInstance( true );\n\t\t\t}\n\t\t});\n\t}\n\n\tthis.find('.pfComboBox').not('.multipleTemplateStarter .pfComboBox').each(function(){\n\t\tconst min_width = $(this).data('size');\n\t\tconst input_width = $(this).val().length*11;\n\t\tconst inputType = new pf.ComboBoxInput({});\n\t\tinputType.apply($(this));\n\t\tinputType.$element.css(\"width\", input_width > min_width ? input_width : min_width);\n\t\tinputType.$element.css(\"min-width\", min_width);\n\t\tinputType.$element.find(\"a\").css(\"margin-left\", \"-1px\");\n\t\t$(this).after(inputType.$element);\n\t\t$(this).remove()\n\t});\n\n\tconst tokens = new pf.select2.tokens();\n\tthis.find('.pfTokens').not('.multipleTemplateStarter .pfTokens, .select2-container').each( function() {\n\t\ttokens.apply($(this));\n\t});\n\n\t// Set the end date input to the value selected in start date\n\tthis.find(\"span.startDateInput\").not(\".hiddenByPF\").find(\"input\").last().blur( () => {\n\t\tconst endInput = $(this).find(\"span.endDateInput\").not(\".hiddenByPF\");\n\t\tconst endYearInput = endInput.find(\".yearInput\");\n\t\tconst endMonthInput = endInput.find(\".monthInput\");\n\t\tconst endDayInput = endInput.find(\".dayInput\");\n\n\t\t// Update end date value only if it is not set\n\t\tif (endYearInput.val() == '' && endMonthInput.val() == '' && endDayInput.val() == ''){\n\t\t\tconst startInput = $(this);\n\t\t\tconst startYearVal = startInput.find(\".yearInput\").val();\n\t\t\tconst startMonthVal = startInput.find(\".monthInput\").val();\n\t\t\tconst startDayVal = startInput.find(\".dayInput\").val();\n\n\t\t\tendYearInput.val(startYearVal);\n\t\t\tendMonthInput.val(startMonthVal);\n\t\t\tendDayInput.val(startDayVal);\n\t\t}\n\t});\n\n\tif ( partOfMultiple ) {\n\t\tthis.find('.autoGrow').autoGrow();\n\t\tthis.find(\".pfRating\").each( function() {\n\t\t\t$(this).applyRatingInput();\n\t\t});\n\t\tthis.find(\".pfTreeInput\").each( function() {\n\t\t\t$(this).applyJSTree();\n\t\t});\n\t\tthis.find('.pfDatePicker').applyDatePicker();\n\t\tthis.find('.pfDateTimePicker').applyDateTimePicker();\n\t\tthis.find('a.popupformlink').click(function(evt){\n\t\t\treturn ext.popupform.handlePopupFormLink( this.getAttribute('href'), this );\n\t\t});\n\t\t// Only defined if $wgPageFormsSimpleUpload == true.\n\t\tif ( typeof this.initializeSimpleUpload === 'function' ) {\n\t\t\tthis.find(\".simpleUploadInterface\").each( function() {\n\t\t\t\t$(this).initializeSimpleUpload();\n\t\t\t});\n\t\t}\n\n\t\t// Also add support in new template instances to any non-Page\n\t\t// Forms classes that require special JS handling.\n\t\tthis.find('.mw-collapsible').makeCollapsible();\n\t} else {\n\t\tthis.find('.autoGrow').not('.multipleTemplateWrapper .autoGrow').autoGrow();\n\t\tthis.find(\".pfRating\").not(\".multipleTemplateWrapper .pfRating\").each( function() {\n\t\t\t$(this).applyRatingInput();\n\t\t});\n\t\tthis.find(\".pfTreeInput\").not(\".multipleTemplateWrapper .pfTreeInput\").each( function() {\n\t\t\t$(this).applyJSTree();\n\t\t});\n\t\tthis.find('.pfDatePicker').not(\".multipleTemplateWrapper .pfDatePicker\").applyDatePicker();\n\t\tthis.find('.pfDateTimePicker').not(\".multipleTemplateWrapper .pfDateTimePicker\").applyDateTimePicker();\n\t\t// Only defined if $wgPageFormsSimpleUpload == true.\n\t\tif ( typeof this.initializeSimpleUpload === 'function' ) {\n\t\t\tthis.find(\".simpleUploadInterface\").not(\".multipleTemplateWrapper .simpleUploadInterface\").each( function() {\n\t\t\t\t$(this).initializeSimpleUpload();\n\t\t\t});\n\t\t}\n\t}\n\n\t// @TODO - this should ideally be called only for inputs that have\n\t// a dependent field - which might involve changing the storage of\n\t// \"dependent fields\" information from a global variable to a\n\t// per-input HTML attribute.\n\tthis.find('input, select').each( function() {\n\t\t$(this)\n\t\t.setAutocompleteForDependentField( partOfMultiple )\n\t\t.blur( function() {\n\t\t\t$(this).setAutocompleteForDependentField( partOfMultiple );\n\t\t});\n\t});\n\t// The 'blur' event doesn't get triggered for radio buttons for\n\t// Chrome and Safari (the WebKit-based browsers) so use the 'change'\n\t// event in addition.\n\t// @TODO - blur() shuldn't be called at all for radio buttons.\n\tthis.find('input:radio')\n\t\t.change( function() {\n\t\t\t$(this).setAutocompleteForDependentField( partOfMultiple );\n\t\t});\n\n\tthis.find('.new-uuid').each( function() {\n\t\t$(this).val(window.pfGenerateUUID());\n\t});\n\n\tthis.find('[data-tooltip]').not('.multipleTemplateStarter [data-tooltip]').each( function() {\n\t\t// Even if it's within a <th>, display the text unbolded.\n\t\tconst tooltipText = '<p style=\"font-weight: normal;\">' + $(this).attr('data-tooltip') + '</p>';\n\t\tconst tooltip = new OO.ui.PopupButtonWidget( {\n\t\t\ticon: 'info',\n\t\t\tframed: false,\n\t\t\tpopup: {\n\t\t\t\tpadded: true,\n\t\t\t\t$content: $(tooltipText)\n\t\t\t}\n\t\t} );\n\t\t$(this).append( tooltip.$element )\n\t});\n\n\tconst $myThis = this;\n\tif ( $.fn.applyVisualEditor ) {\n\t\tif ( partOfMultiple ) {\n\t\t\t$myThis.find(\".visualeditor\").applyVisualEditor();\n\t\t} else {\n\t\t\t$myThis.find(\".visualeditor\").not(\".multipleTemplateWrapper .visualeditor\").applyVisualEditor();\n\t\t}\n\t} else {\n\t\t$(document).on('VEForAllLoaded', (e) => {\n\t\t\tif ( partOfMultiple ) {\n\t\t\t\t$myThis.find(\".visualeditor\").applyVisualEditor();\n\t\t\t} else {\n\t\t\t\t$myThis.find(\".visualeditor\").not(\".multipleTemplateWrapper .visualeditor\").applyVisualEditor();\n\t\t\t}\n\t\t});\n\t}\n};\n\n// Copied from https://stackoverflow.com/a/8809472\n// License: public domain/MIT\nwindow.pfGenerateUUID = function() {\n\tlet d = Date.now();\n\tlet d2 = (performance && performance.now && (performance.now() * 1000)) || 0; // Time in microseconds since page-load or 0 if unsupported\n\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n\t\tlet r = Math.random() * 16; // random number between 0 and 16\n\t\tif (d > 0) { // Use timestamp until depleted\n\t\t\tr = (d + r) % 16 | 0; // eslint-disable-line no-bitwise\n\t\t\td = Math.floor(d / 16);\n\t\t} else { // Use microseconds since page-load if supported\n\t\t\tr = (d2 + r) % 16 | 0; // eslint-disable-line no-bitwise\n\t\t\td2 = Math.floor(d2 / 16);\n\t\t}\n\t\treturn (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); // eslint-disable-line no-bitwise\n\t});\n}\n\n// Once the document has finished loading, set up everything!\n$( () => {\n\tlet i,\n\t\tinputID,\n\t\tvalidationFunctionData;\n\n\tfunction getFunctionFromName( functionName ) {\n\t\tlet func = window;\n\t\tconst namespaces = functionName.split( \".\" );\n\t\tfor ( let nsNum = 0; nsNum < namespaces.length; nsNum++ ) {\n\t\t\tfunc = func[ namespaces[ nsNum ] ];\n\t\t}\n\t\t// If this gets called before the function is defined, just\n\t\t// store the function name instead, for later lookup.\n\t\tif ( func === null ) {\n\t\t\treturn functionName;\n\t\t}\n\t\treturn func;\n\t}\n\n\t// Exit now if a Page Forms form is not present.\n\tif ( $('#pfForm').length === 0 ) {\n\t\treturn;\n\t}\n\n\tfunction minimizeInstances( minHeight ) {\n\t\tif ( minHeight >= 0) {\n\t\t\t$('.multipleTemplateList').each( function() {\n\t\t\t\tif ( $(this).height() > minHeight ) {\n\t\t\t\t\t$(this).addClass('minimizeAll');\n\t\t\t\t\t$(this).possiblyMinimizeAllOpenInstances();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// jQuery's .ready() function is being called before the resource was actually loaded.\n\t// This is a workaround for https://phabricator.wikimedia.org/T216805.\n\tsetTimeout( () => {\n\t\t// \"Mask\" to prevent users from clicking while form is still loading.\n\t\t$('#loadingMask').css({'width': $(document).width(),'height': $(document).height()});\n\n\t\t// register init functions\n\t\tconst initFunctionData = mw.config.get( 'ext.pf.initFunctionData' );\n\t\tfor ( inputID in initFunctionData ) {\n\t\t\tfor ( i in initFunctionData[inputID] ) {\n\t\t\t\t/*jshint -W069 */\n\t\t\t\t$( '#' + inputID ).PageForms_registerInputInit( getFunctionFromName( initFunctionData[ inputID ][ i ][ 'name' ] ), initFunctionData[ inputID ][ i ][ 'param' ] );\n\t\t\t\t/*jshint +W069 */\n\t\t\t}\n\t\t}\n\n\t\t// register validation functions\n\t\tvalidationFunctionData = mw.config.get( 'ext.pf.validationFunctionData' );\n\t\tfor ( inputID in validationFunctionData ) {\n\t\t\tfor ( i in validationFunctionData[inputID] ) {\n\t\t\t\t/*jshint -W069 */\n\t\t\t\t$( '#' + inputID ).PageForms_registerInputValidation( getFunctionFromName( validationFunctionData[ inputID ][ i ][ 'name' ] ), validationFunctionData[ inputID ][ i ][ 'param' ] );\n\t\t\t\t/*jshint +W069 */\n\t\t\t}\n\t\t}\n\n\t\t$( 'body' ).initializeJSElements(false);\n\n\t\t$('.multipleTemplateInstance').each( function() {\n\t\t\t$(this).initializeJSElements(true);\n\t\t});\n\t\t$( document )\n\t\t.on( 'click', '.multipleTemplateAdder', function() {\n\t\t\t$( this ).addInstance( false );\n\t\t})\n\t\t.on( 'keydown', '.multipleTemplateAdder', function( e ) {\n\t\t\tif ( e.key === 'Enter' || e.key === ' ' ) {\n\t\t\t\te.preventDefault();\n\t\t\t\t// Blur the button before adding the instance so the browser\n\t\t\t\t// has no element to restore focus to after the keydown event.\n\t\t\t\t// This allows our setTimeout in addInstance to set focus on\n\t\t\t\t// the first input of the newly created instance.\n\t\t\t\t$( this ).trigger( 'blur' );\n\t\t\t\t$( this ).addInstance( false );\n\t\t\t}\n\t\t});\n\t\tconst wgPageFormsHeightForMinimizingInstances = mw.config.get( 'wgPageFormsHeightForMinimizingInstances' );\n\t\tminimizeInstances( wgPageFormsHeightForMinimizingInstances );\n\n\t\t$('.multipleTemplateList').each( function() {\n\t\t\tconst $list = $(this);\n\t\t\tconst sortable = Sortable.create($list[0], {\n\t\t\t\thandle: '.instanceRearranger',\n\t\t\t\tonStart: function(/**Event*/evt) {\n\t\t\t\t\t$list.possiblyMinimizeAllOpenInstances();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t// If the Header Tabs extension is being used in this form, minimize all the\n\t\t// relevant instances any time the tab is changed.\n\t\tif ( $( \"#headertabs\" ).length ) {\n\t\t\t$( \".oo-ui-tabOptionWidget\" ).on( 'click', ( event ) => {\n\t\t\t\tminimizeInstances( wgPageFormsHeightForMinimizingInstances );\n\t\t\t});\n\t\t}\n\n\t\t// If there are any \"wizard screen\" elements defined in the\n\t\t// form, turn the whole form into a wizard, with successive\n\t\t// screens for each element.\n\t\tconst $wizardScreens = $('form#pfForm').find('div.pf-wizard-screen');\n\t\tif ( $wizardScreens.length > 0 ) {\n\t\t\tconst $wizardNav = $('<div class=\"pf-wizard-navigation\"></div>');\n\t\t\t$('form#pfForm').append( $wizardNav );\n\t\t\t$wizardScreens.displayWizardScreen( 1, $wizardNav );\n\t\t}\n\n\t\t// If the form is submitted, validate everything!\n\t\t$('#pfForm').submit( () => validateAll() );\n\n\t\t// We are all done - remove the loading spinner.\n\t\t$('.loadingImage').remove();\n\t}, 0 );\n\n\tmw.hook('pf.formSetupAfter').fire();\n});\n\n// If some part of the form is clicked, minimize any multiple-instance\n// template instances that need minimizing, and move the \"focus\" to the current\n// instance list, if one is being clicked and it's different from the\n// previous one.\n// We make only the form itself clickable, instead of the whole screen, to\n// try to avoid a click on a popup, like the \"Upload file\" window, minimizing\n// the current open instance.\n$('form#pfForm').click( (e) => {\n\tconst $target = $(e.target);\n\t// Ignore the \"add instance\" buttons - those get handling of their own.\n\tconst clickedOnAddAnother = $target.parents('.multipleTemplateAdder').length > 0;\n\tif ( clickedOnAddAnother || $target.hasClass('addAboveButton') ) {\n\t\treturn;\n\t}\n\n\tconst $instance = $target.closest('.multipleTemplateInstance');\n\tif ( $instance === null ) {\n\t\t$('.multipleTemplateList.currentFocus')\n\t\t\t.removeClass('currentFocus')\n\t\t\t.possiblyMinimizeAllOpenInstances();\n\t\treturn;\n\t}\n\n\tconst $instancesList = $instance.closest('.multipleTemplateList');\n\tif ( !$instancesList.hasClass('currentFocus') ) {\n\t\t$('.multipleTemplateList.currentFocus')\n\t\t\t.removeClass('currentFocus')\n\t\t\t.possiblyMinimizeAllOpenInstances();\n\t\tif ( $instancesList.hasClass('minimizeAll') ) {\n\t\t\t$instancesList.addClass('currentFocus');\n\t\t}\n\t}\n\n\tif ( $instance.hasClass('minimized') ) {\n\t\t$instancesList.possiblyMinimizeAllOpenInstances();\n\t\t$instance.removeClass('minimized');\n\t\t$instance.find('.fieldValuesDisplay').html('');\n\t\t$instance.find('.instanceMain').fadeIn();\n\t\t$instance.find('.fieldValuesDisplay').remove();\n\t\t// Remove unhelpful styling added by VisualEditor.\n\t\t$instance.find('div.oo-ui-toolbar-bar').css('left', null);\n\t\t$instance.find('div.oo-ui-toolbar-bar').css('right', null);\n\t}\n});\n\n$('#pf-expand-all a').click(( event ) => {\n\tevent.preventDefault();\n\n\t// Page Forms minimized template instances.\n\t$('.minimized').each( function() {\n\t\t$(this).removeClass('minimized');\n\t\t$(this).find('.fieldValuesDisplay').html('');\n\t\t$(this).find('.instanceMain').fadeIn();\n\t\t$(this).find('.fieldValuesDisplay').remove();\n\t\t// Remove unhelpful styling added by VisualEditor.\n\t\t$(this).find('div.oo-ui-toolbar-bar').css('left', null);\n\t\t$(this).find('div.oo-ui-toolbar-bar').css('right', null);\n\t});\n\n\t// Standard MediaWiki \"collapsible\" sections.\n\t$('div.mw-collapsed a.mw-collapsible-text').click();\n});\n\n$('.pfSendBack').click( () => {\n\twindow.history.back();\n});\n\n}( jQuery, mediaWiki ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/ext.pf.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/ext.pf.select2.base.js","messages":[{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substr()`.","line":313,"column":6,"nodeType":"CallExpression","messageId":"substr","endLine":313,"endColumn":36},{"ruleId":"unicorn/prefer-string-slice","severity":1,"message":"Prefer `String#slice()` over `String#substr()`.","line":314,"column":6,"nodeType":"CallExpression","messageId":"substr","endLine":314,"endColumn":51}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/*\n * ext.pf.select2.base.js\n *\n * Base class to handle autocomplete for various input types using the Select2\n * JS library.\n *\n * @file\n *\n * @licence GNU GPL v2+\n * @author Jatin Mehta\n * @author Priyanshu Varshney\n * @author Yaron Koren\n */\n\n( function ( $, mw, pf ) {\n\t'use strict';\n\t/**\n\t * Inheritance class for the pf.select2 constructor\n\t *\n\t * @class\n\t */\n\tpf.select2 = pf.select2 || {};\n\n\t/**\n\t * @class\n\t * @constructor\n\t */\n\tpf.select2.base = function() {\n\n\t};\n\n\tpf.select2.base.prototype = {\n\t\t/*\n\t\t * Applies select2 to the HTML element\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t *\n\t\t */\n\t\tapply: function( element ) {\n\t\t\tconst existingValuesOnly = (element.attr(\"existingvaluesonly\") == \"true\");\n\t\t\tthis.existingValuesOnly = existingValuesOnly;\n\t\t\tthis.id = element.attr( \"id\" );\n\t\t\ttry {\n\t\t\t\tconst opts = this.setOptions();\n\t\t\t\t// element.val() would be simpler, but for some\n\t\t\t\t// reason it returns the wrong value.\n\t\t\t\tlet origValue = element.attr('value');\n\t\t\t\t// We call empty() in case this input was\n\t\t\t\t// modified due to \"values dependent on\", and\n\t\t\t\t// the old set of allowed values needs to\n\t\t\t\t// be removed.\n\t\t\t\telement.empty();\n\t\t\t\tconst $input = element.select2(opts);\n\n\t\t\t\t// We need an empty string as the first option; otherwise,\n\t\t\t\t// if it's non-empty string, Select2 might pick it and\n\t\t\t\t// display it as its value even if we remove it.\n\t\t\t\tconst newEmptyOption = new Option( \"\", \"\", false, false );\n\t\t\t\t$input.append(newEmptyOption).trigger('change');\n\n\t\t\t\tif ( origValue === undefined ) {\n\t\t\t\t\torigValue = \"\";\n\t\t\t\t}\n\t\t\t\tif ( this.getAutocompleteOpts().autocompletedatatype !== undefined && this.dependentOn() === null ) {\n\t\t\t\t\tconst data = {\n\t\t\t\t\t\tid: origValue,\n\t\t\t\t\t\ttext: origValue\n\t\t\t\t\t};\n\t\t\t\t\t// This is needed after the empty() call,\n\t\t\t\t\t// to create an option element to restore\n\t\t\t\t\t// correct value in remote autocompletion.\n\t\t\t\t\tconst newOption = new Option(data.text, data.id, false, false);\n\t\t\t\t\t$input.append(newOption).trigger('change');\n\t\t\t\t}\n\t\t\t\t// This is required so that the existing value\n\t\t\t\t// can be displayed.\n\t\t\t\t$input.val(origValue).trigger('change');\n\t\t\t\tconst inputData = $input.data(\"select2\");\n\t\t\t\tlet rawValue = \"\";\n\n\t\t\t\t$(inputData.dropdown.$searchContainer).on(\"keydown\",(e) => {\n\t\t\t\t\tif ( existingValuesOnly ) {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t}\n\t\t\t\t\tif ( e.key === 'Tab' ) {\n\t\t\t\t\t\tconst valHighlighted = inputData.$results.find('.select2-results__option--highlighted')[0];\n\t\t\t\t\t\tif ( valHighlighted !== undefined ){\n\t\t\t\t\t\t\trawValue = valHighlighted.textContent;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif ( !$input.find( \"option[value='\" + rawValue + \"']\" ).length ) {\n\t\t\t\t\t\t\t// Does this ever get called?\n\t\t\t\t\t\t\tconst newOption = new Option( rawValue, rawValue, false, false );\n\t\t\t\t\t\t\t$input.append(newOption).trigger( 'change' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( rawValue !== '' ) {\n\t\t\t\t\t\t\t$input.val(rawValue).trigger(\"change\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\telement.on( \"change\", this.onChange );\n\t\t\t} catch (e) {\n\t\t\t\twindow.console.log(e);\n\t\t\t}\n\t\t},\n\t\t/*\n\t\t * Used to remove the Select2 applied to the HTML element;\n\t\t * the selected value will remain preserved.\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t *\n\t\t */\n\t\tdestroy: function( element ) {\n\t\t\telement.select2( \"destroy\" );\n\t\t},\n\t \t/*\n\t\t * If a field is dependent on some other field in the form\n\t\t * then it returns its name.\n\t\t *\n\t\t * @return {string}\n\t\t *\n\t\t */\n\t\tdependentOn: function() {\n\t\t\tconst input_id = \"#\" + this.id;\n\t\t\tconst name_attr = this.nameAttr( $(input_id) );\n\t\t\tconst name = $(input_id).attr( name_attr );\n\n\t\t\tconst wgPageFormsDependentFields = mw.config.get( 'wgPageFormsDependentFields' );\n\t\t\tfor ( let i = 0; i < wgPageFormsDependentFields.length; i++ ) {\n\t\t\t\tconst dependentFieldPair = wgPageFormsDependentFields[i];\n\t\t\t\tif ( dependentFieldPair[1] === name ) {\n\t\t\t\t\treturn dependentFieldPair[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t/*\n\t\t * Returns the array of names of fields in the form which are dependent\n\t\t * on the field passed as a param to this function,\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t *\n\t\t * @return {associative array} dependent_on_me\n\t\t *\n\t\t */\n\t\tdependentOnMe: function( element ) {\n\t\t\tconst name_attr = this.nameAttr(element);\n\t\t\tconst name = element.attr( name_attr );\n\t\t\tconst dependent_on_me = [];\n\n\t\t\tconst wgPageFormsDependentFields = mw.config.get( 'wgPageFormsDependentFields' );\n\t\t\tfor ( let i = 0; i < wgPageFormsDependentFields.length; i++ ) {\n\t\t\t\tconst dependentFieldPair = wgPageFormsDependentFields[i];\n\t\t\t\tif ( dependentFieldPair[0] === name ) {\n\t\t\t\t\tdependent_on_me.push(dependentFieldPair[1]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn dependent_on_me;\n\t\t},\n\t\t/*\n\t\t * Returns the name attribute of the field depending on\n\t\t * whether it is a part of a multiple instance template or not\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t *\n\t\t * @return {string}\n\t\t *\n\t\t */\n\t\tnameAttr: function( element ) {\n\t\t\treturn this.partOfMultiple( element ) ? \"origname\" : \"name\";\n\t\t},\n\t\t/*\n\t\t * Checks whether the field is part of a multiple instance template or not\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t *\n\t\t * @return {boolean}\n\t\t *\n\t\t */\n\t\tpartOfMultiple: function( element ) {\n\t\t\treturn element.attr( \"origname\" ) !== undefined ? true : false;\n\t\t},\n\t\t/*\n\t\t * Gives dependent field options which include\n\t\t * property, base property and base value\n\t\t *\n\t\t * @param {string} dep_on\n\t\t *\n\t\t * @return {object} dep_field_opts\n\t\t *\n\t\t */\n\t\tgetDependentFieldOpts: function( dep_on ) {\n\t\t\tconst input_id = \"#\" + this.id;\n\t\t\tconst dep_field_opts = {};\n\t\t\tlet $base_element;\n\n\t\t\tif ( this.partOfMultiple($(input_id)) ) {\n\t\t\t\t$base_element = $(input_id).closest( \".multipleTemplateInstance\" )\n\t\t\t\t\t.find( '[origname =\"' + dep_on + '\" ]' );\n\t\t\t} else {\n\t\t\t\t$base_element = $('[name =\"' + dep_on + '\" ]');\n\t\t\t}\n\t\t\tdep_field_opts.base_value = $base_element.val();\n\t\t\tdep_field_opts.base_prop = mw.config.get( 'wgPageFormsFieldProperties' )[dep_on] ||\n\t\t\t\t$base_element.attr( \"autocompletesettings\" );\n\t\t\tdep_field_opts.prop = $(input_id).attr( \"autocompletesettings\" ).split( \",\" )[0];\n\n\t\t\treturn dep_field_opts;\n\t\t},\n\t\t/*\n\t\t * Gives autocomplete options for a field\n\t\t *\n\t\t * @return {object} autocomplete_opts\n\t\t *\n\t\t */\n\t\tgetAutocompleteOpts: function() {\n\t\t\tconst input_id = \"#\" + this.id;\n\t\t\tconst autocomplete_opts = {};\n\n\t\t\tif ( $(input_id).attr( \"autocompletesettings\" ) === undefined ) {\n\t\t\t\tthrow \"Error: No autocomplete settings set for input \" + input_id;\n\t\t\t}\n\n\t\t\tautocomplete_opts.autocompletedatatype = $(input_id).attr( \"autocompletedatatype\" );\n\t\t\tautocomplete_opts.autocompletesettings = $(input_id).attr( \"autocompletesettings\" );\n\t\t\treturn autocomplete_opts;\n\t\t},\n\n\t\t/**\n\t\t * Escape out any HTML, and then add our own HTML to display\n\t\t * the correct bolding.\n\t\t * The first part of this function is directly copied from\n\t\t * Utils::escapeMarkup() in the Select2 code. @TODO: figure out\n\t\t * how to just call that code directly.\n\t\t *\n\t\t * @param {Mixed} markup\n\t\t * @return {Mixed}\n\t\t */\n\t\tescapeMarkupAndAddHTML: function( markup ) {\n\t\t\tconst replaceMap = {\n\t\t\t\t'\\\\': '&#92;',\n\t\t\t\t'&': '&amp;',\n\t\t\t\t'<': '&lt;',\n\t\t\t\t'>': '&gt;',\n\t\t\t\t'\"': '&quot;',\n\t\t\t\t'\\'': '&#39;',\n\t\t\t\t'/': '&#47;'\n\t\t\t};\n\n\t\t\t// Do not try to escape the markup if it's not a string\n\t\t\tif (typeof markup !== 'string') {\n\t\t\t\treturn markup;\n\t\t\t}\n\n\t\t\tconst escapedMarkup = String(markup).replace(/[&<>\"'\\/\\\\]/g, (match) => replaceMap[match])\n\n\t\t\tconst boldStart = String.fromCharCode(1);\n\t\t\tconst boldEnd = String.fromCharCode(2);\n\t\t\treturn '<span class=\"select2-match-entire\">' +\n\t\t\t\tescapedMarkup\n\t\t\t\t.replace(boldStart, '<span class=\"select2-match\"><b>')\n\t\t\t\t.replace(boldEnd, '</b></span>') +\n\t\t\t\t'</span>';\n\t\t},\n\n\t\t/*\n\t\t * Refreshes the field if there is a change\n\t\t * in the autocomplete values.\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t *\n\t\t */\n\t\trefresh: function( element ) {\n\t\t\tthis.destroy($(element));\n\t\t\tthis.apply($(element));\n\t\t},\n\t\t/*\n\t\t * Removes diacritics from the string and replaces\n\t\t * them with English characters.\n\t\t * This code is basically copied from:\n\t\t * http://jpfiddle.net/potherca/Gtmr2/\n\t\t *\n\t\t * @param {string} text\n\t\t *\n\t\t * @return {string}\n\t\t *\n\t\t */\n\t\tremoveDiacritics: function( text ) {\n\t\t\tconst diacriticsMap = { 'Á': 'A', 'Ă': 'A', 'Ắ': 'A', 'Ặ': 'A', 'Ằ': 'A', 'Ẳ': 'A', 'Ẵ': 'A', 'Ǎ': 'A', 'Â': 'A', 'Ấ': 'A', 'Ậ': 'A', 'Ầ': 'A', 'Ẩ': 'A', 'Ẫ': 'A', 'Ä': 'A', 'Ǟ': 'A', 'Ȧ': 'A', 'Ǡ': 'A', 'Ạ': 'A', 'Ȁ': 'A', 'À': 'A', 'Ả': 'A', 'Ȃ': 'A', 'Ā': 'A', 'Ą': 'A', 'Å': 'A', 'Ǻ': 'A', 'Ḁ': 'A', 'Ⱥ': 'A', 'Ã': 'A', 'Ꜳ': 'AA', 'Æ': 'AE', 'Ǽ': 'AE', 'Ǣ': 'AE', 'Ꜵ': 'AO', 'Ꜷ': 'AU', 'Ꜹ': 'AV', 'Ꜻ': 'AV', 'Ꜽ': 'AY', 'Ḃ': 'B', 'Ḅ': 'B', 'Ɓ': 'B', 'Ḇ': 'B', 'Ƀ': 'B', 'Ƃ': 'B', 'Ć': 'C', 'Č': 'C', 'Ç': 'C', 'Ḉ': 'C', 'Ĉ': 'C', 'Ċ': 'C', 'Ƈ': 'C', 'Ȼ': 'C', 'Ď': 'D', 'Ḑ': 'D', 'Ḓ': 'D', 'Ḋ': 'D', 'Ḍ': 'D', 'Ɗ': 'D', 'Ḏ': 'D', 'Dz': 'D', 'Dž': 'D', 'Đ': 'D', 'Ƌ': 'D', 'DZ': 'DZ', 'DŽ': 'DZ', 'É': 'E', 'Ĕ': 'E', 'Ě': 'E', 'Ȩ': 'E', 'Ḝ': 'E', 'Ê': 'E', 'Ế': 'E', 'Ệ': 'E', 'Ề': 'E', 'Ể': 'E', 'Ễ': 'E', 'Ḙ': 'E', 'Ë': 'E', 'Ė': 'E', 'Ẹ': 'E', 'Ȅ': 'E', 'È': 'E', 'Ẻ': 'E', 'Ȇ': 'E', 'Ē': 'E', 'Ḗ': 'E', 'Ḕ': 'E', 'Ę': 'E', 'Ɇ': 'E', 'Ẽ': 'E', 'Ḛ': 'E', 'Ꝫ': 'ET', 'Ḟ': 'F', 'Ƒ': 'F', 'Ǵ': 'G', 'Ğ': 'G', 'Ǧ': 'G', 'Ģ': 'G', 'Ĝ': 'G', 'Ġ': 'G', 'Ɠ': 'G', 'Ḡ': 'G', 'Ǥ': 'G', 'Ḫ': 'H', 'Ȟ': 'H', 'Ḩ': 'H', 'Ĥ': 'H', 'Ⱨ': 'H', 'Ḧ': 'H', 'Ḣ': 'H', 'Ḥ': 'H', 'Ħ': 'H', 'Í': 'I', 'Ĭ': 'I', 'Ǐ': 'I', 'Î': 'I', 'Ï': 'I', 'Ḯ': 'I', 'İ': 'I', 'Ị': 'I', 'Ȉ': 'I', 'Ì': 'I', 'Ỉ': 'I', 'Ȋ': 'I', 'Ī': 'I', 'Į': 'I', 'Ɨ': 'I', 'Ĩ': 'I', 'Ḭ': 'I', 'Ꝺ': 'D', 'Ꝼ': 'F', 'Ᵹ': 'G', 'Ꞃ': 'R', 'Ꞅ': 'S', 'Ꞇ': 'T', 'Ꝭ': 'IS', 'Ĵ': 'J', 'Ɉ': 'J', 'Ḱ': 'K', 'Ǩ': 'K', 'Ķ': 'K', 'Ⱪ': 'K', 'Ꝃ': 'K', 'Ḳ': 'K', 'Ƙ': 'K', 'Ḵ': 'K', 'Ꝁ': 'K', 'Ꝅ': 'K', 'Ĺ': 'L', 'Ƚ': 'L', 'Ľ': 'L', 'Ļ': 'L', 'Ḽ': 'L', 'Ḷ': 'L', 'Ḹ': 'L', 'Ⱡ': 'L', 'Ꝉ': 'L', 'Ḻ': 'L', 'Ŀ': 'L', 'Ɫ': 'L', 'Lj': 'L', 'Ł': 'L', 'LJ': 'LJ', 'Ḿ': 'M', 'Ṁ': 'M', 'Ṃ': 'M', 'Ɱ': 'M', 'Ń': 'N', 'Ň': 'N', 'Ņ': 'N', 'Ṋ': 'N', 'Ṅ': 'N', 'Ṇ': 'N', 'Ǹ': 'N', 'Ɲ': 'N', 'Ṉ': 'N', 'Ƞ': 'N', 'Nj': 'N', 'Ñ': 'N', 'NJ': 'NJ', 'Ó': 'O', 'Ŏ': 'O', 'Ǒ': 'O', 'Ô': 'O', 'Ố': 'O', 'Ộ': 'O', 'Ồ': 'O', 'Ổ': 'O', 'Ỗ': 'O', 'Ö': 'O', 'Ȫ': 'O', 'Ȯ': 'O', 'Ȱ': 'O', 'Ọ': 'O', 'Ő': 'O', 'Ȍ': 'O', 'Ò': 'O', 'Ỏ': 'O', 'Ơ': 'O', 'Ớ': 'O', 'Ợ': 'O', 'Ờ': 'O', 'Ở': 'O', 'Ỡ': 'O', 'Ȏ': 'O', 'Ꝋ': 'O', 'Ꝍ': 'O', 'Ō': 'O', 'Ṓ': 'O', 'Ṑ': 'O', 'Ɵ': 'O', 'Ǫ': 'O', 'Ǭ': 'O', 'Ø': 'O', 'Ǿ': 'O', 'Õ': 'O', 'Ṍ': 'O', 'Ṏ': 'O', 'Ȭ': 'O', 'Ƣ': 'OI', 'Ꝏ': 'OO', 'Ɛ': 'E', 'Ɔ': 'O', 'Ȣ': 'OU', 'Ṕ': 'P', 'Ṗ': 'P', 'Ꝓ': 'P', 'Ƥ': 'P', 'Ꝕ': 'P', 'Ᵽ': 'P', 'Ꝑ': 'P', 'Ꝙ': 'Q', 'Ꝗ': 'Q', 'Ŕ': 'R', 'Ř': 'R', 'Ŗ': 'R', 'Ṙ': 'R', 'Ṛ': 'R', 'Ṝ': 'R', 'Ȑ': 'R', 'Ȓ': 'R', 'Ṟ': 'R', 'Ɍ': 'R', 'Ɽ': 'R', 'Ꜿ': 'C', 'Ǝ': 'E', 'Ś': 'S', 'Ṥ': 'S', 'Š': 'S', 'Ṧ': 'S', 'Ş': 'S', 'Ŝ': 'S', 'Ș': 'S', 'Ṡ': 'S', 'Ṣ': 'S', 'Ṩ': 'S', 'ẞ': 'SS', 'Ť': 'T', 'Ţ': 'T', 'Ṱ': 'T', 'Ț': 'T', 'Ⱦ': 'T', 'Ṫ': 'T', 'Ṭ': 'T', 'Ƭ': 'T', 'Ṯ': 'T', 'Ʈ': 'T', 'Ŧ': 'T', 'Ɐ': 'A', 'Ꞁ': 'L', 'Ɯ': 'M', 'Ʌ': 'V', 'Ꜩ': 'TZ', 'Ú': 'U', 'Ŭ': 'U', 'Ǔ': 'U', 'Û': 'U', 'Ṷ': 'U', 'Ü': 'U', 'Ǘ': 'U', 'Ǚ': 'U', 'Ǜ': 'U', 'Ǖ': 'U', 'Ṳ': 'U', 'Ụ': 'U', 'Ű': 'U', 'Ȕ': 'U', 'Ù': 'U', 'Ủ': 'U', 'Ư': 'U', 'Ứ': 'U', 'Ự': 'U', 'Ừ': 'U', 'Ử': 'U', 'Ữ': 'U', 'Ȗ': 'U', 'Ū': 'U', 'Ṻ': 'U', 'Ų': 'U', 'Ů': 'U', 'Ũ': 'U', 'Ṹ': 'U', 'Ṵ': 'U', 'Ꝟ': 'V', 'Ṿ': 'V', 'Ʋ': 'V', 'Ṽ': 'V', 'Ꝡ': 'VY', 'Ẃ': 'W', 'Ŵ': 'W', 'Ẅ': 'W', 'Ẇ': 'W', 'Ẉ': 'W', 'Ẁ': 'W', 'Ⱳ': 'W', 'Ẍ': 'X', 'Ẋ': 'X', 'Ý': 'Y', 'Ŷ': 'Y', 'Ÿ': 'Y', 'Ẏ': 'Y', 'Ỵ': 'Y', 'Ỳ': 'Y', 'Ƴ': 'Y', 'Ỷ': 'Y', 'Ỿ': 'Y', 'Ȳ': 'Y', 'Ɏ': 'Y', 'Ỹ': 'Y', 'Ź': 'Z', 'Ž': 'Z', 'Ẑ': 'Z', 'Ⱬ': 'Z', 'Ż': 'Z', 'Ẓ': 'Z', 'Ȥ': 'Z', 'Ẕ': 'Z', 'Ƶ': 'Z', 'IJ': 'IJ', 'Œ': 'OE', 'ᴀ': 'A', 'ᴁ': 'AE', 'ʙ': 'B', 'ᴃ': 'B', 'ᴄ': 'C', 'ᴅ': 'D', 'ᴇ': 'E', 'ꜰ': 'F', 'ɢ': 'G', 'ʛ': 'G', 'ʜ': 'H', 'ɪ': 'I', 'ʁ': 'R', 'ᴊ': 'J', 'ᴋ': 'K', 'ʟ': 'L', 'ᴌ': 'L', 'ᴍ': 'M', 'ɴ': 'N', 'ᴏ': 'O', 'ɶ': 'OE', 'ᴐ': 'O', 'ᴕ': 'OU', 'ᴘ': 'P', 'ʀ': 'R', 'ᴎ': 'N', 'ᴙ': 'R', 'ꜱ': 'S', 'ᴛ': 'T', 'ⱻ': 'E', 'ᴚ': 'R', 'ᴜ': 'U', 'ᴠ': 'V', 'ᴡ': 'W', 'ʏ': 'Y', 'ᴢ': 'Z', 'á': 'a', 'ă': 'a', 'ắ': 'a', 'ặ': 'a', 'ằ': 'a', 'ẳ': 'a', 'ẵ': 'a', 'ǎ': 'a', 'â': 'a', 'ấ': 'a', 'ậ': 'a', 'ầ': 'a', 'ẩ': 'a', 'ẫ': 'a', 'ä': 'a', 'ǟ': 'a', 'ȧ': 'a', 'ǡ': 'a', 'ạ': 'a', 'ȁ': 'a', 'à': 'a', 'ả': 'a', 'ȃ': 'a', 'ā': 'a', 'ą': 'a', 'ᶏ': 'a', 'ẚ': 'a', 'å': 'a', 'ǻ': 'a', 'ḁ': 'a', 'ⱥ': 'a', 'ã': 'a', 'ꜳ': 'aa', 'æ': 'ae', 'ǽ': 'ae', 'ǣ': 'ae', 'ꜵ': 'ao', 'ꜷ': 'au', 'ꜹ': 'av', 'ꜻ': 'av', 'ꜽ': 'ay', 'ḃ': 'b', 'ḅ': 'b', 'ɓ': 'b', 'ḇ': 'b', 'ᵬ': 'b', 'ᶀ': 'b', 'ƀ': 'b', 'ƃ': 'b', 'ɵ': 'o', 'ć': 'c', 'č': 'c', 'ç': 'c', 'ḉ': 'c', 'ĉ': 'c', 'ɕ': 'c', 'ċ': 'c', 'ƈ': 'c', 'ȼ': 'c', 'ď': 'd', 'ḑ': 'd', 'ḓ': 'd', 'ȡ': 'd', 'ḋ': 'd', 'ḍ': 'd', 'ɗ': 'd', 'ᶑ': 'd', 'ḏ': 'd', 'ᵭ': 'd', 'ᶁ': 'd', 'đ': 'd', 'ɖ': 'd', 'ƌ': 'd', 'ı': 'i', 'ȷ': 'j', 'ɟ': 'j', 'ʄ': 'j', 'dz': 'dz', 'dž': 'dz', 'é': 'e', 'ĕ': 'e', 'ě': 'e', 'ȩ': 'e', 'ḝ': 'e', 'ê': 'e', 'ế': 'e', 'ệ': 'e', 'ề': 'e', 'ể': 'e', 'ễ': 'e', 'ḙ': 'e', 'ë': 'e', 'ė': 'e', 'ẹ': 'e', 'ȅ': 'e', 'è': 'e', 'ẻ': 'e', 'ȇ': 'e', 'ē': 'e', 'ḗ': 'e', 'ḕ': 'e', 'ⱸ': 'e', 'ę': 'e', 'ᶒ': 'e', 'ɇ': 'e', 'ẽ': 'e', 'ḛ': 'e', 'ꝫ': 'et', 'ḟ': 'f', 'ƒ': 'f', 'ᵮ': 'f', 'ᶂ': 'f', 'ǵ': 'g', 'ğ': 'g', 'ǧ': 'g', 'ģ': 'g', 'ĝ': 'g', 'ġ': 'g', 'ɠ': 'g', 'ḡ': 'g', 'ᶃ': 'g', 'ǥ': 'g', 'ḫ': 'h', 'ȟ': 'h', 'ḩ': 'h', 'ĥ': 'h', 'ⱨ': 'h', 'ḧ': 'h', 'ḣ': 'h', 'ḥ': 'h', 'ɦ': 'h', 'ẖ': 'h', 'ħ': 'h', 'ƕ': 'hv', 'í': 'i', 'ĭ': 'i', 'ǐ': 'i', 'î': 'i', 'ï': 'i', 'ḯ': 'i', 'ị': 'i', 'ȉ': 'i', 'ì': 'i', 'ỉ': 'i', 'ȋ': 'i', 'ī': 'i', 'į': 'i', 'ᶖ': 'i', 'ɨ': 'i', 'ĩ': 'i', 'ḭ': 'i', 'ꝺ': 'd', 'ꝼ': 'f', 'ᵹ': 'g', 'ꞃ': 'r', 'ꞅ': 's', 'ꞇ': 't', 'ꝭ': 'is', 'ǰ': 'j', 'ĵ': 'j', 'ʝ': 'j', 'ɉ': 'j', 'ḱ': 'k', 'ǩ': 'k', 'ķ': 'k', 'ⱪ': 'k', 'ꝃ': 'k', 'ḳ': 'k', 'ƙ': 'k', 'ḵ': 'k', 'ᶄ': 'k', 'ꝁ': 'k', 'ꝅ': 'k', 'ĺ': 'l', 'ƚ': 'l', 'ɬ': 'l', 'ľ': 'l', 'ļ': 'l', 'ḽ': 'l', 'ȴ': 'l', 'ḷ': 'l', 'ḹ': 'l', 'ⱡ': 'l', 'ꝉ': 'l', 'ḻ': 'l', 'ŀ': 'l', 'ɫ': 'l', 'ᶅ': 'l', 'ɭ': 'l', 'ł': 'l', 'lj': 'lj', 'ſ': 's', 'ẜ': 's', 'ẛ': 's', 'ẝ': 's', 'ḿ': 'm', 'ṁ': 'm', 'ṃ': 'm', 'ɱ': 'm', 'ᵯ': 'm', 'ᶆ': 'm', 'ń': 'n', 'ň': 'n', 'ņ': 'n', 'ṋ': 'n', 'ȵ': 'n', 'ṅ': 'n', 'ṇ': 'n', 'ǹ': 'n', 'ɲ': 'n', 'ṉ': 'n', 'ƞ': 'n', 'ᵰ': 'n', 'ᶇ': 'n', 'ɳ': 'n', 'ñ': 'n', 'nj': 'nj', 'ó': 'o', 'ŏ': 'o', 'ǒ': 'o', 'ô': 'o', 'ố': 'o', 'ộ': 'o', 'ồ': 'o', 'ổ': 'o', 'ỗ': 'o', 'ö': 'o', 'ȫ': 'o', 'ȯ': 'o', 'ȱ': 'o', 'ọ': 'o', 'ő': 'o', 'ȍ': 'o', 'ò': 'o', 'ỏ': 'o', 'ơ': 'o', 'ớ': 'o', 'ợ': 'o', 'ờ': 'o', 'ở': 'o', 'ỡ': 'o', 'ȏ': 'o', 'ꝋ': 'o', 'ꝍ': 'o', 'ⱺ': 'o', 'ō': 'o', 'ṓ': 'o', 'ṑ': 'o', 'ǫ': 'o', 'ǭ': 'o', 'ø': 'o', 'ǿ': 'o', 'õ': 'o', 'ṍ': 'o', 'ṏ': 'o', 'ȭ': 'o', 'ƣ': 'oi', 'ꝏ': 'oo', 'ɛ': 'e', 'ᶓ': 'e', 'ɔ': 'o', 'ᶗ': 'o', 'ȣ': 'ou', 'ṕ': 'p', 'ṗ': 'p', 'ꝓ': 'p', 'ƥ': 'p', 'ᵱ': 'p', 'ᶈ': 'p', 'ꝕ': 'p', 'ᵽ': 'p', 'ꝑ': 'p', 'ꝙ': 'q', 'ʠ': 'q', 'ɋ': 'q', 'ꝗ': 'q', 'ŕ': 'r', 'ř': 'r', 'ŗ': 'r', 'ṙ': 'r', 'ṛ': 'r', 'ṝ': 'r', 'ȑ': 'r', 'ɾ': 'r', 'ᵳ': 'r', 'ȓ': 'r', 'ṟ': 'r', 'ɼ': 'r', 'ᵲ': 'r', 'ᶉ': 'r', 'ɍ': 'r', 'ɽ': 'r', 'ↄ': 'c', 'ꜿ': 'c', 'ɘ': 'e', 'ɿ': 'r', 'ś': 's', 'ṥ': 's', 'š': 's', 'ṧ': 's', 'ş': 's', 'ŝ': 's', 'ș': 's', 'ṡ': 's', 'ṣ': 's', 'ṩ': 's', 'ʂ': 's', 'ᵴ': 's', 'ᶊ': 's', 'ȿ': 's', 'ß': 'ss', 'ɡ': 'g', 'ᴑ': 'o', 'ᴓ': 'o', 'ᴝ': 'u', 'ť': 't', 'ţ': 't', 'ṱ': 't', 'ț': 't', 'ȶ': 't', 'ẗ': 't', 'ⱦ': 't', 'ṫ': 't', 'ṭ': 't', 'ƭ': 't', 'ṯ': 't', 'ᵵ': 't', 'ƫ': 't', 'ʈ': 't', 'ŧ': 't', 'ᵺ': 'th', 'ɐ': 'a', 'ᴂ': 'ae', 'ǝ': 'e', 'ᵷ': 'g', 'ɥ': 'h', 'ʮ': 'h', 'ʯ': 'h', 'ᴉ': 'i', 'ʞ': 'k', 'ꞁ': 'l', 'ɯ': 'm', 'ɰ': 'm', 'ᴔ': 'oe', 'ɹ': 'r', 'ɻ': 'r', 'ɺ': 'r', 'ⱹ': 'r', 'ʇ': 't', 'ʌ': 'v', 'ʍ': 'w', 'ʎ': 'y', 'ꜩ': 'tz', 'ú': 'u', 'ŭ': 'u', 'ǔ': 'u', 'û': 'u', 'ṷ': 'u', 'ü': 'u', 'ǘ': 'u', 'ǚ': 'u', 'ǜ': 'u', 'ǖ': 'u', 'ṳ': 'u', 'ụ': 'u', 'ű': 'u', 'ȕ': 'u', 'ù': 'u', 'ủ': 'u', 'ư': 'u', 'ứ': 'u', 'ự': 'u', 'ừ': 'u', 'ử': 'u', 'ữ': 'u', 'ȗ': 'u', 'ū': 'u', 'ṻ': 'u', 'ų': 'u', 'ᶙ': 'u', 'ů': 'u', 'ũ': 'u', 'ṹ': 'u', 'ṵ': 'u', 'ᵫ': 'ue', 'ꝸ': 'um', 'ⱴ': 'v', 'ꝟ': 'v', 'ṿ': 'v', 'ʋ': 'v', 'ᶌ': 'v', 'ⱱ': 'v', 'ṽ': 'v', 'ꝡ': 'vy', 'ẃ': 'w', 'ŵ': 'w', 'ẅ': 'w', 'ẇ': 'w', 'ẉ': 'w', 'ẁ': 'w', 'ⱳ': 'w', 'ẘ': 'w', 'ẍ': 'x', 'ẋ': 'x', 'ᶍ': 'x', 'ý': 'y', 'ŷ': 'y', 'ÿ': 'y', 'ẏ': 'y', 'ỵ': 'y', 'ỳ': 'y', 'ƴ': 'y', 'ỷ': 'y', 'ỿ': 'y', 'ȳ': 'y', 'ẙ': 'y', 'ɏ': 'y', 'ỹ': 'y', 'ź': 'z', 'ž': 'z', 'ẑ': 'z', 'ʑ': 'z', 'ⱬ': 'z', 'ż': 'z', 'ẓ': 'z', 'ȥ': 'z', 'ẕ': 'z', 'ᵶ': 'z', 'ᶎ': 'z', 'ʐ': 'z', 'ƶ': 'z', 'ɀ': 'z', 'ff': 'ff', 'ffi': 'ffi', 'ffl': 'ffl', 'fi': 'fi', 'fl': 'fl', 'ij': 'ij', 'œ': 'oe', 'st': 'st', 'ₐ': 'a', 'ₑ': 'e', 'ᵢ': 'i', 'ⱼ': 'j', 'ₒ': 'o', 'ᵣ': 'r', 'ᵤ': 'u', 'ᵥ': 'v', 'ₓ': 'x' };\n\n\t\t\treturn text.toString().replace(/[\\u007F-\\uFFFF]/g, (key) => diacriticsMap[key] || key);\n\t\t},\n\t\ttextHighlight: function( text, term ) {\n\t\t\tif ( text === undefined ) {\n\t\t\t\ttext = \"\";\n\t\t\t}\n\t\t\tlet markup = \"\";\n\t\t\tconst remove_diacritics = pf.select2.base.prototype.removeDiacritics;\n\t\t\tconst no_diac_text = remove_diacritics(text);\n\t\t\tconst no_diac_term = remove_diacritics(term);\n\t\t\tlet start = no_diac_text.toUpperCase().indexOf(no_diac_term.toString().toUpperCase());\n\t\t\tif ( start !== 0 && !mw.config.get( 'wgPageFormsAutocompleteOnAllChars' ) ) {\n\t\t\t\tstart = no_diac_text.toUpperCase().indexOf(\" \" + no_diac_term.toString().toUpperCase());\n\t\t\t\tif ( start !== -1 ) {\n\t\t\t\t\tstart = start + 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( start !== -1 ) {\n\t\t\t\tconst boldStart = String.fromCharCode(1);\n\t\t\t\tconst boldEnd = String.fromCharCode(2);\n\t\t\t\tmarkup = text.slice(0, Math.max(0, start)) + boldStart +\n\t\t\t\t\ttext.substr(start,term.length) + boldEnd +\n\t\t\t\t\ttext.substr(start + term.length, text.length);\n\t\t\t} else {\n\t\t\t\tmarkup = (text);\n\t\t\t}\n\t\t\treturn markup;\n\t\t},\n\t};\n}( jQuery, mediaWiki, pageforms ) );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/ext.pf.select2.tokens.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/uploadable/Booklet.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/uploadable/init.js","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/libs/widgets/mw.widgets.PFDateInputWidget.js","messages":[{"ruleId":"jsdoc/require-returns","severity":1,"message":"Missing JSDoc @return declaration.","line":24,"column":2,"nodeType":"Block","endLine":32,"endColumn":5},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"date\" type.","line":30,"column":1,"nodeType":"Block","endLine":30,"endColumn":1},{"ruleId":"jsdoc/require-param-type","severity":1,"message":"Missing JSDoc @param \"format\" type.","line":31,"column":1,"nodeType":"Block","endLine":31,"endColumn":1},{"ruleId":"prefer-const","severity":1,"message":"'inputFormat' is never reassigned. Use 'const' instead.","line":43,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":43,"endColumn":15},{"ruleId":"prefer-const","severity":1,"message":"'value' is never reassigned. Use 'const' instead.","line":44,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":44,"endColumn":9},{"ruleId":"prefer-const","severity":1,"message":"'valid' is never reassigned. Use 'const' instead.","line":45,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":45,"endColumn":9},{"ruleId":"prefer-const","severity":1,"message":"'mom' is never reassigned. Use 'const' instead.","line":53,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":53,"endColumn":6},{"ruleId":"prefer-const","severity":1,"message":"'inputFormat' is never reassigned. Use 'const' instead.","line":78,"column":4,"nodeType":"Identifier","messageId":"useConst","endLine":78,"endColumn":15},{"ruleId":"prefer-const","severity":1,"message":"'moment' is never reassigned. Use 'const' instead.","line":84,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":84,"endColumn":9},{"ruleId":"prefer-const","severity":1,"message":"'parsedDatePartsLength' is never reassigned. Use 'const' instead.","line":85,"column":3,"nodeType":"Identifier","messageId":"useConst","endLine":85,"endColumn":24}],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":10,"fixableErrorCount":0,"fixableWarningCount":0,"source":"/* global moment */\n( function () {\n\n\tmw.widgets.PFDateInputWidget = function PFDateInputWidget( config ) {\n\t\tlet inputFormat;\n\n\t\tif ( config.inputFormat ) {\n\t\t\tinputFormat = config.inputFormat.split( ';' );\n\t\t\tif ( inputFormat.length > 1 ) {\n\t\t\t\tconfig.inputFormat = inputFormat.sort( ( a, b ) => a.length - b.length );\n\t\t\t}\n\t\t}\n\n\t\t// Parent constructor\n\t\tmw.widgets.PFDateInputWidget.parent.call( this, config );\n\t};\n\n\t/* Inheritance */\n\n\tOO.inheritClass( mw.widgets.PFDateInputWidget, mw.widgets.DateInputWidget );\n\n\t/* Methods */\n\n\t/**\n\t *  There is a bug in DateInputWidget, it calls this function for internal date\n\t *  this.getValue() in this.getValidity() function and entered date\n\t *  this.textInput.getValue() in this.onTextInputChange()\n\t *  but they can have different formats\n\t *\n\t * @param date\n\t * @param format\n\t */\n\tmw.widgets.PFDateInputWidget.prototype.isValidDate = function ( date, format ) {\n\t\tconst\n\t\t\tmom = moment( date, format || this.getInternalFormat( true ) ),\n\t\t\tflags = mom.parsingFlags();\n\n\t\treturn mom.isValid() && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0;\n\t};\n\n\tmw.widgets.PFDateInputWidget.prototype.onTextInputChange = function () {\n\t\tlet mom,\n\t\t\tinputFormat = this.getInputFormat(),\n\t\t\tvalue = this.textInput.getValue(),\n\t\t\tvalid = this.isValidDate( value, inputFormat );\n\n\t\tif ( value === '' || !valid || typeof inputFormat === 'string' ) {\n\t\t\treturn mw.widgets.PFDateInputWidget.parent.prototype.onTextInputChange.call( this );\n\t\t}\n\n\t\tthis.inTextInput++;\n\t\t// Well-formed date value, parse and set it\n\t\tmom = moment( value, inputFormat );\n\t\t// Use English locale to avoid number formatting\n\t\tthis.setValue( mom.locale( 'en' ).format( this.getInternalFormat( mom ) ) );\n\t\tthis.inTextInput--;\n\t};\n\n\tmw.widgets.PFDateInputWidget.prototype.getInternalFormat = function ( mom ) {\n\t\tconst internalFormats = [\n\t\t\t'YYYY',\n\t\t\t'YYYY-MM',\n\t\t\t'YYYY-MM-DD',\n\t\t];\n\n\t\tif ( !mom ) {\n\t\t\treturn mw.widgets.PFDateInputWidget.parent.prototype.getInternalFormat.call( this );\n\t\t} else if ( mom === true ) {\n\t\t\treturn internalFormats;\n\t\t}\n\t\treturn internalFormats[ mom.parsingFlags().parsedDateParts.length - 1 ];\n\t};\n\n\tmw.widgets.PFDateInputWidget.prototype.updateUI = function () {\n\t\tlet moment,\n\t\t\tformat,\n\t\t\tparsedDatePartsLength,\n\t\t\tinputFormat = this.getInputFormat();\n\n\t\tif ( this.getValue() === '' || typeof inputFormat === 'string' ) {\n\t\t\treturn mw.widgets.PFDateInputWidget.parent.prototype.updateUI.call( this );\n\t\t}\n\n\t\tmoment = this.getMoment();\n\t\tparsedDatePartsLength = moment.parsingFlags().parsedDateParts.length;\n\t\tif ( parsedDatePartsLength === 1 ) {\n\t\t\t// Minimum length of the input format for a year\n\t\t\tformat = inputFormat[ 0 ];\n\t\t} else {\n\t\t\t// Maximum length of the input format by default\n\t\t\tformat = inputFormat[ inputFormat.length - 1 ];\n\t\t\tif ( parsedDatePartsLength === 2 && format.includes( 'D' ) ) {\n\t\t\t\t// Use shorter format when day is not in moment but format has day\n\t\t\t\tformat = inputFormat[ inputFormat.length - 2 ];\n\t\t\t}\n\t\t}\n\t\tif ( !this.inTextInput ) {\n\t\t\tthis.textInput.setValue( moment.format( format ) );\n\t\t}\n\t\tif ( !this.inCalendar ) {\n\t\t\tthis.calendar.setDate( this.getValue() );\n\t\t}\n\t\tthis.innerLabel.setLabel( moment.format( format ) );\n\t\tthis.$element.removeClass( 'mw-widget-dateInputWidget-empty' );\n\t};\n\n}() );\n","usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/package-lock.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]},{"filePath":"/src/repo/package.json","messages":[],"suppressedMessages":[],"errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[{"ruleId":"implicit-arrow-linebreak","replacedBy":[]},{"ruleId":"no-extra-parens","replacedBy":[]},{"ruleId":"arrow-parens","replacedBy":[]},{"ruleId":"arrow-spacing","replacedBy":[]},{"ruleId":"lines-between-class-members","replacedBy":[]},{"ruleId":"no-new-require","replacedBy":[]},{"ruleId":"template-curly-spacing","replacedBy":[]},{"ruleId":"array-bracket-spacing","replacedBy":[]},{"ruleId":"block-spacing","replacedBy":[]},{"ruleId":"brace-style","replacedBy":[]},{"ruleId":"comma-style","replacedBy":[]},{"ruleId":"dot-location","replacedBy":[]},{"ruleId":"eol-last","replacedBy":[]},{"ruleId":"linebreak-style","replacedBy":[]},{"ruleId":"new-parens","replacedBy":[]},{"ruleId":"no-floating-decimal","replacedBy":[]},{"ruleId":"no-new-object","replacedBy":["no-object-constructor"]},{"ruleId":"no-trailing-spaces","replacedBy":[]},{"ruleId":"semi-style","replacedBy":[]},{"ruleId":"switch-colon-spacing","replacedBy":[]}]}]

--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
--- stdout ---

added 323 packages, and audited 324 packages in 3s

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

found 0 vulnerabilities

--- end ---
$ /usr/bin/npm test
--- stderr ---
[baseline-browser-mapping] The data in this module is over two months old.  To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`
--- stdout ---

> test
> grunt test

Running "eslint:all" (eslint) task

/src/repo/libs/PF_AutoEditRating.js
  63:23  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  65:4   warning  Prefer .then to .done                                                         no-jquery/no-done-fail

/src/repo/libs/PF_AutocompleteWidget.js
   68:3   warning  'value' is never reassigned. Use 'const' instead          prefer-const
   69:3   warning  'deferred' is never reassigned. Use 'const' instead       prefer-const
   73:2   warning  'api' is never reassigned. Use 'const' instead            prefer-const
   74:2   warning  'requestParams' is never reassigned. Use 'const' instead  prefer-const
  100:3   warning  'items' is never reassigned. Use 'const' instead          prefer-const
  139:18  warning  Prefer `String#slice()` over `String#substr()`            unicorn/prefer-string-slice

/src/repo/libs/PF_ComboBoxInput.js
  129:9   warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  145:51  warning  ES2015 default parameters are forbidden                                       es-x/no-default-parameters
  146:7   warning  'input_id' is never reassigned. Use 'const' instead                           prefer-const
  147:4   warning  'values' is never reassigned. Use 'const' instead                             prefer-const
  148:4   warning  'dep_on' is never reassigned. Use 'const' instead                             prefer-const
  149:4   warning  'self' is never reassigned. Use 'const' instead                               prefer-const
  154:4   warning  'wgPageFormsAutocompleteOnAllChars' is never reassigned. Use 'const' instead  prefer-const
  158:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  165:5   warning  'data_type' is never reassigned. Use 'const' instead                          prefer-const
  550:18  warning  Prefer `String#slice()` over `String#substr()`                                unicorn/prefer-string-slice

/src/repo/libs/PF_CreateClass.js
  32:2  warning  Unexpected var, use let or const instead  no-var
  38:2  warning  Unexpected var, use let or const instead  no-var

/src/repo/libs/PF_CreateForm.js
  60:3  warning  Expected no linebreak before this expression  implicit-arrow-linebreak

/src/repo/libs/PF_FullCalendar.js
   59:7   warning  'events' is never reassigned. Use 'const' instead                             prefer-const
   59:90  warning  'eventsNoDate' is never reassigned. Use 'const' instead                       prefer-const
  669:11  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  871:11  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_SpreadsheetAutocompleteWidget.js
   42:3   warning  'deferred' is never reassigned. Use 'const' instead               prefer-const
   52:2   warning  'api' is never reassigned. Use 'const' instead                    prefer-const
   53:2   warning  'requestParams' is never reassigned. Use 'const' instead          prefer-const
  100:3   warning  'items' is never reassigned. Use 'const' instead                  prefer-const
  122:7   warning  'self' is never reassigned. Use 'const' instead                   prefer-const
  123:4   warning  'wgPageFormsEDSettings' is never reassigned. Use 'const' instead  prefer-const
  124:4   warning  'name' is never reassigned. Use 'const' instead                   prefer-const
  125:4   warning  'edgValues' is never reassigned. Use 'const' instead              prefer-const
  177:17  warning  Prefer `String#slice()` over `String#substr()`                    unicorn/prefer-string-slice
  224:2   warning  '$baseElement' is never reassigned. Use 'const' instead           prefer-const

/src/repo/libs/PF_SpreadsheetComboBoxInput.js
   30:6   warning  'data_source' is never reassigned. Use 'const' instead                          prefer-const
   31:3   warning  'data_type' is never reassigned. Use 'const' instead                            prefer-const
   33:3   warning  'self' is never reassigned. Use 'const' instead                                 prefer-const
   34:3   warning  'values' is never reassigned. Use 'const' instead                               prefer-const
   50:5   warning  Unexpected var, use let or const instead                                        no-var
   54:7   warning  Unexpected var, use let or const instead                                        no-var
   54:11  warning  'valueFilter' declared on line 56 column 11 is used outside of binding context  block-scoped-var
   56:7   warning  Unexpected var, use let or const instead                                        no-var
   56:11  warning  'valueFilter' declared on line 54 column 11 is used outside of binding context  block-scoped-var
   58:11  warning  'valueFilter' declared on line 54 column 11 is used outside of binding context  block-scoped-var
   58:11  warning  'valueFilter' declared on line 56 column 11 is used outside of binding context  block-scoped-var
  114:13  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  114:20  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  114:37  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  116:20  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  116:62  warning  'i' declared on line 50 column 9 is used outside of binding context             block-scoped-var
  130:1   warning  Missing JSDoc @return type                                                      jsdoc/require-returns-type
  145:17  warning  Prefer `String#slice()` over `String#substr()`                                  unicorn/prefer-string-slice
  189:1   warning  The type 'integer' is undefined                                                 jsdoc/no-undefined-types
  196:2   warning  jQuery collection names must match the variablePattern                          no-jquery/variable-pattern
  196:2   warning  'baseElement' is never reassigned. Use 'const' instead                          prefer-const

/src/repo/libs/PF_autoedit.js
   15:18  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
   89:23  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  100:4   warning  Prefer .then to .done                                                         no-jquery/no-done-fail

/src/repo/libs/PF_checkboxes.js
  4:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  5:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type

/src/repo/libs/PF_collapsible.js
  30:8  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_datepicker.js
   4:1  warning  Missing JSDoc @param "$" type                                                 jsdoc/require-param-type
   5:1  warning  Missing JSDoc @param "oo" type                                                jsdoc/require-param-type
   6:1  warning  Missing JSDoc @param "mw" type                                                jsdoc/require-param-type
   7:1  warning  Missing JSDoc @param "pf" type                                                jsdoc/require-param-type
  18:9  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_datetimepicker.js
  4:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  5:1  warning  Missing JSDoc @param "oo" type  jsdoc/require-param-type
  6:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type
  7:1  warning  Missing JSDoc @param "pf" type  jsdoc/require-param-type

/src/repo/libs/PF_editWarning.js
  21:44  warning  'origValues' is never reassigned. Use 'const' instead                         prefer-const
  22:4   warning  '$allInputs' is never reassigned. Use 'const' instead                         prefer-const
  32:9   warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  40:3   warning  'allowCloseWindow' is never reassigned. Use 'const' instead                   prefer-const
  61:11  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_formInput.js
   6:1  warning  Missing JSDoc @param "$" type             jsdoc/require-param-type
   7:1  warning  Missing JSDoc @param "mw" type            jsdoc/require-param-type
  21:4  warning  ES2015 'for-of' statements are forbidden  es-x/no-for-of-loops
  82:4  warning  ES2015 'for-of' statements are forbidden  es-x/no-for-of-loops

/src/repo/libs/PF_imagePreview.js
  4:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  5:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type

/src/repo/libs/PF_maps.js
  236:4  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/libs/PF_maps.offline.js
  258:7  warning  'addressText' is never reassigned. Use 'const' instead  prefer-const
  272:4  warning  Prefer .then to .done                                   no-jquery/no-done-fail

/src/repo/libs/PF_popupform.js
  315:3   warning  jQuery collection names must match the variablePattern                        no-jquery/variable-pattern
  586:3   warning  ES2024 Resizable ArrayBuffer is forbidden                                     es-x/no-resizable-and-growable-arraybuffers
  604:5   warning  Unexpected var, use let or const instead                                      no-var
  695:12  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state
  709:12  warning  Where possible, maintain application state in JS to avoid slower DOM queries  no-jquery/no-class-state

/src/repo/libs/PF_preview.js
  56:3  warning  ES2024 Resizable ArrayBuffer is forbidden  es-x/no-resizable-and-growable-arraybuffers

/src/repo/libs/PF_rating.js
  43:4  warning  Selector extensions are not allowed  no-jquery/no-sizzle

/src/repo/libs/PF_simpleupload.js
   5:1  warning  Missing JSDoc @param "$" type                            jsdoc/require-param-type
   6:1  warning  Missing JSDoc @param "mw" type                           jsdoc/require-param-type
  45:4  warning  'loadingImage' is never reassigned. Use 'const' instead  prefer-const

/src/repo/libs/PF_spreadsheet.js
  326:3   warning  'editor' is never reassigned. Use 'const' instead                            prefer-const
  373:7   warning  'templateName' is never reassigned. Use 'const' instead                      prefer-const
  374:4   warning  'formName' is never reassigned. Use 'const' instead                          prefer-const
  376:4   warning  'editMultiplePages' is never reassigned. Use 'const' instead                 prefer-const
  394:3   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  440:3   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  534:5   warning  Unexpected var, use let or const instead                                     no-var
  687:6   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  690:7   warning  ES2015 'for-of' statements are forbidden                                     es-x/no-for-of-loops
  706:6   warning  Unexpected var, use let or const instead                                     no-var
  751:12  warning  'columnParams' is already declared in the upper scope on line 853 column 11  no-shadow
  863:10  warning  'numberOfColumns' is never reassigned. Use 'const' instead                   prefer-const
  863:28  warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle
  867:6   warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle
  924:7   warning  'templateName' is never reassigned. Use 'const' instead                      prefer-const
  925:4   warning  'table' is never reassigned. Use 'const' instead                             prefer-const
  927:4   warning  'editMultiplePages' is never reassigned. Use 'const' instead                 prefer-const
  928:27  warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle
  933:4   warning  Positional selector extensions are not allowed                               no-jquery/no-sizzle

/src/repo/libs/PF_submit.js
  142:46  warning  Prefer `String#slice()` over `String#substring()`                   unicorn/prefer-string-slice
  175:10  warning  '$form' is already declared in the upper scope on line 14 column 6  no-shadow

/src/repo/libs/PF_timepicker.js
  62:9  warning  Selector extensions are not allowed  no-jquery/no-sizzle

/src/repo/libs/PF_tree.js
  6:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type
  7:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type
  8:1  warning  Missing JSDoc @param "pf" type  jsdoc/require-param-type

/src/repo/libs/PageForms.js
   201:10  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
   232:19  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
   243:9   warning  Selector extensions are not allowed                                                                  no-jquery/no-sizzle
   293:3   warning  'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead                                   prefer-const
   345:6   warning  'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead                                   prefer-const
   371:6   warning  'wgPageFormsShowOnSelect' is never reassigned. Use 'const' instead                                   prefer-const
   771:3   warning  Unexpected var, use let or const instead                                                             no-var
   840:2   warning  Unexpected var, use let or const instead                                                             no-var
   840:6   warning  'negative' declared on line 843 column 7 is used outside of binding context                          block-scoped-var
   843:3   warning  Unexpected var, use let or const instead                                                             no-var
   849:7   warning  'negative' declared on line 843 column 7 is used outside of binding context                          block-scoped-var
  1023:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1024:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1030:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1031:8   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1125:9   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1232:9   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1246:1   warning  JSDoc @return declaration present but return expression not available in function                    jsdoc/require-returns-check
  1265:10  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1269:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1474:27  warning  Selector extensions are not allowed                                                                  no-jquery/no-sizzle
  1490:3   warning  'wgPageFormsCargoFields' is never reassigned. Use 'const' instead                                    prefer-const
  1491:3   warning  'wgPageFormsFieldProperties' is never reassigned. Use 'const' instead                                prefer-const
  1565:4   warning  'dependentField' is never reassigned. Use 'const' instead                                            prefer-const
  1574:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1703:9   warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1710:10  warning  jQuery collection names must match the variablePattern                                               no-jquery/variable-pattern
  1789:19  warning  OOUI button has no label. Even icon-only buttons should set a label with invisibleLabel set to true  mediawiki/no-unlabeled-buttonwidget
  1970:30  warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1983:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1987:8   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state
  1992:7   warning  Where possible, maintain application state in JS to avoid slower DOM queries                         no-jquery/no-class-state

/src/repo/libs/ext.pf.select2.base.js
  313:6  warning  Prefer `String#slice()` over `String#substr()`  unicorn/prefer-string-slice
  314:6  warning  Prefer `String#slice()` over `String#substr()`  unicorn/prefer-string-slice

/src/repo/libs/widgets/mw.widgets.PFDateInputWidget.js
  24:2  warning  Missing JSDoc @return declaration                                 jsdoc/require-returns
  30:1  warning  Missing JSDoc @param "date" type                                  jsdoc/require-param-type
  31:1  warning  Missing JSDoc @param "format" type                                jsdoc/require-param-type
  43:4  warning  'inputFormat' is never reassigned. Use 'const' instead            prefer-const
  44:4  warning  'value' is never reassigned. Use 'const' instead                  prefer-const
  45:4  warning  'valid' is never reassigned. Use 'const' instead                  prefer-const
  53:3  warning  'mom' is never reassigned. Use 'const' instead                    prefer-const
  78:4  warning  'inputFormat' is never reassigned. Use 'const' instead            prefer-const
  84:3  warning  'moment' is never reassigned. Use 'const' instead                 prefer-const
  85:3  warning  'parsedDatePartsLength' is never reassigned. Use 'const' instead  prefer-const

✖ 164 problems (0 errors, 164 warnings)


Running "banana:all" (banana) task
>> 1 message directory checked.

Done.

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 50.0.0 -> 51.0.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 3 updates, 0 removals
  - Upgrading composer/spdx-licenses (1.5.10 => 1.6.0)
  - Upgrading mediawiki/mediawiki-codesniffer (v50.0.0 => v51.0.0)
  - Upgrading phpcsstandards/phpcsextra (1.4.0 => 1.5.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 3 updates, 0 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Upgrading phpcsstandards/phpcsextra (1.4.0 => 1.5.0): Extracting archive
  - Upgrading composer/spdx-licenses (1.5.10 => 1.6.0): Extracting archive
  - Upgrading mediawiki/mediawiki-codesniffer (v50.0.0 => v51.0.0): Extracting archive
 0/3 [>---------------------------]   0%
 3/3 [============================] 100%
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
--- stdout ---

--- end ---
Previously failing phpcs rules: {'MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage', 'MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation', 'MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected', 'MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle', 'Squiz.Scope.MethodScope.Missing', 'MediaWiki.Commenting.PropertyDocumentation.MissingVar', 'Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition', 'MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected', 'MediaWiki.Commenting.CommentBeforeClass.SpacingAfter', 'MediaWiki.Commenting.PropertyAnnotations.UnrecognizedAnnotation', 'MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage', 'MediaWiki.Usage.ForbiddenFunctions.passthru', 'Generic.Files.LineLength.TooLong', 'MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate', 'MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic', 'MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic'}
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":923,"warnings":456,"fixable":0},"files":{"\/src\/repo\/includes\/parserfunctions\/PFFormRedLink.php":{"errors":1,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/includes\/parserfunctions\/PFQueryFormLink.php":{"errors":1,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/specials\/PFForms.php":{"errors":15,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"isExpensive\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Visibility must be declared on method \"isSyndicated\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageFooter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":34,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Visibility must be declared on method \"getQueryInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Visibility must be declared on method \"sortDescending\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Visibility must be declared on method \"formatResult\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":60,"column":15}]},"\/src\/repo\/includes\/parserfunctions\/PFTemplateParams.php":{"errors":3,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments; if it is a file-level comment, file a task in #MediaWiki-Codesniffer","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":11,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":19}]},"\/src\/repo\/includes\/parserfunctions\/PFArrayMapTemplate.php":{"errors":2,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageTemplate.php":{"errors":14,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":5},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":18,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Visibility must be declared on method \"addParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Visibility must be declared on method \"addUnhandledParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Visibility must be declared on method \"addUnhandledParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":61,"column":5},{"message":"Visibility must be declared on method \"getName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":61,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"getParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageFreeText.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":5},{"message":"Visibility must be declared on method \"setText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":15,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Visibility must be declared on method \"getText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5}]},"\/src\/repo\/includes\/forminputs\/PFStartDateTimeInput.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19}]},"\/src\/repo\/specials\/PFTemplates.php":{"errors":17,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"isExpensive\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Visibility must be declared on method \"isSyndicated\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageFooter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":35,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":5},{"message":"Visibility must be declared on method \"getQueryInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":38,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":5},{"message":"Visibility must be declared on method \"sortDescending\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":46,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":50,"column":5},{"message":"Visibility must be declared on method \"getCategoryDefinedByTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":50,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":71,"column":5},{"message":"Visibility must be declared on method \"formatResult\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":71,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":85,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFEndDateTimeInput.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFEndDateInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFRatingInput.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19}]},"\/src\/repo\/specials\/PFCreateCategory.php":{"errors":6,"warnings":0,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Visibility must be declared on method \"createCategoryText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":169,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFTextWithAutocompleteInput.php":{"errors":15,"warnings":2,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":11,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":12},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":17,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":35,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":47,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":59,"column":19},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":60,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":63,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":83,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":89,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":111,"column":12}]},"\/src\/repo\/includes\/PFPageSection.php":{"errors":28,"warnings":0,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":8,"column":4},{"message":"There must be at least a blank line between a file-level comment and a class. Make sure you are not mixing file-level comments (like license headers) and class documentation","source":"MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":10,"column":2},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":12,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12},{"message":"Visibility must be declared on method \"newFromFormTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":69,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":73,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":77,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":81,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":85,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":89,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":93,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":97,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":101,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":105,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":109,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":113,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":117,"column":5},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":117,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":150,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFDateTimePicker.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":30,"column":122}]},"\/src\/repo\/includes\/widgets\/PFDateInputWidget.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":5,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":9,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFTextAreaWithAutocompleteInput.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":17,"column":131}]},"\/src\/repo\/includes\/PFHelperFormAction.php":{"errors":2,"warnings":0,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":10,"column":4},{"message":"Visibility must be declared on method \"displayTab\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":62,"column":12}]},"\/src\/repo\/includes\/parserfunctions\/PFAutoEditRating.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":108,"column":167}]},"\/src\/repo\/tests\/phpunit\/unit\/PFFormFieldTemplateTest.php":{"errors":1,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments; if it is a file-level comment, file a task in #MediaWiki-Codesniffer","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/includes\/forminputs\/PFCheckboxInput.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":98,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFEnumInput.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":62,"column":19}]},"\/src\/repo\/includes\/wikipage\/PFWikiPage.php":{"errors":26,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":5},{"message":"Visibility must be declared on method \"addTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":24,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":5},{"message":"Visibility must be declared on method \"addTemplateParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":36,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":5},{"message":"Visibility must be declared on method \"getEmbeddedTemplateForParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":48,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":5},{"message":"Visibility must be declared on method \"addSection\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":57,"column":5},{"message":"Visibility must be declared on method \"addFreeTextSection\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":61,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"setFreeText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"makeFreeTextOnlyInclude\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":75,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":79,"column":5},{"message":"Visibility must be declared on method \"freeTextOnlyInclude\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":79,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":103,"column":5},{"message":"Visibility must be declared on method \"createTemplateCall\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":103,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":156,"column":5},{"message":"Visibility must be declared on method \"createTemplateCallsForTemplateName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":156,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":168,"column":5},{"message":"Visibility must be declared on method \"createPageText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":168,"column":5}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageTemplateParam.php":{"errors":10,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":5},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":16,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":5},{"message":"Visibility must be declared on method \"getName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":21,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":5},{"message":"Visibility must be declared on method \"getValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":25,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Visibility must be declared on method \"setValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5}]},"\/src\/repo\/specials\/PFFormEdit.php":{"errors":12,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":77,"column":5},{"message":"Visibility must be declared on method \"printAltFormsList\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":77,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":5},{"message":"Visibility must be declared on method \"printForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":95,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsTargetName","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":96,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":255,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":259,"column":12}]},"\/src\/repo\/includes\/parserfunctions\/PFFormInputParserFunction.php":{"errors":2,"warnings":2,"messages":[{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":43,"column":6},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":19},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":232,"column":139},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":235,"column":124}]},"\/src\/repo\/specials\/PFFormStart.php":{"errors":7,"warnings":3,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Should use function $this->msg() rather than function wfMessage()","source":"MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage","severity":5,"fixable":false,"type":"WARNING","line":124,"column":54},{"message":"Visibility must be declared on method \"getFormEditURL\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":141,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":150,"column":5},{"message":"Visibility must be declared on method \"doRedirect\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":150,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsScriptPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":210,"column":16},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":212,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":217,"column":15}]},"\/src\/repo\/includes\/parserfunctions\/PFAutoEdit.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":221,"column":19}]},"\/src\/repo\/tests\/mw-phpunit-runner.php":{"errors":2,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":1},{"message":"passthru should not be used","source":"MediaWiki.Usage.ForbiddenFunctions.passthru","severity":5,"fixable":false,"type":"WARNING","line":40,"column":1}]},"\/src\/repo\/includes\/parserfunctions\/PFDefaultForm.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFTimePickerInput.php":{"errors":0,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":25,"column":122},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":106,"column":165},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":110,"column":158}]},"\/src\/repo\/includes\/PFCreatePageJob.php":{"errors":3,"warnings":0,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":5},{"message":"Visibility must be declared on method \"run\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":56,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFDateTimeInput.php":{"errors":6,"warnings":5,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":12},{"message":"Line exceeds 120 characters; contains 194 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":103,"column":194},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":105,"column":195},{"message":"Line exceeds 120 characters; contains 200 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":107,"column":200},{"message":"Line exceeds 120 characters; contains 149 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":111,"column":149},{"message":"Line exceeds 120 characters; contains 188 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":125,"column":188},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":137,"column":19}]},"\/src\/repo\/tests\/bootstrap.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":11,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":1}]},"\/src\/repo\/specials\/PFRunQuery.php":{"errors":6,"warnings":4,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":18,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":5},{"message":"Visibility must be declared on method \"printPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":40,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":41,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsRunQueryFormAtTop","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":41,"column":41},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":131,"column":136},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsEmbedQueryCacheTTL","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":226,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":230,"column":15}]},"\/src\/repo\/includes\/parserfunctions\/PFFormLink.php":{"errors":4,"warnings":1,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":7,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":51,"column":22},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":233,"column":152},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":239,"column":19}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFValuesUtilsTestHttpsStreamWrapper.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":4,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFListBoxInput.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFYearInput.php":{"errors":10,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":44,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":19}]},"\/src\/repo\/includes\/PFForm.php":{"errors":24,"warnings":1,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":9,"column":4},{"message":"There must be at least a blank line between a file-level comment and a class. Make sure you are not mixing file-level comments (like license headers) and class documentation","source":"MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":11,"column":2},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Visibility must be declared on method \"getFormName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Visibility must be declared on method \"getItems\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Visibility must be declared on method \"setPageNameFormula\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":41,"column":5},{"message":"Visibility must be declared on method \"setCreateTitle\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":41,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Visibility must be declared on method \"setEditTitle\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Visibility must be declared on method \"setAssociatedCategory\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":85,"column":1}]},"\/src\/repo\/includes\/forminputs\/PFCheckboxesInput.php":{"errors":5,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":19},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":117,"column":155}]},"\/src\/repo\/includes\/forminputs\/PFRegExpInput.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":32,"column":122}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/widgets\/PFDateInputWidgetTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/parserfunctions\/PFFormRedLinkTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":45,"column":123}]},"\/src\/repo\/includes\/forminputs\/PFLeafletInput.php":{"errors":3,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":30,"column":128},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":85,"column":150}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFUtilsTestDummySMWStore.php":{"errors":16,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":5,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":9,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":13,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":32,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":47,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":59,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":63,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":67,"column":16},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":67,"column":129}]},"\/src\/repo\/includes\/forminputs\/PFDateInput.php":{"errors":8,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":60,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":64,"column":12},{"message":"Visibility must be declared on method \"parseDate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":64,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":165,"column":19},{"message":"Line exceeds 120 characters; contains 188 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":187,"column":188},{"message":"Line exceeds 120 characters; contains 194 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":193,"column":194},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":197,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFTreeInput.php":{"errors":10,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":19},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":110,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":140,"column":19},{"message":"Visibility must be declared on method \"makeTitle\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":194,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFComboBoxInput.php":{"errors":5,"warnings":3,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":39,"column":128},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":107,"column":128},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":168,"column":130},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":205,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":245,"column":12}]},"\/src\/repo\/specials\/PFCreateProperty.php":{"errors":8,"warnings":3,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":12},{"message":"Visibility must be declared on method \"createPropertyText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":28,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Visibility must be declared on method \"printCreatePropertyForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":91,"column":123},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":92,"column":124},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":128,"column":127},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":155,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFTextAreaInput.php":{"errors":8,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":15,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":47,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":83,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":87,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":149,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFMultiEnumInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFTree.php":{"errors":8,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":13,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":14,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":62,"column":9},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":191,"column":20}]},"\/src\/repo\/includes\/forminputs\/PFTokensInput.php":{"errors":10,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":41,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":19},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":99,"column":127},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":177,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":226,"column":19}]},"\/src\/repo\/specials\/PFMultiPageEdit.php":{"errors":25,"warnings":4,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":26,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":27,"column":13},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsGridParams","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":71,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsScriptPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":71,"column":40},{"message":"Visibility must be declared on method \"setTemplateList\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":179,"column":5},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":189,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":194,"column":5},{"message":"Visibility must be declared on method \"isExpensive\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":194,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":198,"column":5},{"message":"Visibility must be declared on method \"isSyndicated\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":198,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":202,"column":5},{"message":"Visibility must be declared on method \"getPageHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":202,"column":5},{"message":"Visibility must be declared on method \"getPageFooter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":207,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":210,"column":5},{"message":"Visibility must be declared on method \"getQueryInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":210,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":221,"column":5},{"message":"Visibility must be declared on method \"sortDescending\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":221,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":225,"column":5},{"message":"Visibility must be declared on method \"findTemplatesForForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":225,"column":5},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":229,"column":31},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":249,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":259,"column":5},{"message":"Visibility must be declared on method \"formatResult\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":259,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":273,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFStartDateInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFOpenLayersInput.php":{"errors":6,"warnings":3,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":19},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":67,"column":158},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":138,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":138,"column":128},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":157,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":164,"column":19}]},"\/src\/repo\/includes\/PFFormEditAction.php":{"errors":9,"warnings":2,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":11,"column":4},{"message":"Visibility must be declared on method \"displayTab\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":50,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":145,"column":12},{"message":"Visibility must be declared on method \"displayFormChooser\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":12},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":211,"column":130},{"message":"Visibility must be declared on method \"getNumPagesPerForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":227,"column":12},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":251,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":258,"column":12},{"message":"Visibility must be declared on method \"printLinksToFormArray\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":258,"column":12},{"message":"Visibility must be declared on method \"displayForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":283,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":309,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFGoogleMapsInput.php":{"errors":3,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":27,"column":128},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":42,"column":131}]},"\/src\/repo\/languages\/PFMagic.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/forminputs\/PFDropdownInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFRadioButtonInput.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFTextInput.php":{"errors":11,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":42,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":61,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":70,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":135,"column":19},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":135,"column":142},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":136},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":194,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":300,"column":19}]},"\/src\/repo\/includes\/PFAutocompleteAPI.php":{"errors":9,"warnings":9,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsUseDisplayTitle","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":46,"column":16},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":76,"column":155},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":163,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":194,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":210,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":214,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":223,"column":13},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsCacheAutocompleteValues","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":229,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsAutocompleteCacheTimeout","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":229,"column":53},{"message":"Should use function $this->getConfig()->get() rather than global $smwgDefaultStore","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":230,"column":16},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":342,"column":131},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":350,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":357,"column":20},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":357,"column":175},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":375,"column":129},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":382,"column":20},{"message":"Visibility must be declared on method \"sortValuesByLength\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":517,"column":12}]},"\/src\/repo\/includes\/PFUtils.php":{"errors":6,"warnings":3,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":19},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":69,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":119,"column":19},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":233,"column":140},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":310,"column":22},{"message":"Visibility must be declared on method \"smartSplitFormTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":338,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":461,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":467,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":471,"column":19}]},"\/src\/repo\/includes\/parserfunctions\/PFTemplateDisplay.php":{"errors":8,"warnings":2,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments; if it is a file-level comment, file a task in #MediaWiki-Codesniffer","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":8,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":32,"column":143},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":169,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":204,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":220,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":245,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":251,"column":20},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":257,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":261,"column":20}]},"\/src\/repo\/includes\/PFHooks.php":{"errors":4,"warnings":9,"messages":[{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":22,"column":6},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":19},{"message":"Visibility must be declared on method \"registerFunctions\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":125,"column":12},{"message":"Visibility must be declared on method \"setGlobalJSVariables\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":12},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":236,"column":132},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":254,"column":195},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":302,"column":131},{"message":"Line exceeds 120 characters; contains 224 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":322,"column":224},{"message":"Line exceeds 120 characters; contains 173 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":329,"column":173},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":364,"column":124},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":370,"column":130},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":397,"column":129},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":436,"column":121}]},"\/src\/repo\/includes\/forminputs\/PFFormInput.php":{"errors":14,"warnings":7,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":25,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":26,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":27,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":28,"column":15},{"message":"@deprecated, is not a valid property annotation","source":"MediaWiki.Commenting.PropertyAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":30,"column":8},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":31,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":33,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":34,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":36,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":37,"column":15},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":51,"column":122},{"message":"Line exceeds 120 characters; contains 168 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":211,"column":8},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":213,"column":8},{"message":"Line exceeds 120 characters; contains 182 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":242,"column":8},{"message":"Line exceeds 120 characters; contains 209 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":244,"column":8},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":302,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":306,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":310,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":314,"column":19},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":337,"column":153},{"message":"Line exceeds 120 characters; contains 171 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":338,"column":171}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageSection.php":{"errors":13,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":12,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":5},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":17,"column":5},{"message":"Visibility must be declared on method \"isHideIfEmpty\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Visibility must be declared on method \"getHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":35,"column":5},{"message":"Visibility must be declared on method \"getHeaderLevel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":35,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":5},{"message":"Visibility must be declared on method \"getText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":39,"column":5}]},"\/src\/repo\/specials\/PFCreateClass.php":{"errors":3,"warnings":11,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":12},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":123,"column":128},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":124},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":269,"column":128},{"message":"Should use function $this->getConfig()->get() rather than global $smwgDefaultStore","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":277,"column":16},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":292,"column":122},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":293,"column":122},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":294,"column":134},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":295,"column":124},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":298,"column":121},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":321,"column":122},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":322,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":347,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFDatePickerInput.php":{"errors":3,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":29,"column":122},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":71,"column":17},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":119,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":157,"column":13},{"message":"Visibility must be declared on method \"genericTextHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":255,"column":12},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":255,"column":139}]},"\/src\/repo\/includes\/PFTemplate.php":{"errors":39,"warnings":7,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":20,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":21,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":22,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":23,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":24,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":25,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":26,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":27,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":66,"column":12},{"message":"Visibility must be declared on method \"loadTemplateFields\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":74,"column":5},{"message":"Visibility must be declared on method \"loadTemplateFieldsSMWAndOther\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":103,"column":5},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":122,"column":128},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":126,"column":130},{"message":"Line exceeds 120 characters; contains 257 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":257},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":144,"column":126},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":197,"column":140},{"message":"Visibility must be declared on method \"loadPropertySettingInTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":232,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":241,"column":5},{"message":"Visibility must be declared on method \"loadTemplateFieldsCargo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":241,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Visibility must be declared on method \"getCargoTableAndSchema\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":382,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":386,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":395,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":399,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":403,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":407,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":411,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":416,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":420,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":450,"column":12},{"message":"Line exceeds 120 characters; contains 208 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":575,"column":1},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":576,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":742,"column":5},{"message":"Visibility must be declared on method \"createTextForField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":742,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":763,"column":5},{"message":"Visibility must be declared on method \"printCategoryTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":763,"column":5}]},"\/src\/repo\/includes\/PFFormLinker.php":{"errors":7,"warnings":1,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":12,"column":4},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":20},{"message":"Visibility must be declared on method \"getDefaultForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":19},{"message":"Line exceeds 120 characters; contains 144 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":47,"column":144},{"message":"Visibility must be declared on method \"setBrokenLink\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":88,"column":12},{"message":"Visibility must be declared on method \"getDefaultFormsForPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":136,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":196,"column":19}]},"\/src\/repo\/includes\/PFTemplateField.php":{"errors":89,"warnings":2,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":11,"column":4},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":22,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":24,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":28,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":31,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":32,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":33,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":35,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":36,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":37,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":38,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":39,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":48,"column":12},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":48,"column":123},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":68,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":112,"column":12},{"message":"Visibility must be declared on method \"newFromParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":112,"column":12},{"message":"Visibility must be declared on method \"setTypeAndPossibleValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Visibility must be declared on method \"setSemanticProperty\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":197,"column":5},{"message":"Visibility must be declared on method \"setCargoFieldData\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":211,"column":5},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":232,"column":126},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":245,"column":5},{"message":"Visibility must be declared on method \"getFieldName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":245,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":249,"column":5},{"message":"Visibility must be declared on method \"getValueLabels\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":249,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":253,"column":5},{"message":"Visibility must be declared on method \"getLabel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":253,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":257,"column":5},{"message":"Visibility must be declared on method \"getSemanticProperty\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":257,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":261,"column":5},{"message":"Visibility must be declared on method \"getPropertyType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":261,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":265,"column":5},{"message":"Visibility must be declared on method \"getExpectedCargoField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":265,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":273,"column":5},{"message":"Visibility must be declared on method \"getFullCargoField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":273,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5},{"message":"Visibility must be declared on method \"getFieldType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Visibility must be declared on method \"getRealFieldType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Visibility must be declared on method \"getPossibleValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Visibility must be declared on method \"getHierarchyStructure\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":299,"column":5},{"message":"Visibility must be declared on method \"isList\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":299,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":303,"column":5},{"message":"Visibility must be declared on method \"getDelimiter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":303,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":307,"column":5},{"message":"Visibility must be declared on method \"getDisplay\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":307,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":311,"column":5},{"message":"Visibility must be declared on method \"getNSText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":311,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":315,"column":5},{"message":"Visibility must be declared on method \"getNamespace\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":315,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":319,"column":5},{"message":"Visibility must be declared on method \"getCategory\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":319,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":323,"column":5},{"message":"Visibility must be declared on method \"getForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":323,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":347,"column":5},{"message":"Visibility must be declared on method \"isMandatory\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":347,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":351,"column":5},{"message":"Visibility must be declared on method \"isUnique\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":351,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":355,"column":5},{"message":"Visibility must be declared on method \"getRegex\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":355,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":359,"column":5},{"message":"Visibility must be declared on method \"getHoldsTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":359,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":363,"column":5},{"message":"Visibility must be declared on method \"setLabel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":363,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":367,"column":5},{"message":"Visibility must be declared on method \"setNamespace\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":367,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":372,"column":5},{"message":"Visibility must be declared on method \"setNSText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":372,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":379,"column":5},{"message":"Visibility must be declared on method \"setFieldType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":379,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":388,"column":5},{"message":"Visibility must be declared on method \"setPossibleValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":388,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":392,"column":5},{"message":"Visibility must be declared on method \"setHierarchyStructure\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":392,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":396,"column":5},{"message":"Visibility must be declared on method \"createText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":396,"column":5}]},"\/src\/repo\/specials\/PFCreateTemplate.php":{"errors":15,"warnings":12,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":72,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":89,"column":5},{"message":"Visibility must be declared on method \"printFieldTypeDropdown\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":89,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgCargoFieldTypes","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":93,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":112,"column":12},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":208,"column":121},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":246,"column":150},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":247,"column":142},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":260,"column":12},{"message":"Visibility must be declared on method \"printTemplateStyleButton\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":260,"column":12},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":270,"column":141},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":273,"column":12},{"message":"Visibility must be declared on method \"printTemplateStyleInput\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":273,"column":12},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":278,"column":126},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":279,"column":127},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":280,"column":123},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":281,"column":129},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":286,"column":5},{"message":"Visibility must be declared on method \"printCreateTemplateForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":286,"column":5},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":444,"column":121},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":467,"column":122},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":468,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":517,"column":15}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormLinkerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":62,"column":104}]},"\/src\/repo\/includes\/PFTemplateInForm.php":{"errors":105,"warnings":6,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":8,"column":4},{"message":"There must be at least a blank line between a file-level comment and a class. Make sure you are not mixing file-level comments (like license headers) and class documentation","source":"MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":10,"column":2},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":12,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":20,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":21,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":22,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":23,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":24,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":25,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":26,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":27,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":36,"column":6},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":43,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":47,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":48,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":49,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":50,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":51,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":52,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":53,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":55,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":73,"column":19},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":79,"column":124},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":118,"column":125},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":141,"column":5},{"message":"Visibility must be declared on method \"getTemplateName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":141,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Visibility must be declared on method \"getHeight\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":149,"column":5},{"message":"Visibility must be declared on method \"getFields\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":149,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":153,"column":5},{"message":"Visibility must be declared on method \"getEmbedInTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":153,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":157,"column":5},{"message":"Visibility must be declared on method \"getEmbedInField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":157,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":161,"column":5},{"message":"Visibility must be declared on method \"getLabel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":161,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":165,"column":5},{"message":"Visibility must be declared on method \"getIntro\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":165,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":169,"column":5},{"message":"Visibility must be declared on method \"getAddButtonText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":169,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":173,"column":5},{"message":"Visibility must be declared on method \"getDisplay\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":173,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":177,"column":5},{"message":"Visibility must be declared on method \"getEventTitleField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":177,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":181,"column":5},{"message":"Visibility must be declared on method \"getEventDateField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":181,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":185,"column":5},{"message":"Visibility must be declared on method \"getEventStartDateField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":185,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":189,"column":5},{"message":"Visibility must be declared on method \"getEventEndDateField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":189,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":193,"column":5},{"message":"Visibility must be declared on method \"getPlaceholder\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":193,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":197,"column":5},{"message":"Visibility must be declared on method \"getDisplayedFieldsWhenMinimized\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":197,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":201,"column":5},{"message":"Visibility must be declared on method \"allowsMultiple\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":201,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":205,"column":5},{"message":"Visibility must be declared on method \"strictParsing\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":205,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":209,"column":5},{"message":"Visibility must be declared on method \"getMinInstancesAllowed\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":209,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":213,"column":5},{"message":"Visibility must be declared on method \"getMaxInstancesAllowed\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":213,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":217,"column":5},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":217,"column":5},{"message":"Visibility must be declared on method \"getFullTextInPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":250,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":254,"column":5},{"message":"Visibility must be declared on method \"pageCallsThisTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":254,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":258,"column":5},{"message":"Visibility must be declared on method \"hasValueFromPageForField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":258,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":262,"column":5},{"message":"Visibility must be declared on method \"getAndRemoveValueFromPageForField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":262,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":268,"column":5},{"message":"Visibility must be declared on method \"getValuesFromPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":268,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":272,"column":5},{"message":"Visibility must be declared on method \"getInstanceNum\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":272,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":276,"column":5},{"message":"Visibility must be declared on method \"getGridValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":276,"column":5},{"message":"Visibility must be declared on method \"incrementInstanceNum\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Visibility must be declared on method \"allInstancesPrinted\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Visibility must be declared on method \"addGridValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Visibility must be declared on method \"addField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Visibility must be declared on method \"changeFieldValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":306,"column":5},{"message":"Visibility must be declared on method \"setFieldValuesFromSubmit\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":314,"column":5},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":338,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Visibility must be declared on method \"getValuesFromSubmit\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Visibility must be declared on method \"removeUnparsedText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":376,"column":12},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":389,"column":34},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":392,"column":123},{"message":"Visibility must be declared on method \"restoreUnparsedText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":414,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":421,"column":5},{"message":"Visibility must be declared on method \"setFieldValuesFromPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":421,"column":5},{"message":"Visibility must be declared on method \"setPageRelatedInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":513,"column":5},{"message":"Line exceeds 120 characters; contains 149 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":528,"column":149},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":531,"column":5},{"message":"Visibility must be declared on method \"checkIfAllInstancesPrinted\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":531,"column":5}]},"\/src\/repo\/languages\/PFAliases.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormTest.php":{"errors":1,"warnings":5,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Line exceeds 120 characters; contains 144 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":99,"column":144},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":113,"column":1},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":152,"column":1},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":157,"column":125},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":215,"column":152}]},"\/src\/repo\/includes\/PFFormUtils.php":{"errors":29,"warnings":4,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":17,"column":4},{"message":"Visibility must be declared on method \"unhandledFieldsHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":60,"column":12},{"message":"Visibility must be declared on method \"summaryInputHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":60,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":12},{"message":"Visibility must be declared on method \"minorEditInputHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":95,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":139,"column":12},{"message":"Visibility must be declared on method \"watchInputHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":139,"column":12},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":143},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":140,"column":38},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":221,"column":12},{"message":"Visibility must be declared on method \"saveButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":221,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":241,"column":12},{"message":"Visibility must be declared on method \"saveAndContinueButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":241,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":267,"column":12},{"message":"Visibility must be declared on method \"showPreviewButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":267,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":286,"column":12},{"message":"Visibility must be declared on method \"showChangesButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":286,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":305,"column":12},{"message":"Visibility must be declared on method \"cancelLinkHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":305,"column":12},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":306,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":327,"column":12},{"message":"Visibility must be declared on method \"runQueryButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":327,"column":12},{"message":"Visibility must be declared on method \"formBottom\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":353,"column":12},{"message":"Visibility must be declared on method \"getPreloadedText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":395,"column":12},{"message":"Visibility must be declared on method \"queryFormBottom\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":422,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":426,"column":12},{"message":"Visibility must be declared on method \"getMonthNames\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":426,"column":12},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":683,"column":131},{"message":"Visibility must be declared on method \"headerHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":712,"column":12},{"message":"Visibility must be declared on method \"getChangedIndex\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":737,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":755,"column":12},{"message":"Visibility must be declared on method \"setShowOnSelect\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":755,"column":12}]},"\/src\/repo\/languages\/PFNamespaces.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/forminputs\/PFRadioButtonInputTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 148 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":372,"column":148}]},"\/src\/repo\/includes\/PFPageSchemas.php":{"errors":18,"warnings":9,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":13,"column":4},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":231,"column":12},{"message":"Visibility must be declared on method \"createFormInputXMLFromForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":231,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":255,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":259,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":263,"column":19},{"message":"Line exceeds 120 characters; contains 151 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":289,"column":151},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":310,"column":135},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":311,"column":140},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":330,"column":19},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":391,"column":123},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":394,"column":158},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":416,"column":176},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":428,"column":19},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":451,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":458,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":466,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":494,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":523,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":758,"column":128},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":764,"column":128},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":797,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":811,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":828,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":855,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":859,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":888,"column":19}]},"\/src\/repo\/specials\/PFCreateForm.php":{"errors":17,"warnings":20,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":5},{"message":"Visibility must be declared on method \"doSpecialCreateForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":43,"column":5},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":57,"column":132},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":70,"column":22},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":136,"column":137},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":161,"column":132},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":281,"column":141},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":478,"column":124},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":488,"column":5},{"message":"Visibility must be declared on method \"formCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":488,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":507,"column":5},{"message":"Visibility must be declared on method \"sectionCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":507,"column":5},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":535,"column":127},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":555,"column":5},{"message":"Visibility must be declared on method \"templateCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":555,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":605,"column":5},{"message":"Visibility must be declared on method \"fieldCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":605,"column":5},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":608,"column":136},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":631,"column":133},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":637,"column":16},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":639,"column":147},{"message":"Line exceeds 120 characters; contains 151 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":640,"column":151},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":642,"column":146},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":643,"column":150},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":676,"column":132},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":711,"column":5},{"message":"Visibility must be declared on method \"inputTypeDropdownHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":711,"column":5},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":722,"column":165},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":727,"column":121},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":749,"column":131},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":815,"column":16},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":826,"column":130},{"message":"Visibility must be declared on method \"showSectionParameters\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":871,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":913,"column":15}]},"\/src\/repo\/includes\/PFMappingUtils.php":{"errors":0,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":104,"column":130},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":106,"column":163},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":113,"column":122}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFMappingUtilsTest.php":{"errors":0,"warnings":8,"messages":[{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":320,"column":8},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":321,"column":8},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":323,"column":8},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":371,"column":165},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":392,"column":128},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":447,"column":123},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":471,"column":129},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":509,"column":8}]},"\/src\/repo\/includes\/PFFormField.php":{"errors":52,"warnings":18,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":31,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":32,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":33,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":34,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":38,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":53,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":55,"column":13},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":62,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":99,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":103,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":107,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":111,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":115,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":119,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":123,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":127,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":131,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":135,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":139,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":143,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":147,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":151,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":159,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":163,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":167,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":171,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":175,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":179,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":183,"column":12},{"message":"Visibility must be declared on method \"newFromFormFieldTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":183,"column":12},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":353,"column":121},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":356,"column":122},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":369,"column":28},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":386,"column":128},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":503,"column":13},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":503,"column":127},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":563,"column":5},{"message":"Visibility must be declared on method \"cleanupTranslateTags\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":563,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":596,"column":5},{"message":"Visibility must be declared on method \"getCurrentValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":596,"column":5},{"message":"Line exceeds 120 characters; contains 168 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":596,"column":168},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":603,"column":126},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":604,"column":13},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":607,"column":132},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":618,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":775,"column":12},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":782,"column":129},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":829,"column":143},{"message":"Line exceeds 120 characters; contains 145 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":832,"column":145},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":835,"column":141},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":850,"column":5},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":873,"column":139},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":876,"column":135},{"message":"Visibility must be declared on method \"getArgumentsForInputCallSMW\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":964,"column":5},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":978,"column":134},{"message":"Visibility must be declared on method \"getArgumentsForInputCallCargo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":985,"column":5},{"message":"Visibility must be declared on method \"getArgumentsForInputCall\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1027,"column":5},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1039,"column":152}]},"\/src\/repo\/includes\/parserfunctions\/PFArrayMap.php":{"errors":2,"warnings":1,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":19},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":52,"column":124}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFHelperFormActionTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":178,"column":121},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":189,"column":123}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormFieldTest.php":{"errors":2,"warnings":2,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":17,"column":8},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":483,"column":134}]},"\/src\/repo\/includes\/PFAutoeditAPI.php":{"errors":21,"warnings":25,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":57,"column":13},{"message":"Visibility must be declared on method \"addOptionsFromString\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"getOptions\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":72,"column":5},{"message":"Visibility must be declared on method \"getAction\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":84,"column":5},{"message":"Visibility must be declared on method \"setOptions\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":91,"column":5},{"message":"Visibility must be declared on method \"setOption\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":99,"column":5},{"message":"Visibility must be declared on method \"getStatus\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":111,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":124,"column":5},{"message":"Visibility must be declared on method \"prepareAction\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":230,"column":140},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":245,"column":122},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":266,"column":132},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":303,"column":124},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":316,"column":15},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":322,"column":124},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":339,"column":133},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":389,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":407,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":412,"column":15},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsDelayReload","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":413,"column":16},{"message":"Should use function $this->msg() rather than function wfMessage()","source":"MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage","severity":5,"fixable":false,"type":"WARNING","line":442,"column":40},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":495,"column":139},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":545,"column":142},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":582,"column":142},{"message":"Visibility must be declared on method \"makeRandomNumber\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":865,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":889,"column":16},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":894,"column":153},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":898,"column":159},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":912,"column":147},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":952,"column":141},{"message":"Line exceeds 120 characters; contains 154 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":959,"column":154},{"message":"Line exceeds 120 characters; contains 154 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":961,"column":154},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1044,"column":162},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":1066,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":1072,"column":13},{"message":"Line exceeds 120 characters; contains 213 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1082,"column":13},{"message":"Visibility must be declared on method \"getAllowedParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1300,"column":5},{"message":"Visibility must be declared on method \"getParamDescription\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1316,"column":5},{"message":"Visibility must be declared on method \"getDescription\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1330,"column":5},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1335,"column":1},{"message":"Line exceeds 120 characters; contains 174 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1338,"column":1},{"message":"Line exceeds 120 characters; contains 189 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1349,"column":189},{"message":"Line exceeds 120 characters; contains 180 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1350,"column":13},{"message":"Visibility must be declared on method \"getVersion\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1361,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsIP","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":1362,"column":16}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormUtilsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/forminputs\/PFTokensInputTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/PFValuesUtils.php":{"errors":7,"warnings":14,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":86,"column":22},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":106,"column":22},{"message":"Line exceeds 120 characters; contains 179 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":243,"column":179},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":329,"column":123},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":334,"column":153},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":349,"column":42},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":371,"column":129},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":372,"column":123},{"message":"Visibility must be declared on method \"fixedMultiSort\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":410,"column":12},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":454,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":532,"column":19},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":641,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":721,"column":19},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":775,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":782,"column":19},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":782,"column":163},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":843,"column":167},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":870,"column":19},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":950,"column":133},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":975,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":984,"column":19}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFValuesUtilsTest.php":{"errors":2,"warnings":12,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":20},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":35,"column":20},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":365,"column":131},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1648,"column":126},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2248,"column":8},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2249,"column":8},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2253,"column":8},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2257,"column":8},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2703,"column":124},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2725,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2745,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2765,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2796,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2827,"column":123}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormPrinterTest.php":{"errors":0,"warnings":145,"messages":[{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":151,"column":47},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":192,"column":13},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":321,"column":133},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":360,"column":139},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":373,"column":135},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":387,"column":135},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":400,"column":135},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":407,"column":131},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":411,"column":8},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":471,"column":135},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":472,"column":132},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":475,"column":167},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":516,"column":137},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":517,"column":137},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":518,"column":139},{"message":"Line exceeds 120 characters; contains 156 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":548,"column":156},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":549,"column":153},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":550,"column":155},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":551,"column":167},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":584,"column":146},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":585,"column":158},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":618,"column":157},{"message":"Line exceeds 120 characters; contains 172 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":619,"column":172},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":652,"column":157},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":653,"column":147},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":654,"column":163},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":995,"column":41},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1038,"column":127},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1039,"column":129},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1059,"column":135},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1073,"column":146},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1094,"column":140},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1123,"column":132},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1154,"column":153},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1191,"column":126},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1208,"column":125},{"message":"Line exceeds 120 characters; contains 187 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1221,"column":187},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1239,"column":134},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1335,"column":122},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1418,"column":128},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1452,"column":133},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1486,"column":123},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1522,"column":127},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1571,"column":126},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1584,"column":153},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1611,"column":125},{"message":"Line exceeds 120 characters; contains 215 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1624,"column":215},{"message":"Line exceeds 120 characters; contains 280 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1661,"column":280},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1680,"column":135},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1851,"column":141},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1857,"column":140},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1863,"column":142},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1869,"column":158},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1872,"column":122},{"message":"Line exceeds 120 characters; contains 160 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1875,"column":160},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1881,"column":137},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1888,"column":150},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1904,"column":136},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1910,"column":140},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2000,"column":133},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2001,"column":133},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2002,"column":128},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2010,"column":121},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2011,"column":128},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2012,"column":137},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2013,"column":137},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2017,"column":134},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2018,"column":152},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2019,"column":131},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2020,"column":129},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2021,"column":146},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2025,"column":127},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2026,"column":134},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2030,"column":127},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2031,"column":134},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2035,"column":121},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2036,"column":142},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2037,"column":127},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2199,"column":132},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2202,"column":142},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2203,"column":162},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2204,"column":162},{"message":"Line exceeds 120 characters; contains 156 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2205,"column":156},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2208,"column":143},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2209,"column":150},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2212,"column":140},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2213,"column":153},{"message":"Line exceeds 120 characters; contains 151 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2214,"column":151},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2215,"column":157},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2216,"column":146},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2333,"column":176},{"message":"Line exceeds 120 characters; contains 161 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2334,"column":161},{"message":"Line exceeds 120 characters; contains 183 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2335,"column":183},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2364,"column":147},{"message":"Line exceeds 120 characters; contains 160 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2365,"column":160},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2366,"column":157},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2367,"column":163},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2368,"column":152},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2369,"column":159},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2373,"column":162},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2374,"column":175},{"message":"Line exceeds 120 characters; contains 148 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2375,"column":148},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2376,"column":159},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2377,"column":143},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2378,"column":155},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2410,"column":175},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2418,"column":159},{"message":"Line exceeds 120 characters; contains 160 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2419,"column":160},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2422,"column":139},{"message":"Line exceeds 120 characters; contains 196 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2425,"column":196},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2426,"column":175},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2452,"column":152},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2453,"column":140},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2454,"column":163},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2455,"column":143},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2459,"column":167},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2460,"column":155},{"message":"Line exceeds 120 characters; contains 172 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2461,"column":172},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2567,"column":163},{"message":"Line exceeds 120 characters; contains 154 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2573,"column":154},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2579,"column":163},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2585,"column":162},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2591,"column":162},{"message":"Line exceeds 120 characters; contains 168 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2597,"column":168},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2603,"column":163},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2609,"column":162},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2613,"column":8},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2621,"column":38},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2653,"column":127},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2687,"column":38},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2738,"column":131},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2760,"column":131},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2826,"column":135},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2838,"column":143},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2881,"column":123},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2899,"column":122},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2956,"column":136},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2977,"column":132},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3005,"column":137},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3052,"column":150},{"message":"Line exceeds 120 characters; contains 237 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3138,"column":237},{"message":"Line exceeds 120 characters; contains 238 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3150,"column":238},{"message":"Line exceeds 120 characters; contains 267 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3162,"column":267},{"message":"Line exceeds 120 characters; contains 261 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3174,"column":261},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3305,"column":140}]},"\/src\/repo\/includes\/PFFormPrinter.php":{"errors":49,"warnings":56,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":36,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":37,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":38,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":39,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":20},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":102,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":105,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":109,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":113,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":200,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":208,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":224,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":240,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":256,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":272,"column":12},{"message":"Visibility must be declared on method \"showDeletionLog\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":281,"column":5},{"message":"Visibility must be declared on method \"strReplaceFirst\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":303,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":314,"column":12},{"message":"Visibility must be declared on method \"placeholderFormat\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":314,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":320,"column":12},{"message":"Visibility must be declared on method \"makePlaceholderInFormHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":320,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":324,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateStartHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":324,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateInstanceTableHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":350,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateInstanceHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":395,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateEndHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":438,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":471,"column":5},{"message":"Visibility must be declared on method \"tableHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":471,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":549,"column":5},{"message":"Visibility must be declared on method \"getSpreadsheetAutocompleteAttributes\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":549,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":571,"column":5},{"message":"Visibility must be declared on method \"spreadsheetHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":571,"column":5},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":589,"column":125},{"message":"Visibility must be declared on method \"getStringForCurrentTime\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":667,"column":5},{"message":"Visibility must be declared on method \"getStringFromPassedInArray\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":723,"column":12},{"message":"Line exceeds 120 characters; contains 184 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":807,"column":184},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":825,"column":12},{"message":"Visibility must be declared on method \"displayLoadingImage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":825,"column":12},{"message":"Visibility must be declared on method \"formHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":860,"column":5},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":904,"column":20},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":909,"column":20},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":1017,"column":31},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":1049,"column":35},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1073,"column":141},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1114,"column":131},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1144,"column":165},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1179,"column":129},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1183,"column":122},{"message":"Line exceeds 120 characters; contains 221 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1184,"column":221},{"message":"Line exceeds 120 characters; contains 166 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1190,"column":166},{"message":"Line exceeds 120 characters; contains 189 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1192,"column":189},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1240,"column":124},{"message":"Line exceeds 120 characters; contains 210 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1281,"column":210},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1286,"column":131},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1301,"column":127},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1350,"column":140},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1355,"column":165},{"message":"Line exceeds 120 characters; contains 189 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1358,"column":189},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1385,"column":129},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1414,"column":125},{"message":"Line exceeds 120 characters; contains 164 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1415,"column":164},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1456,"column":125},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1459,"column":136},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1460,"column":131},{"message":"Line exceeds 120 characters; contains 148 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1470,"column":148},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1494,"column":127},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1527,"column":140},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1530,"column":146},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1536,"column":121},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1549,"column":123},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1590,"column":25},{"message":"Line exceeds 120 characters; contains 170 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1601,"column":170},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1602,"column":127},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1603,"column":130},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1606,"column":37},{"message":"Line exceeds 120 characters; contains 207 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1607,"column":207},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1627,"column":136},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1628,"column":162},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1641,"column":25},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1643,"column":139},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1659,"column":195},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1664,"column":132},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1705,"column":157},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1712,"column":134},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1713,"column":132},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1841,"column":122},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1867,"column":131},{"message":"Line exceeds 120 characters; contains 138 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1999,"column":138},{"message":"Line exceeds 120 characters; contains 161 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2009,"column":161},{"message":"Visibility must be declared on method \"formFieldHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":2025,"column":5},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2080,"column":153},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2104,"column":141},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":2121,"column":13},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2122,"column":141},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":2152,"column":20}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFUtilsTest.php":{"errors":0,"warnings":0,"messages":[]}}}

--- end ---
PHPCS run failed
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":923,"warnings":456,"fixable":0},"files":{"\/src\/repo\/includes\/parserfunctions\/PFQueryFormLink.php":{"errors":1,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/includes\/parserfunctions\/PFFormRedLink.php":{"errors":1,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/includes\/parserfunctions\/PFArrayMapTemplate.php":{"errors":2,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19}]},"\/src\/repo\/specials\/PFForms.php":{"errors":15,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"isExpensive\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Visibility must be declared on method \"isSyndicated\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageFooter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":34,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Visibility must be declared on method \"getQueryInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Visibility must be declared on method \"sortDescending\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Visibility must be declared on method \"formatResult\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":60,"column":15}]},"\/src\/repo\/includes\/parserfunctions\/PFTemplateParams.php":{"errors":3,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments; if it is a file-level comment, file a task in #MediaWiki-Codesniffer","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":11,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":19}]},"\/src\/repo\/specials\/PFTemplates.php":{"errors":17,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"isExpensive\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Visibility must be declared on method \"isSyndicated\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":26,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"getPageFooter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":35,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":5},{"message":"Visibility must be declared on method \"getQueryInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":38,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":5},{"message":"Visibility must be declared on method \"sortDescending\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":46,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":50,"column":5},{"message":"Visibility must be declared on method \"getCategoryDefinedByTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":50,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":71,"column":5},{"message":"Visibility must be declared on method \"formatResult\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":71,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":85,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFEndDateTimeInput.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFEndDateInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageTemplate.php":{"errors":14,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":5},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":18,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Visibility must be declared on method \"addParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Visibility must be declared on method \"addUnhandledParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Visibility must be declared on method \"addUnhandledParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":61,"column":5},{"message":"Visibility must be declared on method \"getName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":61,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"getParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageFreeText.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":5},{"message":"Visibility must be declared on method \"setText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":15,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Visibility must be declared on method \"getText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5}]},"\/src\/repo\/specials\/PFCreateCategory.php":{"errors":6,"warnings":0,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Visibility must be declared on method \"createCategoryText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":169,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFTextAreaWithAutocompleteInput.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":17,"column":131}]},"\/src\/repo\/includes\/forminputs\/PFStartDateTimeInput.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFCheckboxesInput.php":{"errors":5,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":19},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":117,"column":155}]},"\/src\/repo\/includes\/forminputs\/PFRatingInput.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFTextWithAutocompleteInput.php":{"errors":15,"warnings":2,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":11,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":12},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":17,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":35,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":47,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":59,"column":19},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":60,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":63,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":83,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":89,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":111,"column":12}]},"\/src\/repo\/includes\/PFPageSection.php":{"errors":28,"warnings":0,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":8,"column":4},{"message":"There must be at least a blank line between a file-level comment and a class. Make sure you are not mixing file-level comments (like license headers) and class documentation","source":"MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":10,"column":2},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":12,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12},{"message":"Visibility must be declared on method \"newFromFormTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":69,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":73,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":77,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":81,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":85,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":89,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":93,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":97,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":101,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":105,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":109,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":113,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":117,"column":5},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":117,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":150,"column":19}]},"\/src\/repo\/includes\/PFCreatePageJob.php":{"errors":3,"warnings":0,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":5},{"message":"Visibility must be declared on method \"run\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":56,"column":19}]},"\/src\/repo\/includes\/widgets\/PFDateInputWidget.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":5,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":9,"column":12}]},"\/src\/repo\/includes\/PFForm.php":{"errors":24,"warnings":1,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":9,"column":4},{"message":"There must be at least a blank line between a file-level comment and a class. Make sure you are not mixing file-level comments (like license headers) and class documentation","source":"MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":11,"column":2},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Visibility must be declared on method \"getFormName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Visibility must be declared on method \"getItems\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Visibility must be declared on method \"setPageNameFormula\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":37,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":41,"column":5},{"message":"Visibility must be declared on method \"setCreateTitle\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":41,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Visibility must be declared on method \"setEditTitle\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":45,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Visibility must be declared on method \"setAssociatedCategory\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":49,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":85,"column":1}]},"\/src\/repo\/includes\/wikipage\/PFWikiPage.php":{"errors":26,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":5},{"message":"Visibility must be declared on method \"addTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":24,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":5},{"message":"Visibility must be declared on method \"addTemplateParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":36,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":5},{"message":"Visibility must be declared on method \"getEmbeddedTemplateForParam\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":48,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":5},{"message":"Visibility must be declared on method \"addSection\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":57,"column":5},{"message":"Visibility must be declared on method \"addFreeTextSection\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":61,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"setFreeText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"makeFreeTextOnlyInclude\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":75,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":79,"column":5},{"message":"Visibility must be declared on method \"freeTextOnlyInclude\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":79,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":103,"column":5},{"message":"Visibility must be declared on method \"createTemplateCall\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":103,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":156,"column":5},{"message":"Visibility must be declared on method \"createTemplateCallsForTemplateName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":156,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":168,"column":5},{"message":"Visibility must be declared on method \"createPageText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":168,"column":5}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageTemplateParam.php":{"errors":10,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":5},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":16,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":5},{"message":"Visibility must be declared on method \"getName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":21,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":5},{"message":"Visibility must be declared on method \"getValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":25,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Visibility must be declared on method \"setValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5}]},"\/src\/repo\/includes\/parserfunctions\/PFAutoEdit.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":221,"column":19}]},"\/src\/repo\/includes\/parserfunctions\/PFDefaultForm.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFEnumInput.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":62,"column":19}]},"\/src\/repo\/includes\/parserfunctions\/PFFormLink.php":{"errors":4,"warnings":1,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":7,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":51,"column":22},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":233,"column":152},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":239,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFLeafletInput.php":{"errors":3,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":30,"column":128},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":85,"column":150}]},"\/src\/repo\/includes\/forminputs\/PFRegExpInput.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":32,"column":122}]},"\/src\/repo\/includes\/parserfunctions\/PFAutoEditRating.php":{"errors":1,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":108,"column":167}]},"\/src\/repo\/includes\/forminputs\/PFDateTimePicker.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":30,"column":122}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFUtilsTestDummySMWStore.php":{"errors":16,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":5,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":9,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":13,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":32,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":47,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":59,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":63,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":67,"column":16},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":67,"column":129}]},"\/src\/repo\/tests\/mw-phpunit-runner.php":{"errors":2,"warnings":1,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":1},{"message":"passthru should not be used","source":"MediaWiki.Usage.ForbiddenFunctions.passthru","severity":5,"fixable":false,"type":"WARNING","line":40,"column":1}]},"\/src\/repo\/includes\/PFHelperFormAction.php":{"errors":2,"warnings":0,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":10,"column":4},{"message":"Visibility must be declared on method \"displayTab\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":62,"column":12}]},"\/src\/repo\/tests\/bootstrap.php":{"errors":2,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":11,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":1}]},"\/src\/repo\/includes\/forminputs\/PFListBoxInput.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19}]},"\/src\/repo\/specials\/PFFormStart.php":{"errors":7,"warnings":3,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":5},{"message":"Should use function $this->msg() rather than function wfMessage()","source":"MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage","severity":5,"fixable":false,"type":"WARNING","line":124,"column":54},{"message":"Visibility must be declared on method \"getFormEditURL\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":141,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":150,"column":5},{"message":"Visibility must be declared on method \"doRedirect\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":150,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsScriptPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":210,"column":16},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":212,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":217,"column":15}]},"\/src\/repo\/includes\/parserfunctions\/PFFormInputParserFunction.php":{"errors":2,"warnings":2,"messages":[{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":43,"column":6},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":19},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":232,"column":139},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":235,"column":124}]},"\/src\/repo\/includes\/forminputs\/PFComboBoxInput.php":{"errors":5,"warnings":3,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":39,"column":128},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":107,"column":128},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":168,"column":130},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":205,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":245,"column":12}]},"\/src\/repo\/tests\/phpunit\/unit\/PFFormFieldTemplateTest.php":{"errors":1,"warnings":0,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments; if it is a file-level comment, file a task in #MediaWiki-Codesniffer","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/includes\/forminputs\/PFMultiEnumInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":19}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFValuesUtilsTestHttpsStreamWrapper.php":{"errors":3,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":4,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12}]},"\/src\/repo\/specials\/PFFormEdit.php":{"errors":12,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":77,"column":5},{"message":"Visibility must be declared on method \"printAltFormsList\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":77,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":5},{"message":"Visibility must be declared on method \"printForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":95,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsTargetName","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":96,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":255,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":259,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFCheckboxInput.php":{"errors":4,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":98,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFDateInput.php":{"errors":8,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":60,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":64,"column":12},{"message":"Visibility must be declared on method \"parseDate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":64,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":165,"column":19},{"message":"Line exceeds 120 characters; contains 188 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":187,"column":188},{"message":"Line exceeds 120 characters; contains 194 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":193,"column":194},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":197,"column":12}]},"\/src\/repo\/specials\/PFRunQuery.php":{"errors":6,"warnings":4,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":18,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":22,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":5},{"message":"Visibility must be declared on method \"printPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":40,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":41,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsRunQueryFormAtTop","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":41,"column":41},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":131,"column":136},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsEmbedQueryCacheTTL","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":226,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":230,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFTimePickerInput.php":{"errors":0,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":25,"column":122},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":106,"column":165},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":110,"column":158}]},"\/src\/repo\/includes\/forminputs\/PFDateTimeInput.php":{"errors":6,"warnings":5,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":12},{"message":"Line exceeds 120 characters; contains 194 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":103,"column":194},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":105,"column":195},{"message":"Line exceeds 120 characters; contains 200 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":107,"column":200},{"message":"Line exceeds 120 characters; contains 149 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":111,"column":149},{"message":"Line exceeds 120 characters; contains 188 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":125,"column":188},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":137,"column":19}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/parserfunctions\/PFFormRedLinkTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":45,"column":123}]},"\/src\/repo\/includes\/forminputs\/PFTextAreaInput.php":{"errors":8,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":15,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":47,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":83,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":87,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":149,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFStartDateInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFTreeInput.php":{"errors":10,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":49,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":19},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":110,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":140,"column":19},{"message":"Visibility must be declared on method \"makeTitle\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":194,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFYearInput.php":{"errors":10,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":36,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":44,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":19}]},"\/src\/repo\/specials\/PFMultiPageEdit.php":{"errors":25,"warnings":4,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":26,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":27,"column":13},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":29,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":33,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsGridParams","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":71,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsScriptPath","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":71,"column":40},{"message":"Visibility must be declared on method \"setTemplateList\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":179,"column":5},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":189,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":194,"column":5},{"message":"Visibility must be declared on method \"isExpensive\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":194,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":198,"column":5},{"message":"Visibility must be declared on method \"isSyndicated\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":198,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":202,"column":5},{"message":"Visibility must be declared on method \"getPageHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":202,"column":5},{"message":"Visibility must be declared on method \"getPageFooter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":207,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":210,"column":5},{"message":"Visibility must be declared on method \"getQueryInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":210,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":221,"column":5},{"message":"Visibility must be declared on method \"sortDescending\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":221,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":225,"column":5},{"message":"Visibility must be declared on method \"findTemplatesForForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":225,"column":5},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":229,"column":31},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":249,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":259,"column":5},{"message":"Visibility must be declared on method \"formatResult\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":259,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":273,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFDropdownInput.php":{"errors":5,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":19}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/widgets\/PFDateInputWidgetTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/languages\/PFMagic.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/specials\/PFCreateProperty.php":{"errors":8,"warnings":3,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":28,"column":12},{"message":"Visibility must be declared on method \"createPropertyText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":28,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Visibility must be declared on method \"printCreatePropertyForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":53,"column":5},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":91,"column":123},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":92,"column":124},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":128,"column":127},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":155,"column":15}]},"\/src\/repo\/includes\/forminputs\/PFTextInput.php":{"errors":11,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":20,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":29,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":42,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":46,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":57,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":61,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":70,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":135,"column":19},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":135,"column":142},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":136},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":194,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":300,"column":19}]},"\/src\/repo\/includes\/PFHooks.php":{"errors":4,"warnings":9,"messages":[{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":22,"column":6},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":25,"column":19},{"message":"Visibility must be declared on method \"registerFunctions\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":125,"column":12},{"message":"Visibility must be declared on method \"setGlobalJSVariables\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":12},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":236,"column":132},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":254,"column":195},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":302,"column":131},{"message":"Line exceeds 120 characters; contains 224 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":322,"column":224},{"message":"Line exceeds 120 characters; contains 173 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":329,"column":173},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":364,"column":124},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":370,"column":130},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":397,"column":129},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":436,"column":121}]},"\/src\/repo\/includes\/wikipage\/PFWikiPageSection.php":{"errors":13,"warnings":0,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":12,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":17,"column":5},{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":17,"column":5},{"message":"Visibility must be declared on method \"isHideIfEmpty\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":27,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Visibility must be declared on method \"getHeader\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":31,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":35,"column":5},{"message":"Visibility must be declared on method \"getHeaderLevel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":35,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":39,"column":5},{"message":"Visibility must be declared on method \"getText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":39,"column":5}]},"\/src\/repo\/includes\/forminputs\/PFTokensInput.php":{"errors":10,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":41,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":45,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":51,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":19},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":99,"column":127},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":177,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":226,"column":19}]},"\/src\/repo\/includes\/forminputs\/PFTree.php":{"errors":8,"warnings":1,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":13,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":14,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":15,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":22,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":24,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":62,"column":9},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":191,"column":20}]},"\/src\/repo\/includes\/forminputs\/PFOpenLayersInput.php":{"errors":6,"warnings":3,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":40,"column":19},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":67,"column":158},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":138,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":138,"column":128},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":157,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":164,"column":19}]},"\/src\/repo\/includes\/PFUtils.php":{"errors":6,"warnings":3,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":19},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":69,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":119,"column":19},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":233,"column":140},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":310,"column":22},{"message":"Visibility must be declared on method \"smartSplitFormTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":338,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":461,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":467,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":471,"column":19}]},"\/src\/repo\/includes\/parserfunctions\/PFTemplateDisplay.php":{"errors":8,"warnings":2,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments; if it is a file-level comment, file a task in #MediaWiki-Codesniffer","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":8,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":16,"column":19},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":32,"column":143},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":169,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":204,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":220,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":245,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":251,"column":20},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":257,"column":131},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":261,"column":20}]},"\/src\/repo\/includes\/PFFormEditAction.php":{"errors":9,"warnings":2,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":11,"column":4},{"message":"Visibility must be declared on method \"displayTab\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":50,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":145,"column":12},{"message":"Visibility must be declared on method \"displayFormChooser\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":12},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":211,"column":130},{"message":"Visibility must be declared on method \"getNumPagesPerForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":227,"column":12},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":251,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":258,"column":12},{"message":"Visibility must be declared on method \"printLinksToFormArray\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":258,"column":12},{"message":"Visibility must be declared on method \"displayForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":283,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":309,"column":12}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormPrinterTest.php":{"errors":0,"warnings":145,"messages":[{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":151,"column":47},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":192,"column":13},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":321,"column":133},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":360,"column":139},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":373,"column":135},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":387,"column":135},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":400,"column":135},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":407,"column":131},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":411,"column":8},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":471,"column":135},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":472,"column":132},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":475,"column":167},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":516,"column":137},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":517,"column":137},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":518,"column":139},{"message":"Line exceeds 120 characters; contains 156 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":548,"column":156},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":549,"column":153},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":550,"column":155},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":551,"column":167},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":584,"column":146},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":585,"column":158},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":618,"column":157},{"message":"Line exceeds 120 characters; contains 172 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":619,"column":172},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":652,"column":157},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":653,"column":147},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":654,"column":163},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":995,"column":41},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1038,"column":127},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1039,"column":129},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1059,"column":135},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1073,"column":146},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1094,"column":140},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1123,"column":132},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1154,"column":153},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1191,"column":126},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1208,"column":125},{"message":"Line exceeds 120 characters; contains 187 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1221,"column":187},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1239,"column":134},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1335,"column":122},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1418,"column":128},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1452,"column":133},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1486,"column":123},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1522,"column":127},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1571,"column":126},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1584,"column":153},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1611,"column":125},{"message":"Line exceeds 120 characters; contains 215 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1624,"column":215},{"message":"Line exceeds 120 characters; contains 280 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1661,"column":280},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1680,"column":135},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1851,"column":141},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1857,"column":140},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1863,"column":142},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1869,"column":158},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1872,"column":122},{"message":"Line exceeds 120 characters; contains 160 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1875,"column":160},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1881,"column":137},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1888,"column":150},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1904,"column":136},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1910,"column":140},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2000,"column":133},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2001,"column":133},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2002,"column":128},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2010,"column":121},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2011,"column":128},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2012,"column":137},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2013,"column":137},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2017,"column":134},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2018,"column":152},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2019,"column":131},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2020,"column":129},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2021,"column":146},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2025,"column":127},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2026,"column":134},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2030,"column":127},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2031,"column":134},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2035,"column":121},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2036,"column":142},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2037,"column":127},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2199,"column":132},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2202,"column":142},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2203,"column":162},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2204,"column":162},{"message":"Line exceeds 120 characters; contains 156 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2205,"column":156},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2208,"column":143},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2209,"column":150},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2212,"column":140},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2213,"column":153},{"message":"Line exceeds 120 characters; contains 151 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2214,"column":151},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2215,"column":157},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2216,"column":146},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2333,"column":176},{"message":"Line exceeds 120 characters; contains 161 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2334,"column":161},{"message":"Line exceeds 120 characters; contains 183 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2335,"column":183},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2364,"column":147},{"message":"Line exceeds 120 characters; contains 160 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2365,"column":160},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2366,"column":157},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2367,"column":163},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2368,"column":152},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2369,"column":159},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2373,"column":162},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2374,"column":175},{"message":"Line exceeds 120 characters; contains 148 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2375,"column":148},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2376,"column":159},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2377,"column":143},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2378,"column":155},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2410,"column":175},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2418,"column":159},{"message":"Line exceeds 120 characters; contains 160 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2419,"column":160},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2422,"column":139},{"message":"Line exceeds 120 characters; contains 196 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2425,"column":196},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2426,"column":175},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2452,"column":152},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2453,"column":140},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2454,"column":163},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2455,"column":143},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2459,"column":167},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2460,"column":155},{"message":"Line exceeds 120 characters; contains 172 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2461,"column":172},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2567,"column":163},{"message":"Line exceeds 120 characters; contains 154 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2573,"column":154},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2579,"column":163},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2585,"column":162},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2591,"column":162},{"message":"Line exceeds 120 characters; contains 168 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2597,"column":168},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2603,"column":163},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2609,"column":162},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2613,"column":8},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2621,"column":38},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2653,"column":127},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2687,"column":38},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2738,"column":131},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2760,"column":131},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2826,"column":135},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2838,"column":143},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2881,"column":123},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2899,"column":122},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2956,"column":136},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2977,"column":132},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3005,"column":137},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3052,"column":150},{"message":"Line exceeds 120 characters; contains 237 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3138,"column":237},{"message":"Line exceeds 120 characters; contains 238 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3150,"column":238},{"message":"Line exceeds 120 characters; contains 267 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3162,"column":267},{"message":"Line exceeds 120 characters; contains 261 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3174,"column":261},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":3305,"column":140}]},"\/src\/repo\/includes\/forminputs\/PFGoogleMapsInput.php":{"errors":3,"warnings":2,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":27,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":27,"column":128},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":42,"column":131}]},"\/src\/repo\/includes\/PFAutocompleteAPI.php":{"errors":9,"warnings":9,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":19,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsUseDisplayTitle","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":46,"column":16},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":76,"column":155},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":163,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":194,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":210,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":214,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":223,"column":13},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsCacheAutocompleteValues","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":229,"column":16},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsAutocompleteCacheTimeout","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":229,"column":53},{"message":"Should use function $this->getConfig()->get() rather than global $smwgDefaultStore","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":230,"column":16},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":342,"column":131},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":350,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":357,"column":20},{"message":"Line exceeds 120 characters; contains 175 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":357,"column":175},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":375,"column":129},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":382,"column":20},{"message":"Visibility must be declared on method \"sortValuesByLength\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":517,"column":12}]},"\/src\/repo\/includes\/PFTemplateField.php":{"errors":89,"warnings":2,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":11,"column":4},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":22,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":24,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":28,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":31,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":32,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":33,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":35,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":36,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":37,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":38,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":39,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":48,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":48,"column":12},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":48,"column":123},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":68,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":112,"column":12},{"message":"Visibility must be declared on method \"newFromParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":112,"column":12},{"message":"Visibility must be declared on method \"setTypeAndPossibleValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Visibility must be declared on method \"setSemanticProperty\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":197,"column":5},{"message":"Visibility must be declared on method \"setCargoFieldData\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":211,"column":5},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":232,"column":126},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":245,"column":5},{"message":"Visibility must be declared on method \"getFieldName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":245,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":249,"column":5},{"message":"Visibility must be declared on method \"getValueLabels\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":249,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":253,"column":5},{"message":"Visibility must be declared on method \"getLabel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":253,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":257,"column":5},{"message":"Visibility must be declared on method \"getSemanticProperty\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":257,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":261,"column":5},{"message":"Visibility must be declared on method \"getPropertyType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":261,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":265,"column":5},{"message":"Visibility must be declared on method \"getExpectedCargoField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":265,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":273,"column":5},{"message":"Visibility must be declared on method \"getFullCargoField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":273,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5},{"message":"Visibility must be declared on method \"getFieldType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Visibility must be declared on method \"getRealFieldType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Visibility must be declared on method \"getPossibleValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Visibility must be declared on method \"getHierarchyStructure\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":299,"column":5},{"message":"Visibility must be declared on method \"isList\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":299,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":303,"column":5},{"message":"Visibility must be declared on method \"getDelimiter\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":303,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":307,"column":5},{"message":"Visibility must be declared on method \"getDisplay\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":307,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":311,"column":5},{"message":"Visibility must be declared on method \"getNSText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":311,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":315,"column":5},{"message":"Visibility must be declared on method \"getNamespace\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":315,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":319,"column":5},{"message":"Visibility must be declared on method \"getCategory\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":319,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":323,"column":5},{"message":"Visibility must be declared on method \"getForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":323,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":347,"column":5},{"message":"Visibility must be declared on method \"isMandatory\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":347,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":351,"column":5},{"message":"Visibility must be declared on method \"isUnique\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":351,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":355,"column":5},{"message":"Visibility must be declared on method \"getRegex\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":355,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":359,"column":5},{"message":"Visibility must be declared on method \"getHoldsTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":359,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":363,"column":5},{"message":"Visibility must be declared on method \"setLabel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":363,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":367,"column":5},{"message":"Visibility must be declared on method \"setNamespace\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":367,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":372,"column":5},{"message":"Visibility must be declared on method \"setNSText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":372,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":379,"column":5},{"message":"Visibility must be declared on method \"setFieldType\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":379,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":388,"column":5},{"message":"Visibility must be declared on method \"setPossibleValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":388,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":392,"column":5},{"message":"Visibility must be declared on method \"setHierarchyStructure\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":392,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":396,"column":5},{"message":"Visibility must be declared on method \"createText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":396,"column":5}]},"\/src\/repo\/includes\/PFFormUtils.php":{"errors":29,"warnings":4,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":17,"column":4},{"message":"Visibility must be declared on method \"unhandledFieldsHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":30,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":60,"column":12},{"message":"Visibility must be declared on method \"summaryInputHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":60,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":12},{"message":"Visibility must be declared on method \"minorEditInputHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":95,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":139,"column":12},{"message":"Visibility must be declared on method \"watchInputHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":139,"column":12},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":143},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":140,"column":38},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":221,"column":12},{"message":"Visibility must be declared on method \"saveButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":221,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":241,"column":12},{"message":"Visibility must be declared on method \"saveAndContinueButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":241,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":267,"column":12},{"message":"Visibility must be declared on method \"showPreviewButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":267,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":286,"column":12},{"message":"Visibility must be declared on method \"showChangesButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":286,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":305,"column":12},{"message":"Visibility must be declared on method \"cancelLinkHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":305,"column":12},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":306,"column":16},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":327,"column":12},{"message":"Visibility must be declared on method \"runQueryButtonHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":327,"column":12},{"message":"Visibility must be declared on method \"formBottom\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":353,"column":12},{"message":"Visibility must be declared on method \"getPreloadedText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":395,"column":12},{"message":"Visibility must be declared on method \"queryFormBottom\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":422,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":426,"column":12},{"message":"Visibility must be declared on method \"getMonthNames\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":426,"column":12},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":683,"column":131},{"message":"Visibility must be declared on method \"headerHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":712,"column":12},{"message":"Visibility must be declared on method \"getChangedIndex\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":737,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":755,"column":12},{"message":"Visibility must be declared on method \"setShowOnSelect\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":755,"column":12}]},"\/src\/repo\/includes\/forminputs\/PFRadioButtonInput.php":{"errors":1,"warnings":0,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":18,"column":19}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormLinkerTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":62,"column":104}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormTest.php":{"errors":1,"warnings":5,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Line exceeds 120 characters; contains 144 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":99,"column":144},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":113,"column":1},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":152,"column":1},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":157,"column":125},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":215,"column":152}]},"\/src\/repo\/includes\/forminputs\/PFFormInput.php":{"errors":14,"warnings":7,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":25,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":26,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":27,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":28,"column":15},{"message":"@deprecated, is not a valid property annotation","source":"MediaWiki.Commenting.PropertyAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":30,"column":8},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":31,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":33,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":34,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":36,"column":15},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":37,"column":15},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":51,"column":122},{"message":"Line exceeds 120 characters; contains 168 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":211,"column":8},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":213,"column":8},{"message":"Line exceeds 120 characters; contains 182 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":242,"column":8},{"message":"Line exceeds 120 characters; contains 209 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":244,"column":8},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":302,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":306,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":310,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":314,"column":19},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":337,"column":153},{"message":"Line exceeds 120 characters; contains 171 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":338,"column":171}]},"\/src\/repo\/includes\/PFTemplate.php":{"errors":39,"warnings":7,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":20,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":21,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":22,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":23,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":24,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":25,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":26,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":27,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":37,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":66,"column":12},{"message":"Visibility must be declared on method \"loadTemplateFields\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":74,"column":5},{"message":"Visibility must be declared on method \"loadTemplateFieldsSMWAndOther\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":103,"column":5},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":122,"column":128},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":126,"column":130},{"message":"Line exceeds 120 characters; contains 257 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":257},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":144,"column":126},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":197,"column":140},{"message":"Visibility must be declared on method \"loadPropertySettingInTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":232,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":241,"column":5},{"message":"Visibility must be declared on method \"loadTemplateFieldsCargo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":241,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Visibility must be declared on method \"getCargoTableAndSchema\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":382,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":386,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":395,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":399,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":403,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":407,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":411,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":416,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":420,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":450,"column":12},{"message":"Line exceeds 120 characters; contains 208 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":575,"column":1},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":576,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":742,"column":5},{"message":"Visibility must be declared on method \"createTextForField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":742,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":763,"column":5},{"message":"Visibility must be declared on method \"printCategoryTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":763,"column":5}]},"\/src\/repo\/includes\/forminputs\/PFDatePickerInput.php":{"errors":3,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":29,"column":122},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":71,"column":17},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":119,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":157,"column":13},{"message":"Visibility must be declared on method \"genericTextHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":255,"column":12},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":255,"column":139}]},"\/src\/repo\/specials\/PFCreateTemplate.php":{"errors":15,"warnings":12,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":26,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":72,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":89,"column":5},{"message":"Visibility must be declared on method \"printFieldTypeDropdown\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":89,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgCargoFieldTypes","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":93,"column":20},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":112,"column":12},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":208,"column":121},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":246,"column":150},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":247,"column":142},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":260,"column":12},{"message":"Visibility must be declared on method \"printTemplateStyleButton\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":260,"column":12},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":270,"column":141},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":273,"column":12},{"message":"Visibility must be declared on method \"printTemplateStyleInput\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":273,"column":12},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":278,"column":126},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":279,"column":127},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":280,"column":123},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":281,"column":129},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":286,"column":5},{"message":"Visibility must be declared on method \"printCreateTemplateForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":286,"column":5},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":444,"column":121},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":467,"column":122},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":468,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":517,"column":15}]},"\/src\/repo\/specials\/PFCreateClass.php":{"errors":3,"warnings":11,"messages":[{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":12},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":123,"column":128},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":139,"column":124},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":269,"column":128},{"message":"Should use function $this->getConfig()->get() rather than global $smwgDefaultStore","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":277,"column":16},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":292,"column":122},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":293,"column":122},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":294,"column":134},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":295,"column":124},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":298,"column":121},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":321,"column":122},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":322,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":347,"column":15}]},"\/src\/repo\/includes\/PFFormLinker.php":{"errors":7,"warnings":1,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":12,"column":4},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":20},{"message":"Visibility must be declared on method \"getDefaultForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":20,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":38,"column":19},{"message":"Line exceeds 120 characters; contains 144 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":47,"column":144},{"message":"Visibility must be declared on method \"setBrokenLink\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":88,"column":12},{"message":"Visibility must be declared on method \"getDefaultFormsForPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":136,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":196,"column":19}]},"\/src\/repo\/includes\/PFTemplateInForm.php":{"errors":105,"warnings":6,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":8,"column":4},{"message":"There must be at least a blank line between a file-level comment and a class. Make sure you are not mixing file-level comments (like license headers) and class documentation","source":"MediaWiki.Commenting.CommentBeforeClass.FileSpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":10,"column":2},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":12,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":15,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":16,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":17,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":18,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":19,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":20,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":21,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":22,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":23,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":24,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":25,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":26,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":27,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":36,"column":6},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":43,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":47,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":48,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":49,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":50,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":51,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":52,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":53,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":55,"column":12},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":55,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":73,"column":19},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":79,"column":124},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":118,"column":125},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":141,"column":5},{"message":"Visibility must be declared on method \"getTemplateName\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":141,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Visibility must be declared on method \"getHeight\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":149,"column":5},{"message":"Visibility must be declared on method \"getFields\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":149,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":153,"column":5},{"message":"Visibility must be declared on method \"getEmbedInTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":153,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":157,"column":5},{"message":"Visibility must be declared on method \"getEmbedInField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":157,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":161,"column":5},{"message":"Visibility must be declared on method \"getLabel\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":161,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":165,"column":5},{"message":"Visibility must be declared on method \"getIntro\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":165,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":169,"column":5},{"message":"Visibility must be declared on method \"getAddButtonText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":169,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":173,"column":5},{"message":"Visibility must be declared on method \"getDisplay\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":173,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":177,"column":5},{"message":"Visibility must be declared on method \"getEventTitleField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":177,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":181,"column":5},{"message":"Visibility must be declared on method \"getEventDateField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":181,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":185,"column":5},{"message":"Visibility must be declared on method \"getEventStartDateField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":185,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":189,"column":5},{"message":"Visibility must be declared on method \"getEventEndDateField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":189,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":193,"column":5},{"message":"Visibility must be declared on method \"getPlaceholder\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":193,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":197,"column":5},{"message":"Visibility must be declared on method \"getDisplayedFieldsWhenMinimized\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":197,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":201,"column":5},{"message":"Visibility must be declared on method \"allowsMultiple\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":201,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":205,"column":5},{"message":"Visibility must be declared on method \"strictParsing\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":205,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":209,"column":5},{"message":"Visibility must be declared on method \"getMinInstancesAllowed\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":209,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":213,"column":5},{"message":"Visibility must be declared on method \"getMaxInstancesAllowed\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":213,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":217,"column":5},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":217,"column":5},{"message":"Visibility must be declared on method \"getFullTextInPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":250,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":254,"column":5},{"message":"Visibility must be declared on method \"pageCallsThisTemplate\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":254,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":258,"column":5},{"message":"Visibility must be declared on method \"hasValueFromPageForField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":258,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":262,"column":5},{"message":"Visibility must be declared on method \"getAndRemoveValueFromPageForField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":262,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":268,"column":5},{"message":"Visibility must be declared on method \"getValuesFromPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":268,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":272,"column":5},{"message":"Visibility must be declared on method \"getInstanceNum\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":272,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":276,"column":5},{"message":"Visibility must be declared on method \"getGridValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":276,"column":5},{"message":"Visibility must be declared on method \"incrementInstanceNum\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":280,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Visibility must be declared on method \"allInstancesPrinted\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":284,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Visibility must be declared on method \"addGridValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":288,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Visibility must be declared on method \"addField\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":295,"column":5},{"message":"Visibility must be declared on method \"changeFieldValues\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":306,"column":5},{"message":"Visibility must be declared on method \"setFieldValuesFromSubmit\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":314,"column":5},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":338,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Visibility must be declared on method \"getValuesFromSubmit\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":361,"column":5},{"message":"Visibility must be declared on method \"removeUnparsedText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":376,"column":12},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":389,"column":34},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":392,"column":123},{"message":"Visibility must be declared on method \"restoreUnparsedText\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":414,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":421,"column":5},{"message":"Visibility must be declared on method \"setFieldValuesFromPage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":421,"column":5},{"message":"Visibility must be declared on method \"setPageRelatedInfo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":513,"column":5},{"message":"Line exceeds 120 characters; contains 149 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":528,"column":149},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":531,"column":5},{"message":"Visibility must be declared on method \"checkIfAllInstancesPrinted\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":531,"column":5}]},"\/src\/repo\/languages\/PFAliases.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/languages\/PFNamespaces.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/forminputs\/PFRadioButtonInputTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Line exceeds 120 characters; contains 148 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":372,"column":148}]},"\/src\/repo\/includes\/PFPageSchemas.php":{"errors":18,"warnings":9,"messages":[{"message":"@file is not a valid class annotation","source":"MediaWiki.Commenting.ClassAnnotations.UnrecognizedAnnotation","severity":5,"fixable":false,"type":"ERROR","line":13,"column":4},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":231,"column":12},{"message":"Visibility must be declared on method \"createFormInputXMLFromForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":231,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":255,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":259,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":263,"column":19},{"message":"Line exceeds 120 characters; contains 151 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":289,"column":151},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":310,"column":135},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":311,"column":140},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":330,"column":19},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":391,"column":123},{"message":"Line exceeds 120 characters; contains 158 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":394,"column":158},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":416,"column":176},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":428,"column":19},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":451,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":458,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":466,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":494,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":523,"column":19},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":758,"column":128},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":764,"column":128},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":797,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":811,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":828,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":855,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":859,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":888,"column":19}]},"\/src\/repo\/includes\/PFAutoeditAPI.php":{"errors":21,"warnings":25,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":57,"column":13},{"message":"Visibility must be declared on method \"addOptionsFromString\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":65,"column":5},{"message":"Visibility must be declared on method \"getOptions\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":72,"column":5},{"message":"Visibility must be declared on method \"getAction\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":84,"column":5},{"message":"Visibility must be declared on method \"setOptions\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":91,"column":5},{"message":"Visibility must be declared on method \"setOption\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":99,"column":5},{"message":"Visibility must be declared on method \"getStatus\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":111,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":124,"column":5},{"message":"Visibility must be declared on method \"prepareAction\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":145,"column":5},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":230,"column":140},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":245,"column":122},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":266,"column":132},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":303,"column":124},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":316,"column":15},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":322,"column":124},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":339,"column":133},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":389,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":407,"column":15},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":412,"column":15},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsDelayReload","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":413,"column":16},{"message":"Should use function $this->msg() rather than function wfMessage()","source":"MediaWiki.Usage.ExtendClassUsage.FunctionVarUsage","severity":5,"fixable":false,"type":"WARNING","line":442,"column":40},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":495,"column":139},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":545,"column":142},{"message":"Line exceeds 120 characters; contains 142 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":582,"column":142},{"message":"Visibility must be declared on method \"makeRandomNumber\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":865,"column":12},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":889,"column":16},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":894,"column":153},{"message":"Line exceeds 120 characters; contains 159 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":898,"column":159},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":912,"column":147},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":952,"column":141},{"message":"Line exceeds 120 characters; contains 154 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":959,"column":154},{"message":"Line exceeds 120 characters; contains 154 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":961,"column":154},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1044,"column":162},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":1066,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":1072,"column":13},{"message":"Line exceeds 120 characters; contains 213 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1082,"column":13},{"message":"Visibility must be declared on method \"getAllowedParams\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1300,"column":5},{"message":"Visibility must be declared on method \"getParamDescription\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1316,"column":5},{"message":"Visibility must be declared on method \"getDescription\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1330,"column":5},{"message":"Line exceeds 120 characters; contains 176 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1335,"column":1},{"message":"Line exceeds 120 characters; contains 174 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1338,"column":1},{"message":"Line exceeds 120 characters; contains 189 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1349,"column":189},{"message":"Line exceeds 120 characters; contains 180 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1350,"column":13},{"message":"Visibility must be declared on method \"getVersion\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1361,"column":5},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsIP","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":1362,"column":16}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFMappingUtilsTest.php":{"errors":0,"warnings":8,"messages":[{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":320,"column":8},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":321,"column":8},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":323,"column":8},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":371,"column":165},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":392,"column":128},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":447,"column":123},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":471,"column":129},{"message":"Line exceeds 120 characters; contains 155 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":509,"column":8}]},"\/src\/repo\/includes\/PFMappingUtils.php":{"errors":0,"warnings":3,"messages":[{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":104,"column":130},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":106,"column":163},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":113,"column":122}]},"\/src\/repo\/includes\/PFFormField.php":{"errors":52,"warnings":18,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":28,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":29,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":31,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":32,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":33,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":34,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":38,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":45,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":13},{"message":"Missing type or @var tag in class property comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingVar","severity":5,"fixable":false,"type":"ERROR","line":53,"column":6},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":55,"column":13},{"message":"Visibility must be declared on method \"create\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":62,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":91,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":95,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":99,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":103,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":107,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":111,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":115,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":119,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":123,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":127,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":131,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":135,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":139,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":143,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":147,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":151,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":159,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":163,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":167,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":171,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":175,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":179,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":183,"column":12},{"message":"Visibility must be declared on method \"newFromFormFieldTag\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":183,"column":12},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":353,"column":121},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":356,"column":122},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":369,"column":28},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":386,"column":128},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":503,"column":13},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":503,"column":127},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":563,"column":5},{"message":"Visibility must be declared on method \"cleanupTranslateTags\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":563,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":596,"column":5},{"message":"Visibility must be declared on method \"getCurrentValue\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":596,"column":5},{"message":"Line exceeds 120 characters; contains 168 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":596,"column":168},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":603,"column":126},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":604,"column":13},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":607,"column":132},{"message":"Line exceeds 120 characters; contains 128 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":618,"column":13},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":775,"column":12},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":782,"column":129},{"message":"Line exceeds 120 characters; contains 143 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":829,"column":143},{"message":"Line exceeds 120 characters; contains 145 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":832,"column":145},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":835,"column":141},{"message":"Visibility must be declared on method \"createMarkup\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":850,"column":5},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":873,"column":139},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":876,"column":135},{"message":"Visibility must be declared on method \"getArgumentsForInputCallSMW\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":964,"column":5},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":978,"column":134},{"message":"Visibility must be declared on method \"getArgumentsForInputCallCargo\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":985,"column":5},{"message":"Visibility must be declared on method \"getArgumentsForInputCall\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":1027,"column":5},{"message":"Line exceeds 120 characters; contains 152 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1039,"column":152}]},"\/src\/repo\/specials\/PFCreateForm.php":{"errors":17,"warnings":20,"messages":[{"message":"Visibility must be declared on method \"__construct\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":19,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Visibility must be declared on method \"execute\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":23,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":43,"column":5},{"message":"Visibility must be declared on method \"doSpecialCreateForm\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":43,"column":5},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":57,"column":132},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":70,"column":22},{"message":"Line exceeds 120 characters; contains 137 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":136,"column":137},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":161,"column":132},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":281,"column":141},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":478,"column":124},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":488,"column":5},{"message":"Visibility must be declared on method \"formCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":488,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":507,"column":5},{"message":"Visibility must be declared on method \"sectionCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":507,"column":5},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":535,"column":127},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":555,"column":5},{"message":"Visibility must be declared on method \"templateCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":555,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":605,"column":5},{"message":"Visibility must be declared on method \"fieldCreationHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":605,"column":5},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":608,"column":136},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":631,"column":133},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":637,"column":16},{"message":"Line exceeds 120 characters; contains 147 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":639,"column":147},{"message":"Line exceeds 120 characters; contains 151 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":640,"column":151},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":642,"column":146},{"message":"Line exceeds 120 characters; contains 150 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":643,"column":150},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":676,"column":132},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":711,"column":5},{"message":"Visibility must be declared on method \"inputTypeDropdownHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":711,"column":5},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":722,"column":165},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":727,"column":121},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":749,"column":131},{"message":"Should use function $this->getConfig()->get() rather than global $wgPageFormsFormPrinter","source":"MediaWiki.Usage.ExtendClassUsage.FunctionConfigUsage","severity":5,"fixable":false,"type":"WARNING","line":815,"column":16},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":826,"column":130},{"message":"Visibility must be declared on method \"showSectionParameters\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":871,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected","severity":5,"fixable":false,"type":"ERROR","line":913,"column":15}]},"\/src\/repo\/includes\/parserfunctions\/PFArrayMap.php":{"errors":2,"warnings":1,"messages":[{"message":"If this is a class comment, it must have no blank lines after; if it is a stray comment, it must not use \"\/**\" style comments","source":"MediaWiki.Commenting.CommentBeforeClass.SpacingAfter","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":21,"column":19},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":52,"column":124}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFHelperFormActionTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":178,"column":121},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":189,"column":123}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormFieldTest.php":{"errors":2,"warnings":2,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":13,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":14,"column":13},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":17,"column":8},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":483,"column":134}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFFormUtilsTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/forminputs\/PFTokensInputTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/PFValuesUtils.php":{"errors":7,"warnings":14,"messages":[{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":86,"column":22},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":106,"column":22},{"message":"Line exceeds 120 characters; contains 179 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":243,"column":179},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":329,"column":123},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":334,"column":153},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":349,"column":42},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":371,"column":129},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":372,"column":123},{"message":"Visibility must be declared on method \"fixedMultiSort\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":410,"column":12},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":454,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":532,"column":19},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":641,"column":22},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":721,"column":19},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":775,"column":122},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":782,"column":19},{"message":"Line exceeds 120 characters; contains 163 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":782,"column":163},{"message":"Line exceeds 120 characters; contains 167 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":843,"column":167},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":870,"column":19},{"message":"Line exceeds 120 characters; contains 133 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":950,"column":133},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":975,"column":19},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":984,"column":19}]},"\/src\/repo\/includes\/PFFormPrinter.php":{"errors":49,"warnings":56,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":30,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":31,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":32,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":33,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":34,"column":12},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":36,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":37,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":38,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":39,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":40,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":41,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":42,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":43,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":44,"column":13},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":46,"column":20},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":102,"column":121},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":105,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":109,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":113,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":200,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":208,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":224,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":240,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":256,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":272,"column":12},{"message":"Visibility must be declared on method \"showDeletionLog\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":281,"column":5},{"message":"Visibility must be declared on method \"strReplaceFirst\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":303,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":314,"column":12},{"message":"Visibility must be declared on method \"placeholderFormat\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":314,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":320,"column":12},{"message":"Visibility must be declared on method \"makePlaceholderInFormHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":320,"column":12},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":324,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateStartHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":324,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateInstanceTableHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":350,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateInstanceHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":395,"column":5},{"message":"Visibility must be declared on method \"multipleTemplateEndHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":438,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":471,"column":5},{"message":"Visibility must be declared on method \"tableHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":471,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":549,"column":5},{"message":"Visibility must be declared on method \"getSpreadsheetAutocompleteAttributes\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":549,"column":5},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":571,"column":5},{"message":"Visibility must be declared on method \"spreadsheetHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":571,"column":5},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":589,"column":125},{"message":"Visibility must be declared on method \"getStringForCurrentTime\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":667,"column":5},{"message":"Visibility must be declared on method \"getStringFromPassedInArray\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":723,"column":12},{"message":"Line exceeds 120 characters; contains 184 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":807,"column":184},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic","severity":5,"fixable":false,"type":"ERROR","line":825,"column":12},{"message":"Visibility must be declared on method \"displayLoadingImage\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":825,"column":12},{"message":"Visibility must be declared on method \"formHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":860,"column":5},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":904,"column":20},{"message":"Deprecated global $wgTitle used","source":"MediaWiki.Usage.DeprecatedGlobalVariables.Deprecated$wgTitle","severity":5,"fixable":false,"type":"WARNING","line":909,"column":20},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":1017,"column":31},{"message":"Variable assignment found within a condition. Did you mean to do a comparison ?","source":"Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition","severity":5,"fixable":false,"type":"WARNING","line":1049,"column":35},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1073,"column":141},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1114,"column":131},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1144,"column":165},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1179,"column":129},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1183,"column":122},{"message":"Line exceeds 120 characters; contains 221 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1184,"column":221},{"message":"Line exceeds 120 characters; contains 166 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1190,"column":166},{"message":"Line exceeds 120 characters; contains 189 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1192,"column":189},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1240,"column":124},{"message":"Line exceeds 120 characters; contains 210 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1281,"column":210},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1286,"column":131},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1301,"column":127},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1350,"column":140},{"message":"Line exceeds 120 characters; contains 165 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1355,"column":165},{"message":"Line exceeds 120 characters; contains 189 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1358,"column":189},{"message":"Line exceeds 120 characters; contains 129 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1385,"column":129},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1414,"column":125},{"message":"Line exceeds 120 characters; contains 164 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1415,"column":164},{"message":"Line exceeds 120 characters; contains 125 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1456,"column":125},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1459,"column":136},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1460,"column":131},{"message":"Line exceeds 120 characters; contains 148 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1470,"column":148},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1494,"column":127},{"message":"Line exceeds 120 characters; contains 140 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1527,"column":140},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1530,"column":146},{"message":"Line exceeds 120 characters; contains 121 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1536,"column":121},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1549,"column":123},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1590,"column":25},{"message":"Line exceeds 120 characters; contains 170 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1601,"column":170},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1602,"column":127},{"message":"Line exceeds 120 characters; contains 130 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1603,"column":130},{"message":"Line exceeds 120 characters; contains 146 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1606,"column":37},{"message":"Line exceeds 120 characters; contains 207 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1607,"column":207},{"message":"Line exceeds 120 characters; contains 136 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1627,"column":136},{"message":"Line exceeds 120 characters; contains 162 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1628,"column":162},{"message":"Line exceeds 120 characters; contains 135 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1641,"column":25},{"message":"Line exceeds 120 characters; contains 139 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1643,"column":139},{"message":"Line exceeds 120 characters; contains 195 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1659,"column":195},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1664,"column":132},{"message":"Line exceeds 120 characters; contains 157 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1705,"column":157},{"message":"Line exceeds 120 characters; contains 134 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1712,"column":134},{"message":"Line exceeds 120 characters; contains 132 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1713,"column":132},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1841,"column":122},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1867,"column":131},{"message":"Line exceeds 120 characters; contains 138 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1999,"column":138},{"message":"Line exceeds 120 characters; contains 161 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2009,"column":161},{"message":"Visibility must be declared on method \"formFieldHTML\"","source":"Squiz.Scope.MethodScope.Missing","severity":5,"fixable":false,"type":"ERROR","line":2025,"column":5},{"message":"Line exceeds 120 characters; contains 153 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2080,"column":153},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2104,"column":141},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":2121,"column":13},{"message":"Line exceeds 120 characters; contains 141 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2122,"column":141},{"message":"Missing function doc comment","source":"MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":2152,"column":20}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFValuesUtilsTest.php":{"errors":2,"warnings":12,"messages":[{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":30,"column":20},{"message":"Missing class property doc comment","source":"MediaWiki.Commenting.PropertyDocumentation.MissingDocumentationPrivate","severity":5,"fixable":false,"type":"ERROR","line":35,"column":20},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":365,"column":131},{"message":"Line exceeds 120 characters; contains 126 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":1648,"column":126},{"message":"Line exceeds 120 characters; contains 127 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2248,"column":8},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2249,"column":8},{"message":"Line exceeds 120 characters; contains 131 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2253,"column":8},{"message":"Line exceeds 120 characters; contains 122 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2257,"column":8},{"message":"Line exceeds 120 characters; contains 124 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2703,"column":124},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2725,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2745,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2765,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2796,"column":123},{"message":"Line exceeds 120 characters; contains 123 characters","source":"Generic.Files.LineLength.TooLong","severity":5,"fixable":false,"type":"WARNING","line":2827,"column":123}]},"\/src\/repo\/tests\/phpunit\/integration\/includes\/PFUtilsTest.php":{"errors":0,"warnings":0,"messages":[]}}}

--- end ---
$ git checkout /src/repo/.phpcs.xml
--- stderr ---
Updated 1 path from the index
--- stdout ---

--- end ---
$ /usr/bin/composer install
--- stderr ---
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating autoload files
17 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
--- stdout ---

--- end ---
$ /usr/bin/composer test
--- stderr ---
> parallel-lint . --exclude vendor --exclude node_modules
> minus-x check .
> phpcs -p -s .
--- stdout ---
PHP 8.4.18 | 10 parallel jobs
............................................................  60/100 ( 60%)
........................................                     100/100 (100%)


Checked 100 files in 0.3 seconds
No syntax error found
MinusX
======
Processing /src/repo...
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.................
All good!
.................................................. 50 / 50 (100%)


Time: 3.07 secs; Memory: 8MB


--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {},
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 0,
      "high": 0,
      "critical": 0,
      "total": 0
    },
    "dependencies": {
      "prod": 1,
      "dev": 323,
      "optional": 0,
      "peer": 1,
      "peerOptional": 0,
      "total": 323
    }
  }
}

--- end ---
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating dependencies

composer:
* mediawiki/mediawiki-codesniffer: 50.0.0 → 51.0.0

npm:
* eslint-config-wikimedia: 0.32.3 → 0.32.4


$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmp10kvrwbr
--- stdout ---
[master a2eeaed] build: Updating dependencies
 3 files changed, 450 insertions(+), 414 deletions(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From a2eeaed4186dd78269fb16f0fca4ea5e84565206 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Wed, 6 May 2026 08:00:37 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: 50.0.0 → 51.0.0

npm:
* eslint-config-wikimedia: 0.32.3 → 0.32.4

Change-Id: I787f4e79cb92e2e530fae6598a3dd749a679527b
---
 composer.json     |   2 +-
 package-lock.json | 860 ++++++++++++++++++++++++----------------------
 package.json      |   2 +-
 3 files changed, 450 insertions(+), 414 deletions(-)

diff --git a/composer.json b/composer.json
index c59ac0e..73b656f 100644
--- a/composer.json
+++ b/composer.json
@@ -34,7 +34,7 @@
 		}
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "50.0.0",
+		"mediawiki/mediawiki-codesniffer": "51.0.0",
 		"mediawiki/mediawiki-phan-config": "0.20.0",
 		"mediawiki/minus-x": "2.0.1",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
diff --git a/package-lock.json b/package-lock.json
index 0c9cef3..855ac40 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,7 +6,7 @@
 		"": {
 			"name": "PageForms",
 			"devDependencies": {
-				"eslint-config-wikimedia": "0.32.3",
+				"eslint-config-wikimedia": "0.32.4",
 				"grunt": "1.6.2",
 				"grunt-banana-checker": "0.13.0",
 				"grunt-eslint": "24.3.0"
@@ -45,19 +45,32 @@
 			}
 		},
 		"node_modules/@es-joy/jsdoccomment": {
-			"version": "0.76.0",
-			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz",
-			"integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==",
+			"version": "0.86.0",
+			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz",
+			"integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==",
 			"dev": true,
 			"dependencies": {
 				"@types/estree": "^1.0.8",
-				"@typescript-eslint/types": "^8.46.0",
-				"comment-parser": "1.4.1",
-				"esquery": "^1.6.0",
-				"jsdoc-type-pratt-parser": "~6.10.0"
+				"@typescript-eslint/types": "^8.58.0",
+				"comment-parser": "1.4.6",
+				"esquery": "^1.7.0",
+				"jsdoc-type-pratt-parser": "~7.2.0"
 			},
 			"engines": {
-				"node": ">=20.11.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
+			}
+		},
+		"node_modules/@es-joy/jsdoccomment/node_modules/@typescript-eslint/types": {
+			"version": "8.59.2",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+			"integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
+			"dev": true,
+			"engines": {
+				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+			},
+			"funding": {
+				"type": "opencollective",
+				"url": "https://opencollective.com/typescript-eslint"
 			}
 		},
 		"node_modules/@es-joy/resolve.exports": {
@@ -70,9 +83,9 @@
 			}
 		},
 		"node_modules/@eslint-community/eslint-utils": {
-			"version": "4.7.0",
-			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
-			"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+			"version": "4.9.1",
+			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+			"integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
 			"dev": true,
 			"dependencies": {
 				"eslint-visitor-keys": "^3.4.3"
@@ -182,9 +195,9 @@
 			"dev": true
 		},
 		"node_modules/@mdn/browser-compat-data": {
-			"version": "5.7.6",
-			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
-			"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+			"version": "6.1.5",
+			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-6.1.5.tgz",
+			"integrity": "sha512-PzdZZzRhcXvKB0begee28n5lvwAcinGKYuLZOVxHAZm+n7y01ddEGfdS1ZXRuVcV+ndG6mSEAE8vgudom5UjYg==",
 			"dev": true
 		},
 		"node_modules/@nodelib/fs.scandir": {
@@ -307,20 +320,19 @@
 			"dev": true
 		},
 		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz",
-			"integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz",
+			"integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==",
 			"dev": true,
 			"dependencies": {
-				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/type-utils": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"graphemer": "^1.4.0",
-				"ignore": "^7.0.0",
+				"@eslint-community/regexpp": "^4.12.2",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/type-utils": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"ignore": "^7.0.5",
 				"natural-compare": "^1.4.0",
-				"ts-api-utils": "^2.1.0"
+				"ts-api-utils": "^2.4.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -330,7 +342,7 @@
 				"url": "https://opencollective.com/typescript-eslint"
 			},
 			"peerDependencies": {
-				"@typescript-eslint/parser": "^8.46.0",
+				"@typescript-eslint/parser": "^8.54.0",
 				"eslint": "^8.57.0 || ^9.0.0",
 				"typescript": ">=4.8.4 <6.0.0"
 			}
@@ -345,16 +357,16 @@
 			}
 		},
 		"node_modules/@typescript-eslint/parser": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz",
-			"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz",
+			"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -369,14 +381,14 @@
 			}
 		},
 		"node_modules/@typescript-eslint/project-service": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz",
-			"integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz",
+			"integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/tsconfig-utils": "^8.46.0",
-				"@typescript-eslint/types": "^8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/tsconfig-utils": "^8.54.0",
+				"@typescript-eslint/types": "^8.54.0",
+				"debug": "^4.4.3"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -390,13 +402,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz",
-			"integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz",
+			"integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -407,9 +419,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/tsconfig-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz",
-			"integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz",
+			"integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==",
 			"dev": true,
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -423,16 +435,16 @@
 			}
 		},
 		"node_modules/@typescript-eslint/type-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz",
-			"integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz",
+			"integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"debug": "^4.3.4",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"debug": "^4.4.3",
+				"ts-api-utils": "^2.4.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -447,9 +459,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/types": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz",
-			"integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
+			"integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
 			"dev": true,
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -460,21 +472,20 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz",
-			"integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz",
+			"integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/project-service": "8.46.0",
-				"@typescript-eslint/tsconfig-utils": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4",
-				"fast-glob": "^3.3.2",
-				"is-glob": "^4.0.3",
-				"minimatch": "^9.0.4",
-				"semver": "^7.6.0",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/project-service": "8.54.0",
+				"@typescript-eslint/tsconfig-utils": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3",
+				"minimatch": "^9.0.5",
+				"semver": "^7.7.3",
+				"tinyglobby": "^0.2.15",
+				"ts-api-utils": "^2.4.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -488,9 +499,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
-			"integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+			"version": "2.1.0",
+			"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+			"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
 			"dev": true,
 			"dependencies": {
 				"balanced-match": "^1.0.0"
@@ -512,15 +523,15 @@
 			}
 		},
 		"node_modules/@typescript-eslint/utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz",
-			"integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz",
+			"integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==",
 			"dev": true,
 			"dependencies": {
-				"@eslint-community/eslint-utils": "^4.7.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0"
+				"@eslint-community/eslint-utils": "^4.9.1",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0"
 			},
 			"engines": {
 				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -535,12 +546,12 @@
 			}
 		},
 		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz",
-			"integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz",
+			"integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "8.46.0",
+				"@typescript-eslint/types": "8.54.0",
 				"eslint-visitor-keys": "^4.2.1"
 			},
 			"engines": {
@@ -576,9 +587,9 @@
 			"dev": true
 		},
 		"node_modules/acorn": {
-			"version": "8.15.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-			"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+			"version": "8.16.0",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+			"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
 			"dev": true,
 			"bin": {
 				"acorn": "bin/acorn"
@@ -672,6 +683,12 @@
 				"@mdn/browser-compat-data": "^5.6.19"
 			}
 		},
+		"node_modules/ast-metadata-inferer/node_modules/@mdn/browser-compat-data": {
+			"version": "5.7.6",
+			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
+			"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+			"dev": true
+		},
 		"node_modules/async": {
 			"version": "3.2.3",
 			"resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz",
@@ -914,9 +931,9 @@
 			}
 		},
 		"node_modules/comment-parser": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
-			"integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
+			"version": "1.4.6",
+			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz",
+			"integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==",
 			"dev": true,
 			"engines": {
 				"node": ">= 12.0.0"
@@ -1036,13 +1053,13 @@
 			"dev": true
 		},
 		"node_modules/enhanced-resolve": {
-			"version": "5.18.3",
-			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
-			"integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+			"version": "5.21.0",
+			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
+			"integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==",
 			"dev": true,
 			"dependencies": {
 				"graceful-fs": "^4.2.4",
-				"tapable": "^2.2.0"
+				"tapable": "^2.3.3"
 			},
 			"engines": {
 				"node": ">=10.13.0"
@@ -1150,46 +1167,47 @@
 			}
 		},
 		"node_modules/eslint-config-wikimedia": {
-			"version": "0.32.3",
-			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.3.tgz",
-			"integrity": "sha512-Ekz2/ozpCCjQl3VbC6dW7ChqoW7FRilLDxmJ+FJOZhIxxzZSZR5QqQOAGWSZAlG1ONkZbYV/TPwGLWZcrNxyaA==",
+			"version": "0.32.4",
+			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.4.tgz",
+			"integrity": "sha512-zcHJYss2vo8HK5PzkFuaV9mzaSGRuhA+jFGoQ4rNIwWz0usZsuQ2LYpkKxrbCVX1CbV0PzG+jJ6p0cLI+G37JQ==",
 			"dev": true,
 			"dependencies": {
 				"@stylistic/eslint-plugin": "^3.1.0",
-				"@typescript-eslint/eslint-plugin": "8.46.0",
-				"@typescript-eslint/parser": "8.46.0",
+				"@typescript-eslint/eslint-plugin": "8.54.0",
+				"@typescript-eslint/parser": "8.54.0",
 				"browserslist-config-wikimedia": "^0.7.0",
-				"eslint": "^8.57.0",
-				"eslint-plugin-compat": "^6.0.2",
+				"eslint-plugin-compat": "^6.1.0",
 				"eslint-plugin-es-x": "^8.7.0",
-				"eslint-plugin-jest": "^29.0.1",
-				"eslint-plugin-jsdoc": "61.3.0",
+				"eslint-plugin-jest": "^29.12.2",
+				"eslint-plugin-jsdoc": "^62.9.0",
 				"eslint-plugin-json-es": "^1.6.0",
-				"eslint-plugin-mediawiki": "^0.8.2",
+				"eslint-plugin-mediawiki": "^0.8.3",
 				"eslint-plugin-mocha": "^10.5.0",
-				"eslint-plugin-n": "^17.23.1",
-				"eslint-plugin-no-jquery": "^3.1.1",
-				"eslint-plugin-qunit": "^8.2.5",
-				"eslint-plugin-security": "^3.0.1",
+				"eslint-plugin-n": "^17.24.0",
+				"eslint-plugin-no-jquery": "^4.0.0",
+				"eslint-plugin-qunit": "^8.2.6",
+				"eslint-plugin-security": "^4.0.0",
 				"eslint-plugin-unicorn": "^56.0.1",
 				"eslint-plugin-vue": "^9.33.0",
-				"eslint-plugin-wdio": "^9.16.2",
+				"eslint-plugin-wdio": "9.23.0",
 				"eslint-plugin-yml": "^1.19.0"
 			},
 			"engines": {
 				"node": ">=20 <25"
+			},
+			"peerDependencies": {
+				"eslint": "^8.57.0"
 			}
 		},
 		"node_modules/eslint-plugin-compat": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.2.tgz",
-			"integrity": "sha512-1ME+YfJjmOz1blH0nPZpHgjMGK4kjgEeoYqGCqoBPQ/mGu/dJzdoP0f1C8H2jcWZjzhZjAMccbM/VdXhPORIfA==",
+			"version": "6.2.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.2.1.tgz",
+			"integrity": "sha512-gLKqUH+lQcCL+HzsROUjBDvakc5Zaga51Y4ZAkPCXc41pzKBfyluqTr2j8zOx8QQQb7zyglu1LVoL5aSNWf2SQ==",
 			"dev": true,
 			"dependencies": {
-				"@mdn/browser-compat-data": "^5.5.35",
+				"@mdn/browser-compat-data": "^6.1.1",
 				"ast-metadata-inferer": "^0.8.1",
-				"browserslist": "^4.24.2",
-				"caniuse-lite": "^1.0.30001687",
+				"browserslist": "^4.25.2",
 				"find-up": "^5.0.0",
 				"globals": "^15.7.0",
 				"lodash.memoize": "^4.1.2",
@@ -1199,7 +1217,7 @@
 				"node": ">=18.x"
 			},
 			"peerDependencies": {
-				"eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0"
+				"eslint": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
 			}
 		},
 		"node_modules/eslint-plugin-compat/node_modules/globals": {
@@ -1265,57 +1283,57 @@
 			}
 		},
 		"node_modules/eslint-plugin-jsdoc": {
-			"version": "61.3.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.3.0.tgz",
-			"integrity": "sha512-E4m/5J5lrasd63Z74q4CCZ4PFnywnnrcvA7zZ98802NPhrZKKTp5NH+XAT+afcjXp2ps2/OQF5gPSWCT2XFCJg==",
+			"version": "62.9.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz",
+			"integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==",
 			"dev": true,
 			"dependencies": {
-				"@es-joy/jsdoccomment": "~0.76.0",
+				"@es-joy/jsdoccomment": "~0.86.0",
 				"@es-joy/resolve.exports": "1.2.0",
 				"are-docs-informative": "^0.0.2",
-				"comment-parser": "1.4.1",
+				"comment-parser": "1.4.6",
 				"debug": "^4.4.3",
 				"escape-string-regexp": "^4.0.0",
-				"espree": "^10.4.0",
-				"esquery": "^1.6.0",
+				"espree": "^11.2.0",
+				"esquery": "^1.7.0",
 				"html-entities": "^2.6.0",
 				"object-deep-merge": "^2.0.0",
 				"parse-imports-exports": "^0.2.4",
-				"semver": "^7.7.3",
+				"semver": "^7.7.4",
 				"spdx-expression-parse": "^4.0.0",
 				"to-valid-identifier": "^1.0.0"
 			},
 			"engines": {
-				"node": ">=20.11.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
 			},
 			"peerDependencies": {
-				"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
+				"eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0"
 			}
 		},
 		"node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": {
-			"version": "4.2.1",
-			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-			"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+			"integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
 			"dev": true,
 			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
 			},
 			"funding": {
 				"url": "https://opencollective.com/eslint"
 			}
 		},
 		"node_modules/eslint-plugin-jsdoc/node_modules/espree": {
-			"version": "10.4.0",
-			"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
-			"integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+			"version": "11.2.0",
+			"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+			"integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
 			"dev": true,
 			"dependencies": {
-				"acorn": "^8.15.0",
+				"acorn": "^8.16.0",
 				"acorn-jsx": "^5.3.2",
-				"eslint-visitor-keys": "^4.2.1"
+				"eslint-visitor-keys": "^5.0.1"
 			},
 			"engines": {
-				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+				"node": "^20.19.0 || ^22.13.0 || >=24"
 			},
 			"funding": {
 				"url": "https://opencollective.com/eslint"
@@ -1335,9 +1353,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-mediawiki": {
-			"version": "0.8.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.2.tgz",
-			"integrity": "sha512-ydYrpkzm8IVVDQA96QPF3HnFd2xjkIEh7gixD2gvOqUbUZF0p36LtpWXOFAlPWAvHLePWbNNTD5ovd3d4hEtog==",
+			"version": "0.8.3",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.3.tgz",
+			"integrity": "sha512-RQKZd40C1taMDk5N9+aFLEBGBB95RNG7Gc54EsJ8pHsJu8//nIdpxNFWPtQz6RNxz6pZUXBnMCxzkMOLM3Mm1w==",
 			"dev": true,
 			"dependencies": {
 				"upath": "^2.0.1"
@@ -1364,9 +1382,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-n": {
-			"version": "17.23.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz",
-			"integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==",
+			"version": "17.24.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz",
+			"integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.5.0",
@@ -1438,31 +1456,34 @@
 			}
 		},
 		"node_modules/eslint-plugin-no-jquery": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.1.1.tgz",
-			"integrity": "sha512-LTLO3jH/Tjr1pmxCEqtV6qmt+OChv8La4fwgG470JRpgxyFF4NOzoC9CRy92GIWD3Yjl0qLEgPmD2FLQWcNEjg==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-4.0.0.tgz",
+			"integrity": "sha512-ZR631D3qIQfgjKOAcgvYa5cB8xdTvFXAD5MbK5x5WltLSwFxmGnoaTXNtnptFU7py07ALrIe5dZRYncu4RD/Ug==",
 			"dev": true,
 			"peerDependencies": {
-				"eslint": ">=8.0.0"
+				"eslint": ">=8.0.0 <9.0.0"
 			}
 		},
 		"node_modules/eslint-plugin-qunit": {
-			"version": "8.2.5",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.5.tgz",
-			"integrity": "sha512-qr7RJCYImKQjB+39q4q46i1l7p1V3joHzBE5CAYfxn5tfVFjrnjn/tw7q/kDyweU9kAIcLul0Dx/KWVUCb3BgA==",
+			"version": "8.2.6",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.6.tgz",
+			"integrity": "sha512-S1jC/DIW9J8VtNX4uG1vlf5FZVrfQFlcuiYmvTHR2IICUhubHqpWA5o+qS1tujh+81Gs39omKV2D4OXfbSJE5g==",
 			"dev": true,
 			"dependencies": {
-				"eslint-utils": "^3.0.0",
+				"@eslint-community/eslint-utils": "^4.4.0",
 				"requireindex": "^1.2.0"
 			},
 			"engines": {
 				"node": "^16.0.0 || ^18.0.0 || >=20.0.0"
+			},
+			"peerDependencies": {
+				"eslint": ">=8.38.0"
 			}
 		},
 		"node_modules/eslint-plugin-security": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz",
-			"integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-4.0.0.tgz",
+			"integrity": "sha512-tfuQT8K/Li1ZxhFzyD8wPIKtlzZxqBcPr9q0jFMQ77wWAbKBVEhaMPVQRTMTvCMUDhwBe5vPVqQPwAGk/ASfxQ==",
 			"dev": true,
 			"dependencies": {
 				"safe-regex": "^2.1.1"
@@ -1542,9 +1563,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-wdio": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.16.2.tgz",
-			"integrity": "sha512-qkqsPgxN70OnUPWMjmzJbSbvm2+Q087JIGss53/OFI4Y46xKlV5VLhLiYealaAibAiXmnfWKd0tERjZAzVL87A==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.23.0.tgz",
+			"integrity": "sha512-8tcpupzp2Qmv+uSfhzeHi42LVA9PyjkpMBPclSIkPxBfXpj4fMrejwAHu1PROh1OmJN1VQcGQUTWvSzyRcV2vA==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.20.0"
@@ -1677,9 +1698,9 @@
 			}
 		},
 		"node_modules/esquery": {
-			"version": "1.6.0",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
-			"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+			"version": "1.7.0",
+			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+			"integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
 			"dev": true,
 			"dependencies": {
 				"estraverse": "^5.1.0"
@@ -1766,34 +1787,6 @@
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 			"dev": true
 		},
-		"node_modules/fast-glob": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-			"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-			"dev": true,
-			"dependencies": {
-				"@nodelib/fs.stat": "^2.0.2",
-				"@nodelib/fs.walk": "^1.2.3",
-				"glob-parent": "^5.1.2",
-				"merge2": "^1.3.0",
-				"micromatch": "^4.0.8"
-			},
-			"engines": {
-				"node": ">=8.6.0"
-			}
-		},
-		"node_modules/fast-glob/node_modules/glob-parent": {
-			"version": "5.1.2",
-			"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-			"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-			"dev": true,
-			"dependencies": {
-				"is-glob": "^4.0.1"
-			},
-			"engines": {
-				"node": ">= 6"
-			}
-		},
 		"node_modules/fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -1952,9 +1945,9 @@
 			}
 		},
 		"node_modules/get-tsconfig": {
-			"version": "4.13.0",
-			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
-			"integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+			"version": "4.14.0",
+			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+			"integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
 			"dev": true,
 			"dependencies": {
 				"resolve-pkg-maps": "^1.0.0"
@@ -2530,9 +2523,9 @@
 			}
 		},
 		"node_modules/jsdoc-type-pratt-parser": {
-			"version": "6.10.0",
-			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz",
-			"integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==",
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz",
+			"integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==",
 			"dev": true,
 			"engines": {
 				"node": ">=20.0.0"
@@ -2699,15 +2692,6 @@
 				"node": ">=0.10.0"
 			}
 		},
-		"node_modules/merge2": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-			"dev": true,
-			"engines": {
-				"node": ">= 8"
-			}
-		},
 		"node_modules/micromatch": {
 			"version": "4.0.8",
 			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
@@ -3427,9 +3411,9 @@
 			"dev": true
 		},
 		"node_modules/semver": {
-			"version": "7.7.3",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-			"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+			"version": "7.7.4",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+			"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
 			"dev": true,
 			"bin": {
 				"semver": "bin/semver.js"
@@ -3556,9 +3540,9 @@
 			}
 		},
 		"node_modules/tapable": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
-			"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+			"integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
 			"dev": true,
 			"engines": {
 				"node": ">=6"
@@ -3574,6 +3558,51 @@
 			"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
 			"dev": true
 		},
+		"node_modules/tinyglobby": {
+			"version": "0.2.16",
+			"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+			"integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+			"dev": true,
+			"dependencies": {
+				"fdir": "^6.5.0",
+				"picomatch": "^4.0.4"
+			},
+			"engines": {
+				"node": ">=12.0.0"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/SuperchupuDev"
+			}
+		},
+		"node_modules/tinyglobby/node_modules/fdir": {
+			"version": "6.5.0",
+			"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+			"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+			"dev": true,
+			"engines": {
+				"node": ">=12.0.0"
+			},
+			"peerDependencies": {
+				"picomatch": "^3 || ^4"
+			},
+			"peerDependenciesMeta": {
+				"picomatch": {
+					"optional": true
+				}
+			}
+		},
+		"node_modules/tinyglobby/node_modules/picomatch": {
+			"version": "4.0.4",
+			"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+			"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+			"dev": true,
+			"engines": {
+				"node": ">=12"
+			},
+			"funding": {
+				"url": "https://github.com/sponsors/jonschlinkert"
+			}
+		},
 		"node_modules/to-regex-range": {
 			"version": "5.0.1",
 			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -3603,9 +3632,9 @@
 			}
 		},
 		"node_modules/ts-api-utils": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
-			"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
+			"integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
 			"dev": true,
 			"engines": {
 				"node": ">=18.12"
@@ -3918,16 +3947,24 @@
 			"dev": true
 		},
 		"@es-joy/jsdoccomment": {
-			"version": "0.76.0",
-			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz",
-			"integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==",
+			"version": "0.86.0",
+			"resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz",
+			"integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==",
 			"dev": true,
 			"requires": {
 				"@types/estree": "^1.0.8",
-				"@typescript-eslint/types": "^8.46.0",
-				"comment-parser": "1.4.1",
-				"esquery": "^1.6.0",
-				"jsdoc-type-pratt-parser": "~6.10.0"
+				"@typescript-eslint/types": "^8.58.0",
+				"comment-parser": "1.4.6",
+				"esquery": "^1.7.0",
+				"jsdoc-type-pratt-parser": "~7.2.0"
+			},
+			"dependencies": {
+				"@typescript-eslint/types": {
+					"version": "8.59.2",
+					"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+					"integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
+					"dev": true
+				}
 			}
 		},
 		"@es-joy/resolve.exports": {
@@ -3937,9 +3974,9 @@
 			"dev": true
 		},
 		"@eslint-community/eslint-utils": {
-			"version": "4.7.0",
-			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
-			"integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+			"version": "4.9.1",
+			"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+			"integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
 			"dev": true,
 			"requires": {
 				"eslint-visitor-keys": "^3.4.3"
@@ -4015,9 +4052,9 @@
 			"dev": true
 		},
 		"@mdn/browser-compat-data": {
-			"version": "5.7.6",
-			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
-			"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+			"version": "6.1.5",
+			"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-6.1.5.tgz",
+			"integrity": "sha512-PzdZZzRhcXvKB0begee28n5lvwAcinGKYuLZOVxHAZm+n7y01ddEGfdS1ZXRuVcV+ndG6mSEAE8vgudom5UjYg==",
 			"dev": true
 		},
 		"@nodelib/fs.scandir": {
@@ -4103,20 +4140,19 @@
 			"dev": true
 		},
 		"@typescript-eslint/eslint-plugin": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz",
-			"integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz",
+			"integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==",
 			"dev": true,
 			"requires": {
-				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/type-utils": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"graphemer": "^1.4.0",
-				"ignore": "^7.0.0",
+				"@eslint-community/regexpp": "^4.12.2",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/type-utils": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"ignore": "^7.0.5",
 				"natural-compare": "^1.4.0",
-				"ts-api-utils": "^2.1.0"
+				"ts-api-utils": "^2.4.0"
 			},
 			"dependencies": {
 				"ignore": {
@@ -4128,87 +4164,86 @@
 			}
 		},
 		"@typescript-eslint/parser": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz",
-			"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz",
+			"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3"
 			}
 		},
 		"@typescript-eslint/project-service": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz",
-			"integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz",
+			"integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/tsconfig-utils": "^8.46.0",
-				"@typescript-eslint/types": "^8.46.0",
-				"debug": "^4.3.4"
+				"@typescript-eslint/tsconfig-utils": "^8.54.0",
+				"@typescript-eslint/types": "^8.54.0",
+				"debug": "^4.4.3"
 			}
 		},
 		"@typescript-eslint/scope-manager": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz",
-			"integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz",
+			"integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0"
 			}
 		},
 		"@typescript-eslint/tsconfig-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz",
-			"integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz",
+			"integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==",
 			"dev": true,
 			"requires": {}
 		},
 		"@typescript-eslint/type-utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz",
-			"integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz",
+			"integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0",
-				"@typescript-eslint/utils": "8.46.0",
-				"debug": "^4.3.4",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0",
+				"@typescript-eslint/utils": "8.54.0",
+				"debug": "^4.4.3",
+				"ts-api-utils": "^2.4.0"
 			}
 		},
 		"@typescript-eslint/types": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz",
-			"integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz",
+			"integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==",
 			"dev": true
 		},
 		"@typescript-eslint/typescript-estree": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz",
-			"integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz",
+			"integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/project-service": "8.46.0",
-				"@typescript-eslint/tsconfig-utils": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/visitor-keys": "8.46.0",
-				"debug": "^4.3.4",
-				"fast-glob": "^3.3.2",
-				"is-glob": "^4.0.3",
-				"minimatch": "^9.0.4",
-				"semver": "^7.6.0",
-				"ts-api-utils": "^2.1.0"
+				"@typescript-eslint/project-service": "8.54.0",
+				"@typescript-eslint/tsconfig-utils": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/visitor-keys": "8.54.0",
+				"debug": "^4.4.3",
+				"minimatch": "^9.0.5",
+				"semver": "^7.7.3",
+				"tinyglobby": "^0.2.15",
+				"ts-api-utils": "^2.4.0"
 			},
 			"dependencies": {
 				"brace-expansion": {
-					"version": "2.0.3",
-					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
-					"integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+					"version": "2.1.0",
+					"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+					"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
 					"dev": true,
 					"requires": {
 						"balanced-match": "^1.0.0"
@@ -4226,24 +4261,24 @@
 			}
 		},
 		"@typescript-eslint/utils": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz",
-			"integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz",
+			"integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==",
 			"dev": true,
 			"requires": {
-				"@eslint-community/eslint-utils": "^4.7.0",
-				"@typescript-eslint/scope-manager": "8.46.0",
-				"@typescript-eslint/types": "8.46.0",
-				"@typescript-eslint/typescript-estree": "8.46.0"
+				"@eslint-community/eslint-utils": "^4.9.1",
+				"@typescript-eslint/scope-manager": "8.54.0",
+				"@typescript-eslint/types": "8.54.0",
+				"@typescript-eslint/typescript-estree": "8.54.0"
 			}
 		},
 		"@typescript-eslint/visitor-keys": {
-			"version": "8.46.0",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz",
-			"integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==",
+			"version": "8.54.0",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz",
+			"integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "8.46.0",
+				"@typescript-eslint/types": "8.54.0",
 				"eslint-visitor-keys": "^4.2.1"
 			},
 			"dependencies": {
@@ -4268,9 +4303,9 @@
 			"dev": true
 		},
 		"acorn": {
-			"version": "8.15.0",
-			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
-			"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+			"version": "8.16.0",
+			"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+			"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
 			"dev": true
 		},
 		"acorn-jsx": {
@@ -4340,6 +4375,14 @@
 			"dev": true,
 			"requires": {
 				"@mdn/browser-compat-data": "^5.6.19"
+			},
+			"dependencies": {
+				"@mdn/browser-compat-data": {
+					"version": "5.7.6",
+					"resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.7.6.tgz",
+					"integrity": "sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==",
+					"dev": true
+				}
 			}
 		},
 		"async": {
@@ -4503,9 +4546,9 @@
 			"dev": true
 		},
 		"comment-parser": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz",
-			"integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==",
+			"version": "1.4.6",
+			"resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz",
+			"integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==",
 			"dev": true
 		},
 		"concat-map": {
@@ -4589,13 +4632,13 @@
 			"dev": true
 		},
 		"enhanced-resolve": {
-			"version": "5.18.3",
-			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
-			"integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+			"version": "5.21.0",
+			"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
+			"integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==",
 			"dev": true,
 			"requires": {
 				"graceful-fs": "^4.2.4",
-				"tapable": "^2.2.0"
+				"tapable": "^2.3.3"
 			}
 		},
 		"error-ex": {
@@ -4692,43 +4735,41 @@
 			}
 		},
 		"eslint-config-wikimedia": {
-			"version": "0.32.3",
-			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.3.tgz",
-			"integrity": "sha512-Ekz2/ozpCCjQl3VbC6dW7ChqoW7FRilLDxmJ+FJOZhIxxzZSZR5QqQOAGWSZAlG1ONkZbYV/TPwGLWZcrNxyaA==",
+			"version": "0.32.4",
+			"resolved": "https://registry.npmjs.org/eslint-config-wikimedia/-/eslint-config-wikimedia-0.32.4.tgz",
+			"integrity": "sha512-zcHJYss2vo8HK5PzkFuaV9mzaSGRuhA+jFGoQ4rNIwWz0usZsuQ2LYpkKxrbCVX1CbV0PzG+jJ6p0cLI+G37JQ==",
 			"dev": true,
 			"requires": {
 				"@stylistic/eslint-plugin": "^3.1.0",
-				"@typescript-eslint/eslint-plugin": "8.46.0",
-				"@typescript-eslint/parser": "8.46.0",
+				"@typescript-eslint/eslint-plugin": "8.54.0",
+				"@typescript-eslint/parser": "8.54.0",
 				"browserslist-config-wikimedia": "^0.7.0",
-				"eslint": "^8.57.0",
-				"eslint-plugin-compat": "^6.0.2",
+				"eslint-plugin-compat": "^6.1.0",
 				"eslint-plugin-es-x": "^8.7.0",
-				"eslint-plugin-jest": "^29.0.1",
-				"eslint-plugin-jsdoc": "61.3.0",
+				"eslint-plugin-jest": "^29.12.2",
+				"eslint-plugin-jsdoc": "^62.9.0",
 				"eslint-plugin-json-es": "^1.6.0",
-				"eslint-plugin-mediawiki": "^0.8.2",
+				"eslint-plugin-mediawiki": "^0.8.3",
 				"eslint-plugin-mocha": "^10.5.0",
-				"eslint-plugin-n": "^17.23.1",
-				"eslint-plugin-no-jquery": "^3.1.1",
-				"eslint-plugin-qunit": "^8.2.5",
-				"eslint-plugin-security": "^3.0.1",
+				"eslint-plugin-n": "^17.24.0",
+				"eslint-plugin-no-jquery": "^4.0.0",
+				"eslint-plugin-qunit": "^8.2.6",
+				"eslint-plugin-security": "^4.0.0",
 				"eslint-plugin-unicorn": "^56.0.1",
 				"eslint-plugin-vue": "^9.33.0",
-				"eslint-plugin-wdio": "^9.16.2",
+				"eslint-plugin-wdio": "9.23.0",
 				"eslint-plugin-yml": "^1.19.0"
 			}
 		},
 		"eslint-plugin-compat": {
-			"version": "6.0.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.0.2.tgz",
-			"integrity": "sha512-1ME+YfJjmOz1blH0nPZpHgjMGK4kjgEeoYqGCqoBPQ/mGu/dJzdoP0f1C8H2jcWZjzhZjAMccbM/VdXhPORIfA==",
+			"version": "6.2.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-6.2.1.tgz",
+			"integrity": "sha512-gLKqUH+lQcCL+HzsROUjBDvakc5Zaga51Y4ZAkPCXc41pzKBfyluqTr2j8zOx8QQQb7zyglu1LVoL5aSNWf2SQ==",
 			"dev": true,
 			"requires": {
-				"@mdn/browser-compat-data": "^5.5.35",
+				"@mdn/browser-compat-data": "^6.1.1",
 				"ast-metadata-inferer": "^0.8.1",
-				"browserslist": "^4.24.2",
-				"caniuse-lite": "^1.0.30001687",
+				"browserslist": "^4.25.2",
 				"find-up": "^5.0.0",
 				"globals": "^15.7.0",
 				"lodash.memoize": "^4.1.2",
@@ -4764,42 +4805,42 @@
 			}
 		},
 		"eslint-plugin-jsdoc": {
-			"version": "61.3.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.3.0.tgz",
-			"integrity": "sha512-E4m/5J5lrasd63Z74q4CCZ4PFnywnnrcvA7zZ98802NPhrZKKTp5NH+XAT+afcjXp2ps2/OQF5gPSWCT2XFCJg==",
+			"version": "62.9.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz",
+			"integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==",
 			"dev": true,
 			"requires": {
-				"@es-joy/jsdoccomment": "~0.76.0",
+				"@es-joy/jsdoccomment": "~0.86.0",
 				"@es-joy/resolve.exports": "1.2.0",
 				"are-docs-informative": "^0.0.2",
-				"comment-parser": "1.4.1",
+				"comment-parser": "1.4.6",
 				"debug": "^4.4.3",
 				"escape-string-regexp": "^4.0.0",
-				"espree": "^10.4.0",
-				"esquery": "^1.6.0",
+				"espree": "^11.2.0",
+				"esquery": "^1.7.0",
 				"html-entities": "^2.6.0",
 				"object-deep-merge": "^2.0.0",
 				"parse-imports-exports": "^0.2.4",
-				"semver": "^7.7.3",
+				"semver": "^7.7.4",
 				"spdx-expression-parse": "^4.0.0",
 				"to-valid-identifier": "^1.0.0"
 			},
 			"dependencies": {
 				"eslint-visitor-keys": {
-					"version": "4.2.1",
-					"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
-					"integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+					"version": "5.0.1",
+					"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+					"integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
 					"dev": true
 				},
 				"espree": {
-					"version": "10.4.0",
-					"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
-					"integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==",
+					"version": "11.2.0",
+					"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+					"integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
 					"dev": true,
 					"requires": {
-						"acorn": "^8.15.0",
+						"acorn": "^8.16.0",
 						"acorn-jsx": "^5.3.2",
-						"eslint-visitor-keys": "^4.2.1"
+						"eslint-visitor-keys": "^5.0.1"
 					}
 				}
 			}
@@ -4815,9 +4856,9 @@
 			}
 		},
 		"eslint-plugin-mediawiki": {
-			"version": "0.8.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.2.tgz",
-			"integrity": "sha512-ydYrpkzm8IVVDQA96QPF3HnFd2xjkIEh7gixD2gvOqUbUZF0p36LtpWXOFAlPWAvHLePWbNNTD5ovd3d4hEtog==",
+			"version": "0.8.3",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-mediawiki/-/eslint-plugin-mediawiki-0.8.3.tgz",
+			"integrity": "sha512-RQKZd40C1taMDk5N9+aFLEBGBB95RNG7Gc54EsJ8pHsJu8//nIdpxNFWPtQz6RNxz6pZUXBnMCxzkMOLM3Mm1w==",
 			"dev": true,
 			"requires": {
 				"upath": "^2.0.1"
@@ -4835,9 +4876,9 @@
 			}
 		},
 		"eslint-plugin-n": {
-			"version": "17.23.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz",
-			"integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==",
+			"version": "17.24.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz",
+			"integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==",
 			"dev": true,
 			"requires": {
 				"@eslint-community/eslint-utils": "^4.5.0",
@@ -4880,26 +4921,26 @@
 			}
 		},
 		"eslint-plugin-no-jquery": {
-			"version": "3.1.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-3.1.1.tgz",
-			"integrity": "sha512-LTLO3jH/Tjr1pmxCEqtV6qmt+OChv8La4fwgG470JRpgxyFF4NOzoC9CRy92GIWD3Yjl0qLEgPmD2FLQWcNEjg==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-no-jquery/-/eslint-plugin-no-jquery-4.0.0.tgz",
+			"integrity": "sha512-ZR631D3qIQfgjKOAcgvYa5cB8xdTvFXAD5MbK5x5WltLSwFxmGnoaTXNtnptFU7py07ALrIe5dZRYncu4RD/Ug==",
 			"dev": true,
 			"requires": {}
 		},
 		"eslint-plugin-qunit": {
-			"version": "8.2.5",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.5.tgz",
-			"integrity": "sha512-qr7RJCYImKQjB+39q4q46i1l7p1V3joHzBE5CAYfxn5tfVFjrnjn/tw7q/kDyweU9kAIcLul0Dx/KWVUCb3BgA==",
+			"version": "8.2.6",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-qunit/-/eslint-plugin-qunit-8.2.6.tgz",
+			"integrity": "sha512-S1jC/DIW9J8VtNX4uG1vlf5FZVrfQFlcuiYmvTHR2IICUhubHqpWA5o+qS1tujh+81Gs39omKV2D4OXfbSJE5g==",
 			"dev": true,
 			"requires": {
-				"eslint-utils": "^3.0.0",
+				"@eslint-community/eslint-utils": "^4.4.0",
 				"requireindex": "^1.2.0"
 			}
 		},
 		"eslint-plugin-security": {
-			"version": "3.0.1",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.1.tgz",
-			"integrity": "sha512-XjVGBhtDZJfyuhIxnQ/WMm385RbX3DBu7H1J7HNNhmB2tnGxMeqVSnYv79oAj992ayvIBZghsymwkYFS6cGH4Q==",
+			"version": "4.0.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-4.0.0.tgz",
+			"integrity": "sha512-tfuQT8K/Li1ZxhFzyD8wPIKtlzZxqBcPr9q0jFMQ77wWAbKBVEhaMPVQRTMTvCMUDhwBe5vPVqQPwAGk/ASfxQ==",
 			"dev": true,
 			"requires": {
 				"safe-regex": "^2.1.1"
@@ -4954,9 +4995,9 @@
 			}
 		},
 		"eslint-plugin-wdio": {
-			"version": "9.16.2",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.16.2.tgz",
-			"integrity": "sha512-qkqsPgxN70OnUPWMjmzJbSbvm2+Q087JIGss53/OFI4Y46xKlV5VLhLiYealaAibAiXmnfWKd0tERjZAzVL87A==",
+			"version": "9.23.0",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-wdio/-/eslint-plugin-wdio-9.23.0.tgz",
+			"integrity": "sha512-8tcpupzp2Qmv+uSfhzeHi42LVA9PyjkpMBPclSIkPxBfXpj4fMrejwAHu1PROh1OmJN1VQcGQUTWvSzyRcV2vA==",
 			"dev": true
 		},
 		"eslint-plugin-yml": {
@@ -5024,9 +5065,9 @@
 			"dev": true
 		},
 		"esquery": {
-			"version": "1.6.0",
-			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
-			"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+			"version": "1.7.0",
+			"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+			"integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
 			"dev": true,
 			"requires": {
 				"estraverse": "^5.1.0"
@@ -5092,30 +5133,6 @@
 			"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 			"dev": true
 		},
-		"fast-glob": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
-			"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
-			"dev": true,
-			"requires": {
-				"@nodelib/fs.stat": "^2.0.2",
-				"@nodelib/fs.walk": "^1.2.3",
-				"glob-parent": "^5.1.2",
-				"merge2": "^1.3.0",
-				"micromatch": "^4.0.8"
-			},
-			"dependencies": {
-				"glob-parent": {
-					"version": "5.1.2",
-					"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
-					"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
-					"dev": true,
-					"requires": {
-						"is-glob": "^4.0.1"
-					}
-				}
-			}
-		},
 		"fast-json-stable-stringify": {
 			"version": "2.1.0",
 			"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -5241,9 +5258,9 @@
 			"dev": true
 		},
 		"get-tsconfig": {
-			"version": "4.13.0",
-			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
-			"integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+			"version": "4.14.0",
+			"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.14.0.tgz",
+			"integrity": "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==",
 			"dev": true,
 			"requires": {
 				"resolve-pkg-maps": "^1.0.0"
@@ -5671,9 +5688,9 @@
 			}
 		},
 		"jsdoc-type-pratt-parser": {
-			"version": "6.10.0",
-			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz",
-			"integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==",
+			"version": "7.2.0",
+			"resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz",
+			"integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==",
 			"dev": true
 		},
 		"jsesc": {
@@ -5809,12 +5826,6 @@
 			"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
 			"dev": true
 		},
-		"merge2": {
-			"version": "1.4.1",
-			"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-			"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
-			"dev": true
-		},
 		"micromatch": {
 			"version": "4.0.8",
 			"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
@@ -6339,9 +6350,9 @@
 			"dev": true
 		},
 		"semver": {
-			"version": "7.7.3",
-			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
-			"integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+			"version": "7.7.4",
+			"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+			"integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
 			"dev": true
 		},
 		"shebang-command": {
@@ -6440,9 +6451,9 @@
 			"dev": true
 		},
 		"tapable": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
-			"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+			"integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
 			"dev": true
 		},
 		"text-table": {
@@ -6451,6 +6462,31 @@
 			"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
 			"dev": true
 		},
+		"tinyglobby": {
+			"version": "0.2.16",
+			"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+			"integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
+			"dev": true,
+			"requires": {
+				"fdir": "^6.5.0",
+				"picomatch": "^4.0.4"
+			},
+			"dependencies": {
+				"fdir": {
+					"version": "6.5.0",
+					"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+					"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+					"dev": true,
+					"requires": {}
+				},
+				"picomatch": {
+					"version": "4.0.4",
+					"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+					"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+					"dev": true
+				}
+			}
+		},
 		"to-regex-range": {
 			"version": "5.0.1",
 			"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -6471,9 +6507,9 @@
 			}
 		},
 		"ts-api-utils": {
-			"version": "2.1.0",
-			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
-			"integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+			"version": "2.5.0",
+			"resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
+			"integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
 			"dev": true,
 			"requires": {}
 		},
diff --git a/package.json b/package.json
index 3992c7c..a258731 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
 		"test": "grunt test"
 	},
 	"devDependencies": {
-		"eslint-config-wikimedia": "0.32.3",
+		"eslint-config-wikimedia": "0.32.4",
 		"grunt": "1.6.2",
 		"grunt-banana-checker": "0.13.0",
 		"grunt-eslint": "24.3.0"
-- 
2.47.3


--- end ---
Source code is licensed under the AGPL.