mediawiki/extensions/DonationInterface (main)

sourcepatches
From 7477bb5ac0da4d53980953a73d1f2b93270594bb Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sun, 15 Mar 2026 07:54:47 +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: 49.0.0 → 50.0.0
* mediawiki/mediawiki-phan-config: 0.18.0 → 0.20.0

npm:
* @wikimedia/codex: 2.3.4 → 2.4.0
* @wikimedia/codex-icons: 2.3.4 → 2.4.0
* flatted: 3.3.3 → 3.4.1
  * https://github.com/advisories/GHSA-25h7-pfq9-p65f

Change-Id: I590a7179de580f2e54aed7a5ac77bfc6700e5b59
---
 composer.json     |  4 +--
 package-lock.json | 70 +++++++++++++++++++++++------------------------
 package.json      |  4 +--
 3 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/composer.json b/composer.json
index 1bcfd9f..b7b71d1 100644
--- a/composer.json
+++ b/composer.json
@@ -35,8 +35,8 @@
 		"whichbrowser/parser": "^2.1"
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "49.0.0",
-		"mediawiki/mediawiki-phan-config": "0.18.0",
+		"mediawiki/mediawiki-codesniffer": "50.0.0",
+		"mediawiki/mediawiki-phan-config": "0.20.0",
 		"mediawiki/minus-x": "2.0.1",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
 		"php-parallel-lint/php-parallel-lint": "1.4.0",
diff --git a/package-lock.json b/package-lock.json
index 6e448e8..2b8c51c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,8 +11,8 @@
 				"@vue/compiler-sfc": "3.5.13",
 				"@vue/test-utils": "2.4.6",
 				"@vue/vue3-jest": "29.2.6",
-				"@wikimedia/codex": "2.3.4",
-				"@wikimedia/codex-icons": "2.3.4",
+				"@wikimedia/codex": "2.4.0",
+				"@wikimedia/codex-icons": "2.4.0",
 				"babel-core": "^6.26.3",
 				"eslint-config-wikimedia": "0.32.3",
 				"eslint-plugin-jest": "27.2.1",
@@ -3131,12 +3131,12 @@
 			}
 		},
 		"node_modules/@stylistic/eslint-plugin/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -3831,13 +3831,13 @@
 			"dev": true
 		},
 		"node_modules/@wikimedia/codex": {
-			"version": "2.3.4",
-			"resolved": "https://registry.npmjs.org/@wikimedia/codex/-/codex-2.3.4.tgz",
-			"integrity": "sha512-Dn2R/LwRZedbgT98XyHEm02IAFXDNoLu8AvD6PFNX8Itk3H1Fdn9O4bUZWtcQGy9Y7dkmXnHUFswUH8QlXLn9g==",
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/@wikimedia/codex/-/codex-2.4.0.tgz",
+			"integrity": "sha512-j/I1gGbTo6pttjmwyYw9/3CeInK6mpBm2FVfABJk+B1Ylw5DskX+TqeCdKghwxSkxBt0ODbUTBYdFyafk+7ajg==",
 			"dev": true,
 			"dependencies": {
 				"@floating-ui/vue": "1.0.6",
-				"@wikimedia/codex-icons": "2.3.4"
+				"@wikimedia/codex-icons": "2.4.0"
 			},
 			"engines": {
 				"node": ">=20.19.1",
@@ -3848,9 +3848,9 @@
 			}
 		},
 		"node_modules/@wikimedia/codex-icons": {
-			"version": "2.3.4",
-			"resolved": "https://registry.npmjs.org/@wikimedia/codex-icons/-/codex-icons-2.3.4.tgz",
-			"integrity": "sha512-eRRYmqIyIbbiaDhiw+qdNNqQ4Npz04k6crSaqyWFS6Y4vh5Lrd3kbjk2uNZK3Tu0h+yz0mQmlMlBEOtb/r3dPw==",
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/@wikimedia/codex-icons/-/codex-icons-2.4.0.tgz",
+			"integrity": "sha512-BBtrzLR7r9ShxCMYfsx9XaKJu/peqt5Y/jtvWx3E2G5aL/Y/pIWAkv8NIvU+ztKklbHySLH5jSvVZVKxxvU0Ew==",
 			"dev": true,
 			"engines": {
 				"node": ">=20.19.1",
@@ -5491,14 +5491,14 @@
 			"dev": true
 		},
 		"node_modules/editorconfig": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz",
-			"integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==",
+			"version": "1.0.7",
+			"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.7.tgz",
+			"integrity": "sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==",
 			"dev": true,
 			"dependencies": {
 				"@one-ini/wasm": "0.1.1",
 				"commander": "^10.0.0",
-				"minimatch": "9.0.1",
+				"minimatch": "^9.0.1",
 				"semver": "^7.5.3"
 			},
 			"bin": {
@@ -5518,12 +5518,12 @@
 			}
 		},
 		"node_modules/editorconfig/node_modules/minimatch": {
-			"version": "9.0.1",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-			"integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -6235,12 +6235,12 @@
 			}
 		},
 		"node_modules/eslint-config-wikimedia/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -7440,9 +7440,9 @@
 			}
 		},
 		"node_modules/flatted": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-			"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+			"version": "3.4.1",
+			"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
+			"integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
 			"dev": true
 		},
 		"node_modules/for-in": {
@@ -10654,12 +10654,12 @@
 			}
 		},
 		"node_modules/js-beautify/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -11154,9 +11154,9 @@
 			}
 		},
 		"node_modules/minimatch": {
-			"version": "3.1.2",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-			"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+			"version": "3.1.5",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+			"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
 			"dev": true,
 			"dependencies": {
 				"brace-expansion": "^1.1.7"
diff --git a/package.json b/package.json
index 001cc8b..ca6a15e 100644
--- a/package.json
+++ b/package.json
@@ -16,8 +16,8 @@
 		"@vue/compiler-sfc": "3.5.13",
 		"@vue/test-utils": "2.4.6",
 		"@vue/vue3-jest": "29.2.6",
-		"@wikimedia/codex": "2.3.4",
-		"@wikimedia/codex-icons": "2.3.4",
+		"@wikimedia/codex": "2.4.0",
+		"@wikimedia/codex-icons": "2.4.0",
 		"babel-core": "^6.26.3",
 		"eslint-config-wikimedia": "0.32.3",
 		"eslint-plugin-jest": "27.2.1",
-- 
2.47.3

$ date
--- stdout ---
Sun Mar 15 07:52:23 UTC 2026

--- end ---
$ git clone file:///srv/git/mediawiki-extensions-DonationInterface.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 ---
f09f4f1f2018b55968e731627f140365915b1cd7 refs/heads/master

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@tootallnate/once": {
      "name": "@tootallnate/once",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1113977,
          "name": "@tootallnate/once",
          "dependency": "@tootallnate/once",
          "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
          "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
          "severity": "low",
          "cwe": [
            "CWE-705"
          ],
          "cvss": {
            "score": 3.3,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.0.1"
        }
      ],
      "effects": [
        "http-proxy-agent"
      ],
      "range": "<3.0.1",
      "nodes": [
        "node_modules/@tootallnate/once"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "babel-core": {
      "name": "babel-core",
      "severity": "critical",
      "isDirect": true,
      "via": [
        "babel-helpers",
        "babel-register",
        "babel-template",
        "babel-traverse",
        "json5"
      ],
      "effects": [
        "babel-register"
      ],
      "range": "5.8.20 - 7.0.0-beta.3",
      "nodes": [
        "node_modules/babel-core"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-helpers": {
      "name": "babel-helpers",
      "severity": "critical",
      "isDirect": false,
      "via": [
        "babel-template"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/babel-helpers"
      ],
      "fixAvailable": true
    },
    "babel-register": {
      "name": "babel-register",
      "severity": "high",
      "isDirect": false,
      "via": [
        "babel-core"
      ],
      "effects": [
        "babel-core"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-register"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-template": {
      "name": "babel-template",
      "severity": "critical",
      "isDirect": false,
      "via": [
        "babel-traverse"
      ],
      "effects": [
        "babel-helpers"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-template"
      ],
      "fixAvailable": true
    },
    "babel-traverse": {
      "name": "babel-traverse",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1096879,
          "name": "babel-traverse",
          "dependency": "babel-traverse",
          "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
          "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
          "severity": "critical",
          "cwe": [
            "CWE-184",
            "CWE-697"
          ],
          "cvss": {
            "score": 9.4,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
          },
          "range": "<7.23.2"
        }
      ],
      "effects": [
        "babel-core",
        "babel-template"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-traverse"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "editorconfig": {
      "name": "editorconfig",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch"
      ],
      "effects": [],
      "range": "1.0.3 - 1.0.4 || 2.0.0",
      "nodes": [
        "node_modules/editorconfig"
      ],
      "fixAvailable": true
    },
    "flatted": {
      "name": "flatted",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1114526,
          "name": "flatted",
          "dependency": "flatted",
          "title": "flatted vulnerable to unbounded recursion DoS in parse() revive phase",
          "url": "https://github.com/advisories/GHSA-25h7-pfq9-p65f",
          "severity": "high",
          "cwe": [
            "CWE-674"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<3.4.0"
        }
      ],
      "effects": [],
      "range": "<3.4.0",
      "nodes": [
        "node_modules/flatted"
      ],
      "fixAvailable": true
    },
    "grunt": {
      "name": "grunt",
      "severity": "high",
      "isDirect": true,
      "via": [
        "minimatch"
      ],
      "effects": [
        "grunt-eslint"
      ],
      "range": ">=0.4.0-a",
      "nodes": [
        "node_modules/grunt"
      ],
      "fixAvailable": {
        "name": "grunt",
        "version": "0.3.17",
        "isSemVerMajor": true
      }
    },
    "grunt-eslint": {
      "name": "grunt-eslint",
      "severity": "high",
      "isDirect": true,
      "via": [
        "grunt"
      ],
      "effects": [],
      "range": "<=1.0.0 || >=18.1.0",
      "nodes": [
        "node_modules/grunt-eslint"
      ],
      "fixAvailable": {
        "name": "grunt-eslint",
        "version": "18.0.0",
        "isSemVerMajor": true
      }
    },
    "http-proxy-agent": {
      "name": "http-proxy-agent",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@tootallnate/once"
      ],
      "effects": [
        "jsdom"
      ],
      "range": "4.0.1 - 5.0.0",
      "nodes": [
        "node_modules/http-proxy-agent"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jest-environment-jsdom": {
      "name": "jest-environment-jsdom",
      "severity": "low",
      "isDirect": true,
      "via": [
        "jsdom"
      ],
      "effects": [],
      "range": "27.0.1 - 30.0.0-rc.1",
      "nodes": [
        "node_modules/jest-environment-jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "http-proxy-agent"
      ],
      "effects": [
        "jest-environment-jsdom"
      ],
      "range": "16.6.0 - 22.1.0",
      "nodes": [
        "node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1096543,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": "<1.0.2"
        }
      ],
      "effects": [
        "babel-core"
      ],
      "range": "<1.0.2",
      "nodes": [
        "node_modules/babel-core/node_modules/json5"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "minimatch": {
      "name": "minimatch",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1113459,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
          "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.1.3"
        },
        {
          "source": 1113465,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
          "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": ">=9.0.0 <9.0.6"
        },
        {
          "source": 1113538,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments",
          "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj",
          "severity": "high",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<3.1.3"
        },
        {
          "source": 1113544,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments",
          "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj",
          "severity": "high",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=9.0.0 <9.0.7"
        },
        {
          "source": 1113546,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions",
          "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<3.1.4"
        },
        {
          "source": 1113552,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions",
          "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=9.0.0 <9.0.7"
        }
      ],
      "effects": [
        "editorconfig",
        "grunt"
      ],
      "range": "<=3.1.3 || 9.0.0 - 9.0.6",
      "nodes": [
        "node_modules/@stylistic/eslint-plugin/node_modules/minimatch",
        "node_modules/editorconfig/node_modules/minimatch",
        "node_modules/eslint-config-wikimedia/node_modules/minimatch",
        "node_modules/grunt/node_modules/minimatch",
        "node_modules/js-beautify/node_modules/minimatch",
        "node_modules/minimatch"
      ],
      "fixAvailable": {
        "name": "grunt",
        "version": "0.3.17",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 4,
      "moderate": 0,
      "high": 7,
      "critical": 4,
      "total": 15
    },
    "dependencies": {
      "prod": 1,
      "dev": 1122,
      "optional": 3,
      "peer": 2,
      "peerOptional": 0,
      "total": 1122
    }
  }
}

--- 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: 79 installs, 0 updates, 0 removals
  - Locking addshore/psr-6-mediawiki-bagostuff-adapter (0.1)
  - Locking amzn/login-and-pay-with-amazon-sdk-php (2.5.0)
  - Locking brick/math (0.14.8)
  - Locking brick/money (0.10.3)
  - Locking clio/clio (0.1.8)
  - Locking coderkungfu/php-queue (1.0.2)
  - Locking composer/ca-bundle (1.5.10)
  - Locking composer/pcre (3.3.2)
  - Locking composer/semver (3.4.4)
  - Locking composer/spdx-licenses (1.5.9)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking corneltek/getoptionkit (2.7.3)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.2.0)
  - Locking doctrine/deprecations (1.1.6)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking geoip2/geoip2 (v2.13.0)
  - Locking gr4vy/gr4vy-php (v0.27.0)
  - Locking guzzlehttp/guzzle (7.10.0)
  - Locking guzzlehttp/promises (2.3.0)
  - Locking guzzlehttp/psr7 (2.9.0)
  - Locking lcobucci/clock (3.3.1)
  - Locking lcobucci/jwt (4.3.0)
  - Locking maxmind-db/reader (v1.13.1)
  - Locking maxmind/minfraud (v1.23.0)
  - Locking maxmind/web-service-common (v0.9.0)
  - Locking mediawiki/mediawiki-codesniffer (v49.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.18.0)
  - Locking mediawiki/minus-x (2.0.1)
  - Locking mediawiki/phan-taint-check-plugin (8.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking monolog/monolog (2.11.0)
  - Locking netresearch/jsonmapper (v4.5.0)
  - Locking paragonie/constant_time_encoding (v3.1.3)
  - Locking paragonie/random_compat (v9.99.100)
  - Locking phan/phan (5.5.2)
  - 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 (5.6.6)
  - Locking phpdocumentor/type-resolver (1.12.0)
  - Locking phpmailer/phpmailer (v6.12.0)
  - Locking phpseclib/phpseclib (3.0.49)
  - Locking phpstan/phpdoc-parser (2.3.2)
  - Locking predis/predis (v1.1.10)
  - Locking psr/cache (1.0.1)
  - Locking psr/clock (1.0.0)
  - Locking psr/container (2.0.2)
  - Locking psr/http-client (1.0.3)
  - Locking psr/http-factory (1.1.0)
  - Locking psr/http-message (2.0)
  - Locking psr/log (1.1.4)
  - Locking ralouphie/getallheaders (3.0.3)
  - Locking relisten/forceutf8 (1.1.0)
  - Locking respect/stringifier (1.0.0)
  - Locking respect/validation (2.4.12)
  - Locking sabre/event (5.1.7)
  - Locking squizlabs/php_codesniffer (3.13.5)
  - Locking symfony/console (v7.4.7)
  - Locking symfony/deprecation-contracts (v3.6.0)
  - Locking symfony/http-foundation (v6.4.35)
  - Locking symfony/polyfill-ctype (v1.33.0)
  - Locking symfony/polyfill-intl-grapheme (v1.33.0)
  - Locking symfony/polyfill-intl-normalizer (v1.33.0)
  - Locking symfony/polyfill-mbstring (v1.33.0)
  - Locking symfony/polyfill-php80 (v1.33.0)
  - Locking symfony/polyfill-php83 (v1.33.0)
  - Locking symfony/service-contracts (v3.6.1)
  - Locking symfony/string (v7.4.6)
  - Locking symfony/yaml (v7.4.6)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (2.1.6)
  - Locking whichbrowser/parser (v2.1.8)
  - Locking wikimedia/remex-html (5.1.0)
  - Locking wikimedia/smash-pig (v1.2.2.15)
  - Locking wikimedia/testing-access-wrapper (4.0.0)
  - Locking wikimedia/utfnormal (4.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 79 installs, 0 updates, 0 removals
  - Downloading brick/money (0.10.3)
  - Syncing amzn/login-and-pay-with-amazon-sdk-php (2.5.0) into cache
  - Downloading wikimedia/smash-pig (v1.2.2.15)
 0/2 [>---------------------------]   0%
 1/2 [==============>-------------]  50%
 2/2 [============================] 100%
  - Installing squizlabs/php_codesniffer (3.13.5): Extracting archive
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.2.0): Extracting archive
  - Installing psr/cache (1.0.1): Extracting archive
  - Installing addshore/psr-6-mediawiki-bagostuff-adapter (0.1): Extracting archive
  - Installing brick/math (0.14.8): Extracting archive
  - Installing clio/clio (0.1.8): Extracting archive
  - Installing composer/pcre (3.3.2): Extracting archive
  - Installing symfony/deprecation-contracts (v3.6.0): Extracting archive
  - Installing psr/http-message (2.0): Extracting archive
  - Installing psr/http-client (1.0.3): Extracting archive
  - Installing ralouphie/getallheaders (3.0.3): Extracting archive
  - Installing psr/http-factory (1.1.0): Extracting archive
  - Installing guzzlehttp/psr7 (2.9.0): Extracting archive
  - Installing guzzlehttp/promises (2.3.0): Extracting archive
  - Installing guzzlehttp/guzzle (7.10.0): Extracting archive
  - Installing psr/clock (1.0.0): Extracting archive
  - Installing lcobucci/clock (3.3.1): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.33.0): Extracting archive
  - Installing lcobucci/jwt (4.3.0): Extracting archive
  - Installing maxmind-db/reader (v1.13.1): Extracting archive
  - Installing respect/stringifier (1.0.0): Extracting archive
  - Installing respect/validation (2.4.12): Extracting archive
  - Installing composer/ca-bundle (1.5.10): Extracting archive
  - Installing maxmind/web-service-common (v0.9.0): Extracting archive
  - Installing geoip2/geoip2 (v2.13.0): Extracting archive
  - Installing maxmind/minfraud (v1.23.0): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.2.2): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.4.0): Extracting archive
  - Installing composer/spdx-licenses (1.5.9): Extracting archive
  - Installing composer/semver (3.4.4): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v49.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/polyfill-php80 (v1.33.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.33.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.33.0): Extracting archive
  - Installing symfony/polyfill-ctype (v1.33.0): Extracting archive
  - Installing symfony/string (v7.4.6): Extracting archive
  - Installing psr/container (2.0.2): Extracting archive
  - Installing symfony/service-contracts (v3.6.1): Extracting archive
  - Installing symfony/console (v7.4.7): Extracting archive
  - Installing sabre/event (5.1.7): Extracting archive
  - Installing netresearch/jsonmapper (v4.5.0): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (2.1.6): 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 (1.12.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.6.6): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.5.2): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (8.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.18.0): Extracting archive
  - Installing mediawiki/minus-x (2.0.1): Extracting archive
  - Installing monolog/monolog (2.11.0): Extracting archive
  - Installing paragonie/constant_time_encoding (v3.1.3): Extracting archive
  - Installing paragonie/random_compat (v9.99.100): 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
  - Installing relisten/forceutf8 (1.1.0): Extracting archive
  - Installing symfony/polyfill-php83 (v1.33.0): Extracting archive
  - Installing whichbrowser/parser (v2.1.8): Extracting archive
  - Installing wikimedia/utfnormal (4.0.0): Extracting archive
  - Installing wikimedia/remex-html (5.1.0): Extracting archive
  - Installing symfony/yaml (v7.4.6): Extracting archive
  - Installing symfony/http-foundation (v6.4.35): Extracting archive
  - Installing predis/predis (v1.1.10): Extracting archive
  - Installing phpseclib/phpseclib (3.0.49): Extracting archive
  - Installing phpmailer/phpmailer (v6.12.0): Extracting archive
  - Installing gr4vy/gr4vy-php (v0.27.0): Extracting archive
  - Installing corneltek/getoptionkit (2.7.3): Extracting archive
  - Installing coderkungfu/php-queue (1.0.2): Extracting archive
  - Installing brick/money (0.10.3): Extracting archive
  - Installing amzn/login-and-pay-with-amazon-sdk-php (2.5.0): Cloning 0c923fe992 from cache
  - Installing wikimedia/smash-pig (v1.2.2.15): Extracting archive
  - Installing wikimedia/testing-access-wrapper (4.0.0): Extracting archive
  0/76 [>---------------------------]   0%
 27/76 [=========>------------------]  35%
 45/76 [================>-----------]  59%
 60/76 [======================>-----]  78%
 75/76 [===========================>]  98%
 76/76 [============================] 100%
34 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating optimized autoload files
32 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:@wikimedia/codex from 2.3.4 -> 2.4.0
Upgrading n:@wikimedia/codex-icons from 2.3.4 -> 2.4.0
$ /usr/bin/npm install
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { npm: '>=10.8.2', node: '>=20.19.1' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { npm: '>=10.8.2', node: '>=20.19.1' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated osenv@0.1.5: This package is no longer supported.
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1121 packages, and audited 1122 packages in 14s

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

15 vulnerabilities (4 low, 7 high, 4 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

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

--- end ---
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated osenv@0.1.5: This package is no longer supported.
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1121 packages, and audited 1122 packages in 22s

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

15 vulnerabilities (4 low, 7 high, 4 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
PASS tests/jest/views/amount-downgrade.test.js (5.082 s)
PASS tests/jest/views/update-donations.test.js (5.221 s)
PASS tests/jest/views/cancel-donations.test.js (5.516 s)
PASS tests/jest/views/login.test.js
PASS tests/jest/components/donations_list_table.test.js
PASS tests/jest/views/annual-conversion.test.js
PASS tests/jest/components/recurring_contribution.test.js
PASS tests/jest/views/pause-donations.test.js
PASS tests/jest/components/recurring-cancel-form.test.js
PASS tests/jest/components/recurring-cancel-confirmation.test.js
PASS tests/jest/components/donations_history.test.js
PASS tests/jest/components/recurring-update-form.test.js
PASS tests/jest/components/recurring_contribution_summary.test.js
PASS tests/jest/components/header.test.js
PASS tests/jest/views/home.test.js
PASS tests/jest/components/recurring-pause-form.test.js
PASS tests/jest/components/app.test.js
PASS tests/jest/components/recurring-cancel-success.test.js
PASS tests/jest/routes/router.test.js
PASS tests/jest/components/popup_link.test.js
PASS tests/jest/components/contact_details.test.js
PASS tests/jest/components/recurring-cancel-option-container.test.js
PASS tests/jest/components/recurring-update-success.test.js
PASS tests/jest/components/onetime_contribution.test.js
PASS tests/jest/components/recurring-pause-success.test.js
PASS tests/jest/components/greeting_component.test.js
PASS tests/jest/components/feedback-survey_component.test.js
PASS tests/jest/components/error-component.test.js

Test Suites: 28 passed, 28 total
Tests:       78 passed, 78 total
Snapshots:   0 total
Time:        10.442 s
Ran all test suites.
--- stdout ---

> test
> grunt test && npm run test:unit

Running "eslint:all" (eslint) task

/src/repo/Gruntfile.js
  37:11  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/adyen_gateway/forms/adyen.js
    1:26  warning  'Promise' is already defined as a built-in global variable           no-redeclare
    5:3   warning  'configFromServer' is never reassigned. Use 'const' instead          prefer-const
    6:3   warning  'payment_method' is never reassigned. Use 'const' instead            prefer-const
    8:3   warning  'country' is never reassigned. Use 'const' instead                   prefer-const
    9:3   warning  'language' is never reassigned. Use 'const' instead                  prefer-const
   17:3   warning  'GOOGLEPAY_COMPONENT_TYPE' is never reassigned. Use 'const' instead  prefer-const
   18:3   warning  'ACH_GET_DONOR_ADDRESS' is never reassigned. Use 'const' instead     prefer-const
   25:1   warning  Missing JSDoc @return type                                           jsdoc/require-returns-type
   66:5   warning  Unexpected var, use let or const instead                             no-var
   82:23  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
   84:11  warning  'bContact' is never reassigned. Use 'const' instead                  prefer-const
   85:8   warning  'sContact' is never reassigned. Use 'const' instead                  prefer-const
  133:5   warning  Unexpected var, use let or const instead                             no-var
  164:23  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  223:34  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  227:14  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  313:2   warning  'submitPromise' is never reassigned. Use 'const' instead             prefer-const
  313:22  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  401:6   warning  ES2015 'Object.assign' method is forbidden                           es-x/no-object-assign
  540:4   warning  ES2015 'Object.assign' method is forbidden                           es-x/no-object-assign
  550:4   warning  'containerName' is never reassigned. Use 'const' instead             prefer-const
  554:3   warning  'component_type' is never reassigned. Use 'const' instead            prefer-const
  573:3   warning  'oldShowErrors' is never reassigned. Use 'const' instead             prefer-const
  595:3   warning  'config' is never reassigned. Use 'const' instead                    prefer-const
  603:3   warning  'checkoutPromise' is never reassigned. Use 'const' instead           prefer-const
  627:4   warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  654:4   warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise

/src/repo/amazon_gateway/amazon.js
    3:6   warning  'clientId' is never reassigned. Use 'const' instead                   prefer-const
    4:3   warning  'sellerId' is never reassigned. Use 'const' instead                   prefer-const
    5:3   warning  'sandbox' is never reassigned. Use 'const' instead                    prefer-const
    6:3   warning  'returnUrl' is never reassigned. Use 'const' instead                  prefer-const
    7:3   warning  'widgetScript' is never reassigned. Use 'const' instead               prefer-const
    8:3   warning  'loginScript' is never reassigned. Use 'const' instead                prefer-const
    9:3   warning  'failPage' is never reassigned. Use 'const' instead                   prefer-const
   10:3   warning  'isRecurring' is never reassigned. Use 'const' instead                prefer-const
   14:3   warning  'validTokenPattern' is never reassigned. Use 'const' instead          prefer-const
   14:23  warning  Use a regular expression literal instead of the 'RegExp' constructor  prefer-regex-literals
   22:3   warning  'CARD_SELECT_DELAY' is never reassigned. Use 'const' instead          prefer-const
   98:2   warning  'accessToken' is never reassigned. Use 'const' instead                prefer-const
   99:2   warning  'loginError' is never reassigned. Use 'const' instead                 prefer-const
  129:12  warning  Avoid direct access to document.cookie. Use mw.cookie instead         mediawiki/no-cookie
  268:8   warning  Selector extensions are not allowed                                   no-jquery/no-sizzle

/src/repo/braintree_gateway/forms/braintree.js
  10:6  warning  'di' is never reassigned. Use 'const' instead              prefer-const
  12:3  warning  'payment_method' is never reassigned. Use 'const' instead  prefer-const
  13:3  warning  'scripts' is never reassigned. Use 'const' instead         prefer-const

/src/repo/dlocal_gateway/forms/dlocal.js
  27:7  warning  'dlocalInstance' is never reassigned. Use 'const' instead   prefer-const
  28:4  warning  'fields' is never reassigned. Use 'const' instead           prefer-const
  33:4  warning  'commonStyle' is never reassigned. Use 'const' instead      prefer-const
  49:3  warning  'cardField' is never reassigned. Use 'const' instead        prefer-const
  55:3  warning  'expirationField' is never reassigned. Use 'const' instead  prefer-const
  61:3  warning  'cvvField' is never reassigned. Use 'const' instead         prefer-const

/src/repo/gravy_gateway/forms/gravy.js
   13:2   warning  'configFromServer' is never reassigned. Use 'const' instead                          prefer-const
   14:2   warning  'sessionId' is never reassigned. Use 'const' instead                                 prefer-const
   15:2   warning  'environment' is never reassigned. Use 'const' instead                               prefer-const
   16:2   warning  'gravyId' is never reassigned. Use 'const' instead                                   prefer-const
   17:2   warning  'redirectPaypal' is never reassigned. Use 'const' instead                            prefer-const
   18:2   warning  'showRedirectText' is never reassigned. Use 'const' instead                          prefer-const
   21:2   warning  'language' is never reassigned. Use 'const' instead                                  prefer-const
   22:2   warning  'country' is never reassigned. Use 'const' instead                                   prefer-const
   23:2   warning  'isIndia' is never reassigned. Use 'const' instead                                   prefer-const
   24:2   warning  'applePayPaySessionVersionNumber' is never reassigned. Use 'const' instead           prefer-const
  128:15  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  130:25  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  130:49  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  273:8   warning  'extraData' is already declared in the upper scope on line 12 column 2               no-shadow
  442:43  warning  'appleSession' is already declared in the upper scope on line 20 column 2            no-shadow

/src/repo/modules/ext.donationInterface.donorPortal/components/DonationsDisclaimerComponent.vue
  4:34  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  6:34  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/DonationsHistory.vue
  128:25  warning  'panel' is already declared in the upper scope on line 138 column 10  no-shadow

/src/repo/modules/ext.donationInterface.donorPortal/components/DonationsListTable.vue
  21:22  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  41:37  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionAnnualConversionForm.vue
   35:37  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
   55:37  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  100:34  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionAnnualConversionSuccess.vue
  13:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  15:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionCancelSuccess.vue
  13:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionComponent.vue
  25:29  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  48:5   warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionPauseSuccess.vue
  13:31  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionUpdateSuccess.vue
  15:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/views/LoginView.vue
   8:6   warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  37:7   warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  66:8   warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  76:17  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/iframe.liberator.js
  1:10  warning  'self' is already defined as a built-in global variable  no-redeclare

/src/repo/modules/js/ext.donationInterface.applePayHelper.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/modules/js/ext.donationInterface.employerAutoComplete.js
  28:21  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/js/ext.donationInterface.errorLog.js
  16:3  warning  'postdata' is never reassigned. Use 'const' instead  prefer-const

/src/repo/modules/js/ext.donationInterface.forms.js
    4:1   warning  Missing JSDoc @param "$" type                        jsdoc/require-param-type
    5:1   warning  Missing JSDoc @param "mw" type                       jsdoc/require-param-type
   74:27  warning  Selector extensions are not allowed                  no-jquery/no-sizzle
   90:12  warning  '$element' is never reassigned. Use 'const' instead  prefer-const
  107:1   warning  Missing JSDoc @param "checkboxName" type             jsdoc/require-param-type
  111:12  warning  '$element' is never reassigned. Use 'const' instead  prefer-const
  126:1   warning  The type 'result' is undefined                       jsdoc/no-undefined-types
  148:3   warning  'sendData' is never reassigned. Use 'const' instead  prefer-const
  187:4   warning  ES2015 'Object.assign' method is forbidden           es-x/no-object-assign
  239:14  warning  ES2015 'Promise' class is forbidden                  es-x/no-promise
  269:10  warning  ES2015 'Promise' class is forbidden                  es-x/no-promise
  283:4   warning  ES2015 'Promise' class is forbidden                  es-x/no-promise
  321:10  warning  Selector extensions are not allowed                  no-jquery/no-sizzle
  325:30  warning  Selector extensions are not allowed                  no-jquery/no-sizzle

/src/repo/modules/js/ext.donationInterface.jaVariant02.js
  8:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type
  9:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type

/src/repo/modules/js/ext.donationInterface.monthlyConvert.js
    2:6   warning  'mc' is never reassigned. Use 'const' instead                         prefer-const
    6:3   warning  'tyUrl' is never reassigned. Use 'const' instead                      prefer-const
    9:3   warning  'convertAmounts' is never reassigned. Use 'const' instead             prefer-const
   17:3   warning  'numAmounts' is never reassigned. Use 'const' instead                 prefer-const
   37:49  warning  'currency' is already declared in the upper scope on line 3 column 3  no-shadow
   78:39  warning  'currency' is already declared in the upper scope on line 3 column 3  no-shadow
  147:51  warning  'currency' is already declared in the upper scope on line 3 column 3  no-shadow
  148:7   warning  'rates' is never reassigned. Use 'const' instead                      prefer-const
  149:4   warning  'amountRules' is never reassigned. Use 'const' instead                prefer-const
  151:4   warning  '$smallAmountMessage' is never reassigned. Use 'const' instead        prefer-const
  161:3   warning  'formattedMin' is never reassigned. Use 'const' instead               prefer-const
  177:4   warning  'locale' is never reassigned. Use 'const' instead                     prefer-const
  180:3   warning  'presetAmount' is never reassigned. Use 'const' instead               prefer-const

/src/repo/modules/js/ext.donationInterface.monthlyConvertAnnual.js
   3:7   warning  'mc' is never reassigned. Use 'const' instead                        prefer-const
   3:31  warning  'originalGetSendData' is never reassigned. Use 'const' instead       prefer-const
   4:4   warning  'originalAmount' is never reassigned. Use 'const' instead            prefer-const
   5:4   warning  '$otherAmountMonthlyInput' is never reassigned. Use 'const' instead  prefer-const
   5:62  warning  '$otherAmountAnnualInput' is never reassigned. Use 'const' instead   prefer-const
   6:4   warning  '$otherMonthlySubmit' is never reassigned. Use 'const' instead       prefer-const
   6:60  warning  '$otherAnnualSubmit' is never reassigned. Use 'const' instead        prefer-const
   7:4   warning  '$smallAmountMessage' is never reassigned. Use 'const' instead       prefer-const
  15:3   warning  'originalAmountFormatted' is never reassigned. Use 'const' instead   prefer-const

/src/repo/modules/js/ext.donationInterface.monthlyConvertMultiplier.js
  3:7  warning  'mc' is never reassigned. Use 'const' instead              prefer-const
  4:3  warning  'originalAmount' is never reassigned. Use 'const' instead  prefer-const

/src/repo/modules/js/ext.donationInterface.monthlyConvert_011.js
  3:7  warning  'mc' is never reassigned. Use 'const' instead              prefer-const
  4:4  warning  'locale' is never reassigned. Use 'const' instead          prefer-const
  5:3  warning  'originalAmount' is never reassigned. Use 'const' instead  prefer-const
  6:3  warning  'currency' is never reassigned. Use 'const' instead        prefer-const
  7:3  warning  'presetAmount' is never reassigned. Use 'const' instead    prefer-const
  8:3  warning  'formattedAsk' is never reassigned. Use 'const' instead    prefer-const

/src/repo/modules/js/ext.donationInterface.recurUpgrade.js
   3:7  warning  '$submitButton' is never reassigned. Use 'const' instead      prefer-const
   4:4  warning  '$amountField' is never reassigned. Use 'const' instead       prefer-const
   5:4  warning  '$otherAmountField' is never reassigned. Use 'const' instead  prefer-const
   6:4  warning  '$totalMessage' is never reassigned. Use 'const' instead      prefer-const
   7:4  warning  '$newTotalAmount' is never reassigned. Use 'const' instead    prefer-const
   8:4  warning  '$form' is never reassigned. Use 'const' instead              prefer-const
   9:4  warning  'originalAmount' is never reassigned. Use 'const' instead     prefer-const
  10:4  warning  'currency' is never reassigned. Use 'const' instead           prefer-const
  11:4  warning  'maximum' is never reassigned. Use 'const' instead            prefer-const
  12:4  warning  'nextDateFormatted' is never reassigned. Use 'const' instead  prefer-const
  14:4  warning  'preSelectAmount' is never reassigned. Use 'const' instead    prefer-const
  38:4  warning  'valueIsValid' is never reassigned. Use 'const' instead       prefer-const

/src/repo/modules/js/ext.donationInterface.validation.js
   7:1   warning  Missing JSDoc @param "$" type                                      jsdoc/require-param-type
   8:1   warning  Missing JSDoc @param "mw" type                                     jsdoc/require-param-type
  11:6   warning  'di' is never reassigned. Use 'const' instead                      prefer-const
  13:3   warning  'mcDomains' is never reassigned. Use 'const' instead               prefer-const
  33:3   warning  'multiCountrySubdomains' is never reassigned. Use 'const' instead  prefer-const
  34:3   warning  'countryTlds' is never reassigned. Use 'const' instead             prefer-const
  40:26  warning  'i' is already declared in the upper scope on line 39 column 36    no-shadow

/src/repo/modules/validate_input.js
    1:1   warning  Missing JSDoc @return declaration                                                    jsdoc/require-returns
    9:3   warning  'rates' is never reassigned. Use 'const' instead                                     prefer-const
   10:3   warning  'amountRules' is never reassigned. Use 'const' instead                               prefer-const
   14:3   warning  '$amountMsg' is never reassigned. Use 'const' instead                                prefer-const
   15:3   warning  'threeDecimalCurrencies' is never reassigned. Use 'const' instead                    prefer-const
   86:3   warning  'invalids' is never reassigned. Use 'const' instead                                  prefer-const
   87:3   warning  'rules' is never reassigned. Use 'const' instead                                     prefer-const
  105:27  warning  'value' is already declared in the upper scope on line 82 column 6                   no-shadow
  107:14  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  113:23  warning  'i' is already declared in the upper scope on line 85 column 3                       no-shadow
  145:2   warning  'countryField' is never reassigned. Use 'const' instead                              prefer-const
  168:2   warning  'emailAdd' is never reassigned. Use 'const' instead                                  prefer-const
  220:2   warning  'phoneAdd' is never reassigned. Use 'const' instead                                  prefer-const
  241:11  warning  Avoid direct access to document.cookie. Use mw.cookie instead                        mediawiki/no-cookie
  242:16  warning  Avoid direct access to document.cookie. Use mw.cookie instead                        mediawiki/no-cookie
  243:12  warning  Avoid direct access to document.cookie. Use mw.cookie instead                        mediawiki/no-cookie

/src/repo/paypal_ec_gateway/forms/js/paypal.js
  2:6  warning  'di' is never reassigned. Use 'const' instead     prefer-const
  3:3  warning  'rules' is never reassigned. Use 'const' instead  prefer-const

/src/repo/tests/jest/components/recurring_contribution.test.js
  55:19  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign
  69:19  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/amount-downgrade.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/annual-conversion.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/cancel-donations.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/pause-donations.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/update-donations.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

✖ 181 problems (0 errors, 181 warnings)


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

Running "banana:DonationInterface" (banana) task
>> The "fr" translation has 1 translation with trailing whitespace:
>> * donorportal-coming-soon
>> 10 message directories checked.

Done.

> test:unit
> jest

----------------------------------------------------|---------|----------|---------|---------|-----------------------
File                                                | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s     
----------------------------------------------------|---------|----------|---------|---------|-----------------------
All files                                           |    94.2 |    87.01 |   87.45 |   94.17 |                       
 ext.donationInterface.donorPortal                  |   75.34 |    64.15 |   77.77 |   75.34 |                       
  apiPostAction.js                                  |     100 |      100 |     100 |     100 |                       
  normalizeInput.js                                 |   63.88 |    59.45 |      75 |   63.88 | 4,21,32-35,54-66      
  router.js                                         |      80 |    71.42 |      50 |      80 | 12-13,19-20,52        
  trackingParams.js                                 |     100 |      100 |     100 |     100 |                       
 ext.donationInterface.donorPortal/components       |   95.01 |    91.61 |   84.61 |   95.01 |                       
  App.vue                                           |     100 |      100 |     100 |     100 |                       
  DonationsDisclaimerComponent.vue                  |     100 |      100 |     100 |     100 |                       
  DonationsHistory.vue                              |   94.44 |      100 |      75 |   94.44 | 16-23                 
  DonationsListTable.vue                            |   89.28 |    94.44 |   73.33 |   89.28 | 23,40,137-153,183-199 
  DonorCardComponent.vue                            |     100 |       90 |     100 |     100 | 78                    
  DonorContactDetails.vue                           |   93.93 |    86.36 |     100 |   93.93 | 46,48                 
  EndowmentInformationComponent.vue                 |     100 |      100 |     100 |     100 |                       
  ErrorComponent.vue                                |     100 |      100 |     100 |     100 |                       
  FeedbackSurveyComponent.vue                       |     100 |      100 |     100 |     100 |                       
  GreetingComponent.vue                             |     100 |      100 |     100 |     100 |                       
  Header.vue                                        |   87.17 |    88.23 |   66.66 |   87.17 | 30-37,134             
  OnetimeContribution.vue                           |     100 |      100 |     100 |     100 |                       
  PopupLink.vue                                     |     100 |      100 |     100 |     100 |                       
  RadioButtonInput.vue                              |   94.44 |      100 |      75 |   94.44 | 63                    
  RecurringContributionAnnualConversionForm.vue     |   93.02 |    78.04 |      70 |   93.02 | 19,50,217-245,262     
  RecurringContributionAnnualConversionSuccess.vue  |      96 |      100 |   83.33 |      96 | 17                    
  RecurringContributionCancelAltOptionContainer.vue |     100 |      100 |   83.33 |     100 |                       
  RecurringContributionCancelConfirmation.vue       |   97.22 |       90 |      90 |   97.22 | 22                    
  RecurringContributionCancelForm.vue               |   94.23 |    91.66 |   85.71 |   94.23 | 24,52,55              
  RecurringContributionCancelSuccess.vue            |   96.42 |       50 |     100 |   96.42 | 28                    
  RecurringContributionComponent.vue                |   88.23 |    95.08 |   88.23 |   88.23 | 43-46,52,57,112,180   
  RecurringContributionPauseForm.vue                |   97.14 |      100 |    87.5 |   97.14 | 22                    
  RecurringContributionPauseSuccess.vue             |   94.44 |      100 |      75 |   94.44 | 17                    
  RecurringContributionSummary.vue                  |     100 |      100 |     100 |     100 |                       
  RecurringContributionUpdateForm.vue               |   96.72 |    89.18 |   83.33 |   96.72 | 85,183                
  RecurringContributionUpdateSuccess.vue            |     100 |      100 |     100 |     100 |                       
  RelatedContentComponent.vue                       |   94.11 |      100 |      60 |   94.11 | 99-105                
 ext.donationInterface.donorPortal/views            |   96.33 |     83.9 |   97.01 |   96.27 |                       
  AmountDowngrade.vue                               |   97.61 |       75 |     100 |   97.56 | 32                    
  AnnualConversion.vue                              |    97.5 |       75 |     100 |   97.43 | 32                    
  CancelDonations.vue                               |   98.36 |    85.71 |     100 |   98.33 | 35                    
  Home.vue                                          |   96.77 |       90 |     100 |   96.77 | 38                    
  LoginView.vue                                     |   91.42 |    89.65 |   90.47 |   91.42 | 40-42,77,85,192       
  PauseDonations.vue                                |   97.61 |       75 |     100 |   97.56 | 30                    
  UpdateDonations.vue                               |   97.56 |       80 |     100 |    97.5 | 31                    
----------------------------------------------------|---------|----------|---------|---------|-----------------------

--- end ---
Upgrading c:mediawiki/mediawiki-codesniffer from 49.0.0 -> 50.0.0
Upgrading c:mediawiki/mediawiki-phan-config from 0.18.0 -> 0.20.0
$ /usr/bin/composer update
--- stderr ---
Loading composer repositories with package information
                                                      Updating dependencies
Lock file operations: 3 installs, 8 updates, 4 removals
  - Removing felixfbecker/advanced-json-rpc (v3.2.1)
  - Removing microsoft/tolerant-php-parser (v0.1.2)
  - Removing symfony/polyfill-php80 (v1.33.0)
  - Removing tysonandre/var_representation_polyfill (0.1.3)
  - Locking danog/advanced-json-rpc (v3.2.3)
  - Upgrading mediawiki/mediawiki-codesniffer (v49.0.0 => v50.0.0)
  - Upgrading mediawiki/mediawiki-phan-config (0.18.0 => 0.20.0)
  - Upgrading mediawiki/phan-taint-check-plugin (8.0.0 => 9.1.0)
  - Upgrading netresearch/jsonmapper (v4.5.0 => v5.0.1)
  - Upgrading phan/phan (5.5.2 => 6.0.2)
  - Locking phan/tolerant-php-parser (v0.2.0)
  - Locking phan/var_representation_polyfill (0.1.4)
  - Upgrading phpdocumentor/reflection-docblock (5.6.6 => 6.0.2)
  - Upgrading phpdocumentor/type-resolver (1.12.0 => 2.0.0)
  - Upgrading sabre/event (5.1.7 => 6.0.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 3 installs, 8 updates, 4 removals
    0 [>---------------------------]    0 [->--------------------------]
  - Removing tysonandre/var_representation_polyfill (0.1.3)
  - Removing symfony/polyfill-php80 (v1.33.0)
  - Removing microsoft/tolerant-php-parser (v0.1.2)
  - Removing felixfbecker/advanced-json-rpc (v3.2.1)
  - Upgrading mediawiki/mediawiki-codesniffer (v49.0.0 => v50.0.0): Extracting archive
  - Upgrading sabre/event (5.1.7 => 6.0.1): Extracting archive
  - Installing phan/var_representation_polyfill (0.1.4): Extracting archive
  - Installing phan/tolerant-php-parser (v0.2.0): Extracting archive
  - Upgrading netresearch/jsonmapper (v4.5.0 => v5.0.1): Extracting archive
  - Upgrading phpdocumentor/type-resolver (1.12.0 => 2.0.0): Extracting archive
  - Upgrading phpdocumentor/reflection-docblock (5.6.6 => 6.0.2): Extracting archive
  - Installing danog/advanced-json-rpc (v3.2.3): Extracting archive
  - Upgrading phan/phan (5.5.2 => 6.0.2): Extracting archive
  - Upgrading mediawiki/phan-taint-check-plugin (8.0.0 => 9.1.0): Extracting archive
  - Upgrading mediawiki/mediawiki-phan-config (0.18.0 => 0.20.0): Extracting archive
  0/11 [>---------------------------]   0%
 10/11 [=========================>--]  90%
 11/11 [============================] 100%
Generating optimized autoload files
31 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: {'Squiz.Classes.ValidClassName.NotCamelCaps', 'PSR12.Properties.ConstantVisibility.NotFound', 'MediaWiki.Files.ClassMatchesFilename.NotMatch', 'MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment', 'MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName'}
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":105,"warnings":161,"fixable":0},"files":{"\/src\/repo\/dlocal_gateway\/dlocal_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DlocalGatewayResult' does not match filename 'dlocal_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/dlocal_gateway\/dlocal_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/LogPrefixProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Simple3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorFullName.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/braintree_gateway\/braintree_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'BraintreeGatewayResult' does not match filename 'braintree_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/braintree_gateway\/braintree_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/DonationInterface.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/paypal_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/FallbackLogPrefixer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/PayPalCountry.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":7,"column":23},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":8,"column":23}]},"\/src\/repo\/paypal_ec_gateway\/paypal_express_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'PaypalExpressGatewayResult' does not match filename 'paypal_express_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/gateway_common\/CurrencyCountryRule.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PayPalAmount.php":{"errors":1,"warnings":0,"messages":[{"message":"Method name \"is_fractional_currency\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":11,"column":19}]},"\/src\/repo\/gateway_common\/ResponseProcessingException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/RecurringConversion.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/PaypalExpressReturnUrl.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ReturnUrl.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationLogProcessor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/paypal_express_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'PaypalExpressGateway' does not match filename 'paypal_express_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/gateway_common\/DonorLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/UnstagingHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorLocale.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ConfigurationReader.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/DonorPortal\/ActivityTrackingTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestCancelRecurring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ErrorState.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationLoggerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StagingHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/extras.body.php":{"errors":4,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras' does not match filename 'extras.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":7,"column":10},{"message":"Class name \"Gateway_Extras\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":7,"column":16},{"message":"Method name \"generate_hash\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":59,"column":15},{"message":"Method name \"compare_hash\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":70,"column":15}]},"\/src\/repo\/gateway_common\/ContributionTrackingPlusUnique.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":17,"column":70}]},"\/src\/repo\/includes\/Api\/ApiDonationClientError.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/amazon_gateway\/amazon.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AmazonBillingApi' does not match filename 'amazon.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/gateway_common\/SmsOptin.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/dlocal_gateway\/dlocal_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DlocalGateway' does not match filename 'dlocal_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":13,"column":1}]},"\/src\/repo\/extras\/conversion_log\/conversion_log.body.php":{"errors":3,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras_ConversionLog' does not match filename 'conversion_log.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":1},{"message":"Class name \"Gateway_Extras_ConversionLog\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":5,"column":7},{"message":"Method name \"post_process\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":14,"column":15}]},"\/src\/repo\/modules\/CurrencyRatesModule.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/WmfFramework.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":24,"column":30}]},"\/src\/repo\/includes\/Api\/ApiRequestLogout.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/FraudFilters\/PreAuthorizeFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/FiscalNumber.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/amazon_gateway\/amazon_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AmazonGateway' does not match filename 'amazon_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":20,"column":1}]},"\/src\/repo\/includes\/FraudFilters\/VelocityFilterRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/Gravy3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/email_forms\/EmailForm.php":{"errors":0,"warnings":1,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":14,"column":5}]},"\/src\/repo\/gateway_common\/GatewayType.php":{"errors":3,"warnings":0,"messages":[{"message":"Method name \"getData_Unstaged_Escaped\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":92,"column":12},{"message":"Method name \"session_ensure\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":198,"column":12},{"message":"Method name \"token_getSaltedSessionToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":240,"column":12}]},"\/src\/repo\/extras\/FraudFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/amazon_gateway\/amazon_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestPauseRecurring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/employerSearch.api.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'EmployerSearchAPI' does not match filename 'employerSearch.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":16,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":31,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":36,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":41,"column":5}]},"\/src\/repo\/email_forms\/RequestNewChecksumLinkTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationApiBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ValidationHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonationInterfaceApiTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRecurUpgradeClientError.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseDlocalTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ArrayHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestNewChecksumLink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseAdyenCheckoutTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/AmountInCents.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/RecurringConversionTrait.php":{"errors":4,"warnings":0,"messages":[{"message":"Method name \"session_getData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":13,"column":21},{"message":"Method name \"session_resetForNewAttempt\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":19,"column":21},{"message":"Method name \"session_setDonorBackupData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":22,"column":21},{"message":"Method name \"session_MoveDonorDataToBackupForRecurringConversion\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":110,"column":12}]},"\/src\/repo\/braintree_gateway\/braintree.adapter.php":{"errors":1,"warnings":6,"messages":[{"message":"Class name 'BraintreeAdapter' does not match filename 'braintree.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":14,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":17,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":18,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":51,"column":78},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":56,"column":55},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":57,"column":74}]},"\/src\/repo\/gateway_common\/Frictionless3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Amount.php":{"errors":2,"warnings":0,"messages":[{"message":"Method name \"is_fractional_currency\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":156,"column":19},{"message":"Method name \"is_exponent3_currency\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":174,"column":19}]},"\/src\/repo\/braintree_gateway\/braintree.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'BraintreeDonationApi' does not match filename 'braintree.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/includes\/RecurUpgrade\/Validator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseGravyTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/DonorPortal\/Hooks.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StreetNumberValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/CiviproxyConnectTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/DonationInterface.class.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DonationInterface' does not match filename 'DonationInterface.class.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":7,"column":1}]},"\/src\/repo\/gateway_common\/DonationProfiler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PaymentTransactionResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/ArrayHelperTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":104,"column":36}]},"\/src\/repo\/tests\/phpunit\/includes\/MinFraudTestTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PaymentResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/FraudFilters\/GenericVelocityFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestAnnualConversion.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StreetAddressValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestUpdateRecurring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/EmployerFieldValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ResultPages.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":104,"column":18}]},"\/src\/repo\/maintenance\/TestCrash.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/RealTimeBankTransferIdealTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/TestingGenericAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/IntegrationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyGateway' does not match filename 'gravy_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":10,"column":1}]},"\/src\/repo\/tests\/phpunit\/includes\/TestingGatewayPage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/LocalClusterPsr6Cache.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/IngenicoLocaleTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Abstract3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/IngenicoLocale.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/test_request\/test.request.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'TestingRequest' does not match filename 'test.request.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":27,"column":1}]},"\/src\/repo\/gateway_common\/PostalCodeValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/ingenico.adapter.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'IngenicoAdapter' does not match filename 'ingenico.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":16,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":20,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":21,"column":5}]},"\/src\/repo\/gateway_common\/RecurringConversion.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'RecurringConversionApi' does not match filename 'RecurringConversion.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":1}]},"\/src\/repo\/tests\/phpunit\/DonationMessageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/TestingDonationLogger.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/braintree_gateway\/braintree_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'BraintreeGateway' does not match filename 'braintree_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":11,"column":1}]},"\/src\/repo\/ingenico_gateway\/IngenicoReturnUrlHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/ingenico_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'IngenicoGatewayResult' does not match filename 'ingenico_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/ingenico_gateway\/ingenico_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenDonationApi' does not match filename 'adyen.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/gateway_forms\/MustacheHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/ingenico_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'IngenicoGateway' does not match filename 'ingenico_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":24,"column":1}]},"\/src\/repo\/special\/PaymentSettings.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyGatewayResult' does not match filename 'gravy_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/paypal_ec_gateway\/paypal_express.adapter.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'PaypalExpressAdapter' does not match filename 'paypal_express.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":24,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":25,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":26,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":27,"column":5}]},"\/src\/repo\/adyen_gateway\/adyen_apple.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenAppleApi' does not match filename 'adyen_apple.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":8,"column":1}]},"\/src\/repo\/includes\/Api\/ApiRecurringModifyBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyDonationApi' does not match filename 'gravy.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/includes\/FraudFilters\/GenericPatternFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/IngenicoFormVariant.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/dlocal_gateway\/dlocal.adapter.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'DlocalAdapter' does not match filename 'dlocal.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":17,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":23,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":28,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":33,"column":5}]},"\/src\/repo\/adyen_gateway\/BlankAddressFields.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DataValidatorTest.php":{"errors":0,"warnings":7,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":102,"column":34},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":103,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":104,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":106,"column":47},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":107,"column":51},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":118,"column":46},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":124,"column":33}]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/TestingPaypalExpressAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/RecurringTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/dlocal_gateway\/dlocal.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DlocalDonationApi' does not match filename 'dlocal.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/gateway_common\/donation.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DonationApi' does not match filename 'donation.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":10,"column":1}]},"\/src\/repo\/ingenico_gateway\/Ingenico3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/custom_filters\/custom_filters.body.php":{"errors":2,"warnings":3,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters' does not match filename 'custom_filters.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":9,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":9,"column":7},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":12,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":15,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":48,"column":50}]},"\/src\/repo\/gateway_common\/PaymentMethod.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/amazon_gateway\/amazon.adapter.php":{"errors":1,"warnings":8,"messages":[{"message":"Class name 'AmazonAdapter' does not match filename 'amazon.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":34,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":36,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":37,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":38,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":227,"column":73},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":312,"column":36},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":314,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":366,"column":36},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":370,"column":41}]},"\/src\/repo\/includes\/FraudFilters\/PatternFilterRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/test.adapter.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'TTestingAdapter' does not match filename 'test.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":20,"column":1}]},"\/src\/repo\/tests\/phpunit\/GatewayPageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/civiproxy\/CiviproxyConnect.php":{"errors":0,"warnings":2,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":10,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":11,"column":5}]},"\/src\/repo\/gravy_gateway\/gravy_apple.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyAppleApi' does not match filename 'gravy_apple.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":8,"column":1}]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/TestingDlocalAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/MustacheFormTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DataValidator.php":{"errors":13,"warnings":1,"messages":[{"message":"Method name \"validate_email\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":238,"column":22},{"message":"Method name \"validate_currency_code\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":244,"column":22},{"message":"Method name \"validate_boolean\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":258,"column":22},{"message":"Method name \"validate_numeric\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":278,"column":22},{"message":"Method name \"validate_gateway\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":293,"column":22},{"message":"Method name \"validate_not_empty\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":307,"column":22},{"message":"Method name \"validate_not_just_punctuation\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":319,"column":19},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":320,"column":48},{"message":"Method name \"validate_name\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":335,"column":19},{"message":"Method name \"validate_address\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":345,"column":19},{"message":"Method name \"special_characters_in_wrong_locations\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":363,"column":19},{"message":"Method name \"cc_number_exists_in_str\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":386,"column":19},{"message":"Method name \"luhn_check\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":449,"column":19},{"message":"Method name \"ip_is_listed\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":504,"column":19}]},"\/src\/repo\/gateway_common\/ClientSideValidationHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/PaypalTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenFormLoadTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_forms\/MustacheErrorForm.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Amazon\/AmazonApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiClientErrorBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/GatewayValidationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/EndowmentHooks.php":{"errors":0,"warnings":1,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":7,"column":5}]},"\/src\/repo\/extras\/custom_filters\/filters\/source\/source.body.php":{"errors":2,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_Source' does not match filename 'source.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_Source\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":3,"column":7}]},"\/src\/repo\/includes\/Validation\/AmountHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/RecurUpgrade.php":{"errors":0,"warnings":5,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":15,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":16,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":17,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":22,"column":5}]},"\/src\/repo\/adyen_gateway\/adyen_get_payment_methods.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenGetPaymentMethodsApi' does not match filename 'adyen_get_payment_methods.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/extras\/custom_filters\/filters\/minfraud\/minfraud.body.php":{"errors":2,"warnings":3,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_MinFraud' does not match filename 'minfraud.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":44,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_MinFraud\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":44,"column":7},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":272,"column":47},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":280,"column":16},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":288,"column":50}]},"\/src\/repo\/tests\/phpunit\/EmailPreferencesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/FundraiserMaintenance.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_checkout_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenCheckoutGatewayResult' does not match filename 'adyen_checkout_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/tests\/phpunit\/LoggingTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseIngenicoTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/CountryValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/AmountTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/custom_filters\/filters\/functions\/functions.body.php":{"errors":2,"warnings":1,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_Functions' does not match filename 'functions.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_Functions\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":3,"column":7},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":53,"column":29}]},"\/src\/repo\/gateway_forms\/includes\/Subdivisions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ResultSwitcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_checkout_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenCheckoutGateway' does not match filename 'adyen_checkout_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":12,"column":1}]},"\/src\/repo\/gateway_common\/GatewayPage.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":374,"column":18}]},"\/src\/repo\/extras\/custom_filters\/filters\/referrer\/referrer.body.php":{"errors":2,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_Referrer' does not match filename 'referrer.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_Referrer\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":3,"column":7}]},"\/src\/repo\/gateway_common\/PlaceholderFiscalNumber.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":13,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":14,"column":31}]},"\/src\/repo\/gateway_common\/messages\/MessagesEs_419.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/SecureFieldsCardTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/GatewayChooser.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":151,"column":41}]},"\/src\/repo\/special\/SystemStatus.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/unit\/RecurUpgrade\/ValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StreetAddress.php":{"errors":2,"warnings":2,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":6,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":7,"column":5},{"message":"Method name \"stage_street\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":26,"column":15},{"message":"Method name \"stage_postal_code\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":48,"column":15}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenSubmitApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/session_velocity\/session_velocity.body.php":{"errors":2,"warnings":5,"messages":[{"message":"Class name 'Gateway_Extras_SessionVelocityFilter' does not match filename 'session_velocity.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":18,"column":1},{"message":"Class name \"Gateway_Extras_SessionVelocityFilter\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":18,"column":7},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":33,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":34,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":35,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":36,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":37,"column":5}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Amazon\/AmazonTest.php":{"errors":0,"warnings":5,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":134,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":164,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":191,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":216,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":245,"column":63}]},"\/src\/repo\/extras\/custom_filters\/filters\/ip_velocity\/ip_velocity.body.php":{"errors":2,"warnings":1,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_IP_Velocity' does not match filename 'ip_velocity.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_IP_Velocity\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":5,"column":7},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":109,"column":66}]},"\/src\/repo\/tests\/phpunit\/Adapter\/PayPal\/PayPalExpressTest.php":{"errors":0,"warnings":6,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":120,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":210,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":355,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":967,"column":45},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1030,"column":45},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1066,"column":45}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/ApplePayTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_submit_payment.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenSubmitPaymentApi' does not match filename 'adyen_submit_payment.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":9,"column":1}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Dlocal\/CardPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_forms\/Mustache.php":{"errors":2,"warnings":1,"messages":[{"message":"Class name 'Gateway_Form_Mustache' does not match filename 'Mustache.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":12,"column":1},{"message":"Class name \"Gateway_Form_Mustache\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":12,"column":7},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":14,"column":5}]},"\/src\/repo\/adyen_gateway\/adyen_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/EncryptedCardParameters.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_forms\/Form.php":{"errors":2,"warnings":0,"messages":[{"message":"Class name 'Gateway_Form' does not match filename 'Form.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":10},{"message":"Class name \"Gateway_Form\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":5,"column":16}]},"\/src\/repo\/tests\/phpunit\/Adapter\/GatewayAdapterTest.php":{"errors":1,"warnings":5,"messages":[{"message":"Method name \"TestSetValidationAction\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":537,"column":12},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":565,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":599,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":615,"column":61},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":633,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":664,"column":39}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/CheckoutIdealTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy.adapter.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyAdapter' does not match filename 'gravy.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":22,"column":1}]},"\/src\/repo\/gravy_gateway\/PlaceholderPhoneNumber.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_checkout.adapter.php":{"errors":1,"warnings":1,"messages":[{"message":"Class name 'AdyenCheckoutAdapter' does not match filename 'adyen_checkout.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":13,"column":1},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":276,"column":25}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/GravyFormLoadTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/PayPal\/PayPalApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/GooglePayTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Dlocal\/CashPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseBraintreeTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationData.php":{"errors":0,"warnings":21,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":59,"column":30},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":68,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":69,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":72,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":73,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":78,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":83,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":102,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":106,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":121,"column":29},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":124,"column":26},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":125,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":130,"column":26},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":133,"column":29},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":138,"column":22},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":366,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":394,"column":72},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":399,"column":50},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":405,"column":34},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":406,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":583,"column":28}]},"\/src\/repo\/tests\/phpunit\/EmployerSearchApiTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":114,"column":49}]},"\/src\/repo\/gateway_common\/MediaWikiLogHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorEmail.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/EmailPreferences.php":{"errors":0,"warnings":5,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":12,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":13,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":14,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":17,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5}]},"\/src\/repo\/gateway_common\/MessageUtils.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonorLocaleTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/RedirectFormTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonationDataTest.php":{"errors":0,"warnings":11,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":85,"column":91},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":145,"column":59},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":193,"column":91},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":240,"column":102},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":260,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":269,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":279,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":289,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":300,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":328,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":341,"column":98}]},"\/src\/repo\/tests\/phpunit\/FraudFiltersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/IPVelocityTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":141,"column":64},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":206,"column":64}]},"\/src\/repo\/tests\/phpunit\/LintYaml.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonationInterfaceTestCase.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":175,"column":23},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":681,"column":51}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Braintree\/PaypalPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/GatewayChooserTest.php":{"errors":0,"warnings":5,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":234,"column":131},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":235,"column":131},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":236,"column":127},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":512,"column":76},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":545,"column":67}]},"\/src\/repo\/tests\/phpunit\/TestConfiguration.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":160,"column":34},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":161,"column":57}]},"\/src\/repo\/tests\/phpunit\/DonationQueueTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Braintree\/VenmoPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/DonorPortal.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":139,"column":28}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/IngenicoTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/CheckoutCardTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenRecurringTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenGetPaymentMethodsApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/IngenicoApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/ResultSwitcherTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":59,"column":33}]},"\/src\/repo\/gateway_common\/gateway.adapter.php":{"errors":19,"warnings":24,"messages":[{"message":"Class name 'GatewayAdapter' does not match filename 'gateway.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":40,"column":10},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":44,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":45,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":184,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":185,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":186,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":186,"column":48},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":187,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":188,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":226,"column":41},{"message":"Method name \"getData_Staged\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":488,"column":15},{"message":"Method name \"getData_Unstaged_Escaped\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":581,"column":12},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1099,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1482,"column":61},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1503,"column":59},{"message":"Method name \"session_ensure\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2143,"column":12},{"message":"Method name \"session_getData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2154,"column":12},{"message":"Method name \"session_hasDonorData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2175,"column":12},{"message":"Method name \"session_setDonorBackupData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2184,"column":12},{"message":"Method name \"session_unsetDonorData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2193,"column":12},{"message":"Method name \"session_addDonorData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2203,"column":12},{"message":"Method name \"session_killAllEverything\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2221,"column":12},{"message":"Method name \"session_unsetAllData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2233,"column":12},{"message":"Method name \"session_resetForNewAttempt\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2249,"column":12},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2267,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2272,"column":28},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2280,"column":40},{"message":"Method name \"session_resetOnSwitch\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2315,"column":15},{"message":"Method name \"token_applyMD5AndSalt\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2390,"column":22},{"message":"Method name \"token_generateToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2408,"column":19},{"message":"Method name \"token_getSaltedSessionToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2413,"column":12},{"message":"Method name \"token_refreshAllTokenEverything\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2435,"column":15},{"message":"Method name \"token_matchEditToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2455,"column":15},{"message":"Method name \"token_checkTokens\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2480,"column":15},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2481,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2520,"column":64},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2618,"column":106},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2676,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2690,"column":59},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2743,"column":45},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2744,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2885,"column":27},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2898,"column":27}]},"\/src\/repo\/gateway_common\/IsoDate.php":{"errors":0,"warnings":0,"messages":[]}}}

--- end ---
PHPCS run failed
$ vendor/bin/phpcs --report=json
--- stdout ---
{"totals":{"errors":105,"warnings":161,"fixable":0},"files":{"\/src\/repo\/braintree_gateway\/braintree_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'BraintreeGatewayResult' does not match filename 'braintree_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/braintree_gateway\/braintree_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/paypal_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/dlocal_gateway\/dlocal_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DlocalGatewayResult' does not match filename 'dlocal_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/dlocal_gateway\/dlocal_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorFullName.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/LogPrefixProvider.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Simple3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorLanguage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PayPalAmount.php":{"errors":1,"warnings":0,"messages":[{"message":"Method name \"is_fractional_currency\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":11,"column":19}]},"\/src\/repo\/paypal_ec_gateway\/PayPalCountry.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":7,"column":23},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":8,"column":23}]},"\/src\/repo\/gateway_common\/RecurringConversion.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/paypal_express_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'PaypalExpressGatewayResult' does not match filename 'paypal_express_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/DonationInterface.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/CurrencyCountryRule.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/PaypalExpressReturnUrl.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationLogProcessor.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/UnstagingHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/paypal_express_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'PaypalExpressGateway' does not match filename 'paypal_express_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/gateway_common\/ResponseProcessingException.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/FallbackLogPrefixer.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ReturnUrl.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorLocale.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationLoggerFactory.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StagingHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ConfigurationReader.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/email_forms\/EmailForm.php":{"errors":0,"warnings":1,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":14,"column":5}]},"\/src\/repo\/gateway_common\/ErrorState.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/dlocal_gateway\/dlocal_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DlocalGateway' does not match filename 'dlocal_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":13,"column":1}]},"\/src\/repo\/modules\/CurrencyRatesModule.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/email_forms\/RequestNewChecksumLinkTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/conversion_log\/conversion_log.body.php":{"errors":3,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras_ConversionLog' does not match filename 'conversion_log.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":1},{"message":"Class name \"Gateway_Extras_ConversionLog\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":5,"column":7},{"message":"Method name \"post_process\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":14,"column":15}]},"\/src\/repo\/includes\/Api\/ApiDonationClientError.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/employerSearch.api.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'EmployerSearchAPI' does not match filename 'employerSearch.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":16,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":31,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":36,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":41,"column":5}]},"\/src\/repo\/includes\/FraudFilters\/PreAuthorizeFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ContributionTrackingPlusUnique.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":17,"column":70}]},"\/src\/repo\/amazon_gateway\/amazon.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AmazonBillingApi' does not match filename 'amazon.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/extras\/extras.body.php":{"errors":4,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras' does not match filename 'extras.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":7,"column":10},{"message":"Class name \"Gateway_Extras\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":7,"column":16},{"message":"Method name \"generate_hash\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":59,"column":15},{"message":"Method name \"compare_hash\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":70,"column":15}]},"\/src\/repo\/includes\/DonorPortal\/ActivityTrackingTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/AmountInCents.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/FraudFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestCancelRecurring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/SmsOptin.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/FiscalNumber.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/amazon_gateway\/amazon_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AmazonGateway' does not match filename 'amazon_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":20,"column":1}]},"\/src\/repo\/amazon_gateway\/amazon_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/Gravy3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestLogout.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/WmfFramework.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":24,"column":30}]},"\/src\/repo\/DonationInterface.class.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DonationInterface' does not match filename 'DonationInterface.class.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":7,"column":1}]},"\/src\/repo\/includes\/Api\/ApiRequestPauseRecurring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRecurUpgradeClientError.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Amount.php":{"errors":2,"warnings":0,"messages":[{"message":"Method name \"is_fractional_currency\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":156,"column":19},{"message":"Method name \"is_exponent3_currency\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":174,"column":19}]},"\/src\/repo\/gateway_common\/GatewayType.php":{"errors":3,"warnings":0,"messages":[{"message":"Method name \"getData_Unstaged_Escaped\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":92,"column":12},{"message":"Method name \"session_ensure\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":198,"column":12},{"message":"Method name \"token_getSaltedSessionToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":240,"column":12}]},"\/src\/repo\/gateway_common\/RecurringConversionTrait.php":{"errors":4,"warnings":0,"messages":[{"message":"Method name \"session_getData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":13,"column":21},{"message":"Method name \"session_resetForNewAttempt\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":19,"column":21},{"message":"Method name \"session_setDonorBackupData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":22,"column":21},{"message":"Method name \"session_MoveDonorDataToBackupForRecurringConversion\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":110,"column":12}]},"\/src\/repo\/includes\/FraudFilters\/VelocityFilterRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StreetNumberValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ArrayHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationApiBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/maintenance\/TestCrash.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ValidationHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StreetAddressValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseAdyenCheckoutTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonationInterfaceApiTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseDlocalTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/DonorPortal\/Hooks.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PaymentResult.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestNewChecksumLink.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/IngenicoLocale.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Frictionless3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/Abstract3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/RecurUpgrade\/Validator.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/FraudFilters\/GenericVelocityFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseGravyTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonationProfiler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/ingenico_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'IngenicoGateway' does not match filename 'ingenico_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":24,"column":1}]},"\/src\/repo\/tests\/phpunit\/CiviproxyConnectTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/ArrayHelperTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":104,"column":36}]},"\/src\/repo\/braintree_gateway\/braintree.adapter.php":{"errors":1,"warnings":6,"messages":[{"message":"Class name 'BraintreeAdapter' does not match filename 'braintree.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":14,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":17,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":18,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":51,"column":78},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":56,"column":55},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":57,"column":74}]},"\/src\/repo\/gateway_common\/PostalCodeValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/MinFraudTestTrait.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/TestingGenericAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/TestingGatewayPage.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PaymentTransactionResponse.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/braintree_gateway\/braintree.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'BraintreeDonationApi' does not match filename 'braintree.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/ingenico_gateway\/IngenicoFormVariant.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/IntegrationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/paypal_ec_gateway\/paypal_express.adapter.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'PaypalExpressAdapter' does not match filename 'paypal_express.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":24,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":25,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":26,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":27,"column":5}]},"\/src\/repo\/includes\/Api\/ApiRequestUpdateRecurring.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRequestAnnualConversion.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/ResultPages.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":104,"column":18}]},"\/src\/repo\/tests\/phpunit\/includes\/test_request\/test.request.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'TestingRequest' does not match filename 'test.request.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":27,"column":1}]},"\/src\/repo\/gateway_common\/EmployerFieldValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/RealTimeBankTransferIdealTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonationMessageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/RecurringConversion.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'RecurringConversionApi' does not match filename 'RecurringConversion.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":1}]},"\/src\/repo\/tests\/phpunit\/includes\/TestingDonationLogger.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/ingenico_gateway\/Ingenico3DSecure.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/PaymentSettings.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyGatewayResult' does not match filename 'gravy_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/tests\/phpunit\/IngenicoLocaleTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyDonationApi' does not match filename 'gravy.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/gateway_common\/LocalClusterPsr6Cache.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/donation.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DonationApi' does not match filename 'donation.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":10,"column":1}]},"\/src\/repo\/ingenico_gateway\/ingenico.adapter.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'IngenicoAdapter' does not match filename 'ingenico.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":16,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":20,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":21,"column":5}]},"\/src\/repo\/ingenico_gateway\/IngenicoReturnUrlHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiRecurringModifyBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyGateway' does not match filename 'gravy_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":10,"column":1}]},"\/src\/repo\/adyen_gateway\/adyen.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenDonationApi' does not match filename 'adyen.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/extras\/civiproxy\/CiviproxyConnect.php":{"errors":0,"warnings":2,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":10,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":11,"column":5}]},"\/src\/repo\/ingenico_gateway\/ingenico_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'IngenicoGatewayResult' does not match filename 'ingenico_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1}]},"\/src\/repo\/braintree_gateway\/braintree_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'BraintreeGateway' does not match filename 'braintree_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":11,"column":1}]},"\/src\/repo\/ingenico_gateway\/ingenico_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_apple.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenAppleApi' does not match filename 'adyen_apple.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":8,"column":1}]},"\/src\/repo\/gravy_gateway\/gravy_apple.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyAppleApi' does not match filename 'gravy_apple.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":8,"column":1}]},"\/src\/repo\/tests\/phpunit\/DataValidatorTest.php":{"errors":0,"warnings":7,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":102,"column":34},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":103,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":104,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":106,"column":47},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":107,"column":51},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":118,"column":46},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":124,"column":33}]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/TestingPaypalExpressAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/RecurringTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/FraudFilters\/GenericPatternFilter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/BlankAddressFields.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/custom_filters\/custom_filters.body.php":{"errors":2,"warnings":3,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters' does not match filename 'custom_filters.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":9,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":9,"column":7},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":12,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":15,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":48,"column":50}]},"\/src\/repo\/gateway_common\/DataValidator.php":{"errors":13,"warnings":1,"messages":[{"message":"Method name \"validate_email\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":238,"column":22},{"message":"Method name \"validate_currency_code\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":244,"column":22},{"message":"Method name \"validate_boolean\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":258,"column":22},{"message":"Method name \"validate_numeric\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":278,"column":22},{"message":"Method name \"validate_gateway\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":293,"column":22},{"message":"Method name \"validate_not_empty\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":307,"column":22},{"message":"Method name \"validate_not_just_punctuation\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":319,"column":19},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":320,"column":48},{"message":"Method name \"validate_name\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":335,"column":19},{"message":"Method name \"validate_address\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":345,"column":19},{"message":"Method name \"special_characters_in_wrong_locations\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":363,"column":19},{"message":"Method name \"cc_number_exists_in_str\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":386,"column":19},{"message":"Method name \"luhn_check\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":449,"column":19},{"message":"Method name \"ip_is_listed\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":504,"column":19}]},"\/src\/repo\/gateway_common\/ClientSideValidationHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_forms\/MustacheHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/GatewayPageTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/test.adapter.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'TTestingAdapter' does not match filename 'test.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":20,"column":1}]},"\/src\/repo\/tests\/phpunit\/includes\/test_gateway\/TestingDlocalAdapter.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/dlocal_gateway\/dlocal.adapter.php":{"errors":1,"warnings":3,"messages":[{"message":"Class name 'DlocalAdapter' does not match filename 'dlocal.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":17,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":23,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":28,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":33,"column":5}]},"\/src\/repo\/dlocal_gateway\/dlocal.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'DlocalDonationApi' does not match filename 'dlocal.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":2,"column":1}]},"\/src\/repo\/includes\/FraudFilters\/PatternFilterRunner.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/EndowmentHooks.php":{"errors":0,"warnings":1,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":7,"column":5}]},"\/src\/repo\/includes\/Validation\/AmountHelper.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/MustacheFormTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/RecurUpgrade.php":{"errors":0,"warnings":5,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":15,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":16,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":17,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":22,"column":5}]},"\/src\/repo\/special\/FundraiserMaintenance.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenFormLoadTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/PaymentMethod.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/includes\/Api\/ApiClientErrorBase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Amazon\/AmazonApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/custom_filters\/filters\/source\/source.body.php":{"errors":2,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_Source' does not match filename 'source.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_Source\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":3,"column":7}]},"\/src\/repo\/extras\/custom_filters\/filters\/minfraud\/minfraud.body.php":{"errors":2,"warnings":3,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_MinFraud' does not match filename 'minfraud.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":44,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_MinFraud\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":44,"column":7},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":272,"column":47},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":280,"column":16},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":288,"column":50}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/PaypalTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/GatewayValidationTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/EmailPreferencesTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_get_payment_methods.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenGetPaymentMethodsApi' does not match filename 'adyen_get_payment_methods.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/gateway_forms\/MustacheErrorForm.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/LoggingTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/BaseIngenicoTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_checkout_resultswitcher.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenCheckoutGatewayResult' does not match filename 'adyen_checkout_resultswitcher.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":6,"column":1}]},"\/src\/repo\/extras\/custom_filters\/filters\/functions\/functions.body.php":{"errors":2,"warnings":1,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_Functions' does not match filename 'functions.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_Functions\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":3,"column":7},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":53,"column":29}]},"\/src\/repo\/amazon_gateway\/amazon.adapter.php":{"errors":1,"warnings":8,"messages":[{"message":"Class name 'AmazonAdapter' does not match filename 'amazon.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":34,"column":1},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":36,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":37,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":38,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":227,"column":73},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":312,"column":36},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":314,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":366,"column":36},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":370,"column":41}]},"\/src\/repo\/gateway_common\/ResultSwitcher.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/AmountTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/adyen_checkout_gateway.body.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenCheckoutGateway' does not match filename 'adyen_checkout_gateway.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":12,"column":1}]},"\/src\/repo\/extras\/custom_filters\/filters\/referrer\/referrer.body.php":{"errors":2,"warnings":0,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_Referrer' does not match filename 'referrer.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":3,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_Referrer\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":3,"column":7}]},"\/src\/repo\/gateway_common\/CountryValidation.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_forms\/includes\/Subdivisions.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/GatewayPage.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":374,"column":18}]},"\/src\/repo\/gateway_common\/PlaceholderFiscalNumber.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":13,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":14,"column":31}]},"\/src\/repo\/gateway_common\/messages\/MessagesEs_419.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/GatewayChooser.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":151,"column":41}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/SecureFieldsCardTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/unit\/RecurUpgrade\/ValidatorTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/SystemStatus.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/StreetAddress.php":{"errors":2,"warnings":2,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":6,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":7,"column":5},{"message":"Method name \"stage_street\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":26,"column":15},{"message":"Method name \"stage_postal_code\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":48,"column":15}]},"\/src\/repo\/adyen_gateway\/adyen_submit_payment.api.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'AdyenSubmitPaymentApi' does not match filename 'adyen_submit_payment.api.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":9,"column":1}]},"\/src\/repo\/adyen_gateway\/adyen_gateway.alias.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/extras\/session_velocity\/session_velocity.body.php":{"errors":2,"warnings":5,"messages":[{"message":"Class name 'Gateway_Extras_SessionVelocityFilter' does not match filename 'session_velocity.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":18,"column":1},{"message":"Class name \"Gateway_Extras_SessionVelocityFilter\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":18,"column":7},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":33,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":34,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":35,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":36,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":37,"column":5}]},"\/src\/repo\/gateway_forms\/Mustache.php":{"errors":2,"warnings":1,"messages":[{"message":"Class name 'Gateway_Form_Mustache' does not match filename 'Mustache.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":12,"column":1},{"message":"Class name \"Gateway_Form_Mustache\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":12,"column":7},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":14,"column":5}]},"\/src\/repo\/extras\/custom_filters\/filters\/ip_velocity\/ip_velocity.body.php":{"errors":2,"warnings":1,"messages":[{"message":"Class name 'Gateway_Extras_CustomFilters_IP_Velocity' does not match filename 'ip_velocity.body.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":1},{"message":"Class name \"Gateway_Extras_CustomFilters_IP_Velocity\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":5,"column":7},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":109,"column":66}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Dlocal\/CardPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/ApplePayTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/adyen_gateway\/EncryptedCardParameters.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Amazon\/AmazonTest.php":{"errors":0,"warnings":5,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":134,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":164,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":191,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":216,"column":63},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":245,"column":63}]},"\/src\/repo\/gateway_forms\/Form.php":{"errors":2,"warnings":0,"messages":[{"message":"Class name 'Gateway_Form' does not match filename 'Form.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":5,"column":10},{"message":"Class name \"Gateway_Form\" is not in PascalCase format","source":"Squiz.Classes.ValidClassName.NotCamelCaps","severity":5,"fixable":false,"type":"ERROR","line":5,"column":16}]},"\/src\/repo\/adyen_gateway\/adyen_checkout.adapter.php":{"errors":1,"warnings":1,"messages":[{"message":"Class name 'AdyenCheckoutAdapter' does not match filename 'adyen_checkout.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":13,"column":1},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":276,"column":25}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/CheckoutIdealTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gravy_gateway\/gravy.adapter.php":{"errors":1,"warnings":0,"messages":[{"message":"Class name 'GravyAdapter' does not match filename 'gravy.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":22,"column":1}]},"\/src\/repo\/gravy_gateway\/PlaceholderPhoneNumber.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/.phan\/config.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/GravyFormLoadTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/EmailPreferences.php":{"errors":0,"warnings":5,"messages":[{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":12,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":13,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":14,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":17,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":19,"column":5}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenSubmitApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Dlocal\/CashPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/GooglePayTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/EmployerSearchApiTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":114,"column":49}]},"\/src\/repo\/tests\/phpunit\/BaseBraintreeTestCase.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/GatewayAdapterTest.php":{"errors":1,"warnings":5,"messages":[{"message":"Method name \"TestSetValidationAction\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":537,"column":12},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":565,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":599,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":615,"column":61},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":633,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":664,"column":39}]},"\/src\/repo\/gateway_common\/DonationData.php":{"errors":0,"warnings":21,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":59,"column":30},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":68,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":69,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":72,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":73,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":78,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":83,"column":24},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":102,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":106,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":121,"column":29},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":124,"column":26},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":125,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":130,"column":26},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":133,"column":29},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":138,"column":22},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":366,"column":41},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":394,"column":72},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":399,"column":50},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":405,"column":34},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":406,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":583,"column":28}]},"\/src\/repo\/gateway_common\/MediaWikiLogHandler.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonorLocaleTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/DonorEmail.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/gateway_common\/MessageUtils.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/FraudFiltersTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/special\/DonorPortal.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":139,"column":28}]},"\/src\/repo\/tests\/phpunit\/Adapter\/Gravy\/RedirectFormTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/LintYaml.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/DonationDataTest.php":{"errors":0,"warnings":11,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":85,"column":91},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":145,"column":59},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":193,"column":91},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":240,"column":102},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":260,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":269,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":279,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":289,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":300,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":328,"column":98},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":341,"column":98}]},"\/src\/repo\/tests\/phpunit\/IPVelocityTest.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":141,"column":64},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":206,"column":64}]},"\/src\/repo\/tests\/phpunit\/TestConfiguration.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":160,"column":34},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":161,"column":57}]},"\/src\/repo\/tests\/phpunit\/GatewayChooserTest.php":{"errors":0,"warnings":5,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":234,"column":131},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":235,"column":131},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":236,"column":127},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":512,"column":76},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":545,"column":67}]},"\/src\/repo\/tests\/phpunit\/DonationInterfaceTestCase.php":{"errors":0,"warnings":2,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":175,"column":23},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":681,"column":51}]},"\/src\/repo\/tests\/phpunit\/Adapter\/PayPal\/PayPalExpressTest.php":{"errors":0,"warnings":6,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":120,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":210,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":355,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":967,"column":45},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1030,"column":45},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1066,"column":45}]},"\/src\/repo\/tests\/phpunit\/DonationQueueTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/CheckoutCardTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenRecurringTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/PayPal\/PayPalApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/IngenicoTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Adyen\/AdyenGetPaymentMethodsApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Braintree\/PaypalPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Braintree\/VenmoPaymentTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/IngenicoApiTest.php":{"errors":0,"warnings":0,"messages":[]},"\/src\/repo\/tests\/phpunit\/Adapter\/Ingenico\/ResultSwitcherTest.php":{"errors":0,"warnings":1,"messages":[{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":59,"column":33}]},"\/src\/repo\/gateway_common\/gateway.adapter.php":{"errors":19,"warnings":24,"messages":[{"message":"Class name 'GatewayAdapter' does not match filename 'gateway.adapter.php'","source":"MediaWiki.Files.ClassMatchesFilename.NotMatch","severity":5,"fixable":false,"type":"ERROR","line":40,"column":10},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":44,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":45,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":184,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":185,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":186,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":186,"column":48},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":187,"column":5},{"message":"Visibility must be declared on all constants if your project supports PHP 7.1 or later","source":"PSR12.Properties.ConstantVisibility.NotFound","severity":5,"fixable":false,"type":"WARNING","line":188,"column":5},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":226,"column":41},{"message":"Method name \"getData_Staged\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":488,"column":15},{"message":"Method name \"getData_Unstaged_Escaped\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":581,"column":12},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1099,"column":25},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1482,"column":61},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":1503,"column":59},{"message":"Method name \"session_ensure\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2143,"column":12},{"message":"Method name \"session_getData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2154,"column":12},{"message":"Method name \"session_hasDonorData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2175,"column":12},{"message":"Method name \"session_setDonorBackupData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2184,"column":12},{"message":"Method name \"session_unsetDonorData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2193,"column":12},{"message":"Method name \"session_addDonorData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2203,"column":12},{"message":"Method name \"session_killAllEverything\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2221,"column":12},{"message":"Method name \"session_unsetAllData\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2233,"column":12},{"message":"Method name \"session_resetForNewAttempt\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2249,"column":12},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2267,"column":33},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2272,"column":28},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2280,"column":40},{"message":"Method name \"session_resetOnSwitch\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2315,"column":15},{"message":"Method name \"token_applyMD5AndSalt\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2390,"column":22},{"message":"Method name \"token_generateToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2408,"column":19},{"message":"Method name \"token_getSaltedSessionToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2413,"column":12},{"message":"Method name \"token_refreshAllTokenEverything\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2435,"column":15},{"message":"Method name \"token_matchEditToken\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2455,"column":15},{"message":"Method name \"token_checkTokens\" should use lower camel case.","source":"MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName","severity":5,"fixable":false,"type":"ERROR","line":2480,"column":15},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2481,"column":31},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2520,"column":64},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2618,"column":106},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2676,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2690,"column":59},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2743,"column":45},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2744,"column":39},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2885,"column":27},{"message":"Comments should start on new line.","source":"MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment","severity":5,"fixable":false,"type":"WARNING","line":2898,"column":27}]},"\/src\/repo\/gateway_common\/IsoDate.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 optimized autoload files
31 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
> phpcs -p -s --cache
> php tests/phpunit/LintYaml.php
> minus-x check .
--- stdout ---
PHP 8.4.18 | 10 parallel jobs
............................................................  60/216 ( 27%)
............................................................ 120/216 ( 55%)
............................................................ 180/216 ( 83%)
....................................                         216/216 (100%)


Checked 216 files in 0.7 seconds
No syntax error found
...................................................... 54 / 54 (100%)


Time: 430ms; Memory: 18MB

MinusX
======
Processing /src/repo...
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
...........................................................
All good!

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@tootallnate/once": {
      "name": "@tootallnate/once",
      "severity": "low",
      "isDirect": false,
      "via": [
        {
          "source": 1113977,
          "name": "@tootallnate/once",
          "dependency": "@tootallnate/once",
          "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
          "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
          "severity": "low",
          "cwe": [
            "CWE-705"
          ],
          "cvss": {
            "score": 3.3,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
          },
          "range": "<3.0.1"
        }
      ],
      "effects": [
        "http-proxy-agent"
      ],
      "range": "<3.0.1",
      "nodes": [
        "node_modules/@tootallnate/once"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "babel-core": {
      "name": "babel-core",
      "severity": "critical",
      "isDirect": true,
      "via": [
        "babel-helpers",
        "babel-register",
        "babel-template",
        "babel-traverse",
        "json5"
      ],
      "effects": [
        "babel-register"
      ],
      "range": "5.8.20 - 7.0.0-beta.3",
      "nodes": [
        "node_modules/babel-core"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-helpers": {
      "name": "babel-helpers",
      "severity": "critical",
      "isDirect": false,
      "via": [
        "babel-template"
      ],
      "effects": [],
      "range": "*",
      "nodes": [
        "node_modules/babel-helpers"
      ],
      "fixAvailable": true
    },
    "babel-register": {
      "name": "babel-register",
      "severity": "high",
      "isDirect": false,
      "via": [
        "babel-core"
      ],
      "effects": [
        "babel-core"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-register"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "babel-template": {
      "name": "babel-template",
      "severity": "critical",
      "isDirect": false,
      "via": [
        "babel-traverse"
      ],
      "effects": [
        "babel-helpers"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-template"
      ],
      "fixAvailable": true
    },
    "babel-traverse": {
      "name": "babel-traverse",
      "severity": "critical",
      "isDirect": false,
      "via": [
        {
          "source": 1096879,
          "name": "babel-traverse",
          "dependency": "babel-traverse",
          "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
          "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
          "severity": "critical",
          "cwe": [
            "CWE-184",
            "CWE-697"
          ],
          "cvss": {
            "score": 9.4,
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
          },
          "range": "<7.23.2"
        }
      ],
      "effects": [
        "babel-core",
        "babel-template"
      ],
      "range": "*",
      "nodes": [
        "node_modules/babel-traverse"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "editorconfig": {
      "name": "editorconfig",
      "severity": "high",
      "isDirect": false,
      "via": [
        "minimatch"
      ],
      "effects": [],
      "range": "1.0.3 - 1.0.4 || 2.0.0",
      "nodes": [
        "node_modules/editorconfig"
      ],
      "fixAvailable": true
    },
    "flatted": {
      "name": "flatted",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1114526,
          "name": "flatted",
          "dependency": "flatted",
          "title": "flatted vulnerable to unbounded recursion DoS in parse() revive phase",
          "url": "https://github.com/advisories/GHSA-25h7-pfq9-p65f",
          "severity": "high",
          "cwe": [
            "CWE-674"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<3.4.0"
        }
      ],
      "effects": [],
      "range": "<3.4.0",
      "nodes": [
        "node_modules/flatted"
      ],
      "fixAvailable": true
    },
    "grunt": {
      "name": "grunt",
      "severity": "high",
      "isDirect": true,
      "via": [
        "minimatch"
      ],
      "effects": [
        "grunt-eslint"
      ],
      "range": ">=0.4.0-a",
      "nodes": [
        "node_modules/grunt"
      ],
      "fixAvailable": {
        "name": "grunt",
        "version": "0.3.17",
        "isSemVerMajor": true
      }
    },
    "grunt-eslint": {
      "name": "grunt-eslint",
      "severity": "high",
      "isDirect": true,
      "via": [
        "grunt"
      ],
      "effects": [],
      "range": "<=1.0.0 || >=18.1.0",
      "nodes": [
        "node_modules/grunt-eslint"
      ],
      "fixAvailable": {
        "name": "grunt-eslint",
        "version": "18.0.0",
        "isSemVerMajor": true
      }
    },
    "http-proxy-agent": {
      "name": "http-proxy-agent",
      "severity": "low",
      "isDirect": false,
      "via": [
        "@tootallnate/once"
      ],
      "effects": [
        "jsdom"
      ],
      "range": "4.0.1 - 5.0.0",
      "nodes": [
        "node_modules/http-proxy-agent"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jest-environment-jsdom": {
      "name": "jest-environment-jsdom",
      "severity": "low",
      "isDirect": true,
      "via": [
        "jsdom"
      ],
      "effects": [],
      "range": "27.0.1 - 30.0.0-rc.1",
      "nodes": [
        "node_modules/jest-environment-jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "jsdom": {
      "name": "jsdom",
      "severity": "low",
      "isDirect": false,
      "via": [
        "http-proxy-agent"
      ],
      "effects": [
        "jest-environment-jsdom"
      ],
      "range": "16.6.0 - 22.1.0",
      "nodes": [
        "node_modules/jsdom"
      ],
      "fixAvailable": {
        "name": "jest-environment-jsdom",
        "version": "30.3.0",
        "isSemVerMajor": true
      }
    },
    "json5": {
      "name": "json5",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1096543,
          "name": "json5",
          "dependency": "json5",
          "title": "Prototype Pollution in JSON5 via Parse Method",
          "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
          "severity": "high",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 7.1,
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
          },
          "range": "<1.0.2"
        }
      ],
      "effects": [
        "babel-core"
      ],
      "range": "<1.0.2",
      "nodes": [
        "node_modules/babel-core/node_modules/json5"
      ],
      "fixAvailable": {
        "name": "babel-core",
        "version": "4.7.16",
        "isSemVerMajor": true
      }
    },
    "minimatch": {
      "name": "minimatch",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1113459,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
          "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.1.3"
        },
        {
          "source": 1113465,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
          "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": ">=9.0.0 <9.0.6"
        },
        {
          "source": 1113538,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments",
          "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj",
          "severity": "high",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<3.1.3"
        },
        {
          "source": 1113544,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments",
          "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj",
          "severity": "high",
          "cwe": [
            "CWE-407"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=9.0.0 <9.0.7"
        },
        {
          "source": 1113546,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions",
          "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": "<3.1.4"
        },
        {
          "source": 1113552,
          "name": "minimatch",
          "dependency": "minimatch",
          "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions",
          "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74",
          "severity": "high",
          "cwe": [
            "CWE-1333"
          ],
          "cvss": {
            "score": 7.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
          },
          "range": ">=9.0.0 <9.0.7"
        }
      ],
      "effects": [
        "editorconfig",
        "grunt"
      ],
      "range": "<=3.1.3 || 9.0.0 - 9.0.6",
      "nodes": [
        "node_modules/@stylistic/eslint-plugin/node_modules/minimatch",
        "node_modules/editorconfig/node_modules/minimatch",
        "node_modules/eslint-config-wikimedia/node_modules/minimatch",
        "node_modules/grunt/node_modules/minimatch",
        "node_modules/js-beautify/node_modules/minimatch",
        "node_modules/minimatch"
      ],
      "fixAvailable": {
        "name": "grunt",
        "version": "0.3.17",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 4,
      "moderate": 0,
      "high": 7,
      "critical": 4,
      "total": 15
    },
    "dependencies": {
      "prod": 1,
      "dev": 1122,
      "optional": 3,
      "peer": 2,
      "peerOptional": 0,
      "total": 1122
    }
  }
}

--- end ---
Attempting to npm audit fix
$ /usr/bin/npm audit fix --dry-run --only=dev --json
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---
{
  "added": 1,
  "removed": 0,
  "changed": 7,
  "audited": 1123,
  "funding": 165,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@tootallnate/once": {
        "name": "@tootallnate/once",
        "severity": "low",
        "isDirect": false,
        "via": [
          {
            "source": 1113977,
            "name": "@tootallnate/once",
            "dependency": "@tootallnate/once",
            "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping",
            "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6",
            "severity": "low",
            "cwe": [
              "CWE-705"
            ],
            "cvss": {
              "score": 3.3,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"
            },
            "range": "<3.0.1"
          }
        ],
        "effects": [
          "http-proxy-agent"
        ],
        "range": "<3.0.1",
        "nodes": [
          "node_modules/@tootallnate/once"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "babel-core": {
        "name": "babel-core",
        "severity": "critical",
        "isDirect": true,
        "via": [
          "babel-helpers",
          "babel-register",
          "babel-template",
          "babel-traverse",
          "json5"
        ],
        "effects": [
          "babel-register"
        ],
        "range": "5.8.20 - 7.0.0-beta.3",
        "nodes": [
          "node_modules/babel-core"
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "babel-helpers": {
        "name": "babel-helpers",
        "severity": "critical",
        "isDirect": false,
        "via": [
          "babel-template"
        ],
        "effects": [],
        "range": "*",
        "nodes": [
          "node_modules/babel-helpers"
        ],
        "fixAvailable": true
      },
      "babel-register": {
        "name": "babel-register",
        "severity": "high",
        "isDirect": false,
        "via": [
          "babel-core"
        ],
        "effects": [
          "babel-core"
        ],
        "range": "*",
        "nodes": [
          "node_modules/babel-register"
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "babel-template": {
        "name": "babel-template",
        "severity": "critical",
        "isDirect": false,
        "via": [
          "babel-traverse"
        ],
        "effects": [
          "babel-helpers"
        ],
        "range": "*",
        "nodes": [
          "node_modules/babel-template"
        ],
        "fixAvailable": true
      },
      "babel-traverse": {
        "name": "babel-traverse",
        "severity": "critical",
        "isDirect": false,
        "via": [
          {
            "source": 1096879,
            "name": "babel-traverse",
            "dependency": "babel-traverse",
            "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code",
            "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92",
            "severity": "critical",
            "cwe": [
              "CWE-184",
              "CWE-697"
            ],
            "cvss": {
              "score": 9.4,
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
            },
            "range": "<7.23.2"
          }
        ],
        "effects": [
          "babel-core",
          "babel-template"
        ],
        "range": "*",
        "nodes": [
          "node_modules/babel-traverse"
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "editorconfig": {
        "name": "editorconfig",
        "severity": "high",
        "isDirect": false,
        "via": [
          "minimatch"
        ],
        "effects": [],
        "range": "1.0.3 - 1.0.4 || 2.0.0",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "flatted": {
        "name": "flatted",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1114526,
            "name": "flatted",
            "dependency": "flatted",
            "title": "flatted vulnerable to unbounded recursion DoS in parse() revive phase",
            "url": "https://github.com/advisories/GHSA-25h7-pfq9-p65f",
            "severity": "high",
            "cwe": [
              "CWE-674"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": "<3.4.0"
          }
        ],
        "effects": [],
        "range": "<3.4.0",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "grunt": {
        "name": "grunt",
        "severity": "high",
        "isDirect": true,
        "via": [
          "minimatch"
        ],
        "effects": [
          "grunt-eslint"
        ],
        "range": ">=0.4.0-a",
        "nodes": [
          "node_modules/grunt"
        ],
        "fixAvailable": {
          "name": "grunt",
          "version": "0.3.17",
          "isSemVerMajor": true
        }
      },
      "grunt-eslint": {
        "name": "grunt-eslint",
        "severity": "high",
        "isDirect": true,
        "via": [
          "grunt"
        ],
        "effects": [],
        "range": "<=1.0.0 || >=18.1.0",
        "nodes": [
          "node_modules/grunt-eslint"
        ],
        "fixAvailable": {
          "name": "grunt-eslint",
          "version": "18.0.0",
          "isSemVerMajor": true
        }
      },
      "http-proxy-agent": {
        "name": "http-proxy-agent",
        "severity": "low",
        "isDirect": false,
        "via": [
          "@tootallnate/once"
        ],
        "effects": [
          "jsdom"
        ],
        "range": "4.0.1 - 5.0.0",
        "nodes": [
          "node_modules/http-proxy-agent"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "jest-environment-jsdom": {
        "name": "jest-environment-jsdom",
        "severity": "low",
        "isDirect": true,
        "via": [
          "jsdom"
        ],
        "effects": [],
        "range": "27.0.1 - 30.0.0-rc.1",
        "nodes": [
          "node_modules/jest-environment-jsdom"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "jsdom": {
        "name": "jsdom",
        "severity": "low",
        "isDirect": false,
        "via": [
          "http-proxy-agent"
        ],
        "effects": [
          "jest-environment-jsdom"
        ],
        "range": "16.6.0 - 22.1.0",
        "nodes": [
          "node_modules/jsdom"
        ],
        "fixAvailable": {
          "name": "jest-environment-jsdom",
          "version": "30.3.0",
          "isSemVerMajor": true
        }
      },
      "json5": {
        "name": "json5",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1096543,
            "name": "json5",
            "dependency": "json5",
            "title": "Prototype Pollution in JSON5 via Parse Method",
            "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h",
            "severity": "high",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 7.1,
              "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"
            },
            "range": "<1.0.2"
          }
        ],
        "effects": [
          "babel-core"
        ],
        "range": "<1.0.2",
        "nodes": [
          "node_modules/babel-core/node_modules/json5"
        ],
        "fixAvailable": {
          "name": "babel-core",
          "version": "4.7.16",
          "isSemVerMajor": true
        }
      },
      "minimatch": {
        "name": "minimatch",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1113459,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
            "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
            "severity": "high",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": "<3.1.3"
          },
          {
            "source": 1113465,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
            "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26",
            "severity": "high",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": ">=9.0.0 <9.0.6"
          },
          {
            "source": 1113538,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments",
            "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj",
            "severity": "high",
            "cwe": [
              "CWE-407"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": "<3.1.3"
          },
          {
            "source": 1113544,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments",
            "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj",
            "severity": "high",
            "cwe": [
              "CWE-407"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": ">=9.0.0 <9.0.7"
          },
          {
            "source": 1113546,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions",
            "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74",
            "severity": "high",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": "<3.1.4"
          },
          {
            "source": 1113552,
            "name": "minimatch",
            "dependency": "minimatch",
            "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions",
            "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74",
            "severity": "high",
            "cwe": [
              "CWE-1333"
            ],
            "cvss": {
              "score": 7.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
            },
            "range": ">=9.0.0 <9.0.7"
          }
        ],
        "effects": [
          "editorconfig",
          "grunt"
        ],
        "range": "<=3.1.3 || 9.0.0 - 9.0.6",
        "nodes": [
          "",
          "",
          "",
          "",
          "",
          "node_modules/grunt/node_modules/minimatch"
        ],
        "fixAvailable": {
          "name": "grunt",
          "version": "0.3.17",
          "isSemVerMajor": true
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 4,
        "moderate": 0,
        "high": 7,
        "critical": 4,
        "total": 15
      },
      "dependencies": {
        "prod": 1,
        "dev": 1122,
        "optional": 3,
        "peer": 2,
        "peerOptional": 0,
        "total": 1122
      }
    }
  }
}

--- end ---
{"added": 1, "removed": 0, "changed": 7, "audited": 1123, "funding": 165, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@tootallnate/once": {"name": "@tootallnate/once", "severity": "low", "isDirect": false, "via": [{"source": 1113977, "name": "@tootallnate/once", "dependency": "@tootallnate/once", "title": "@tootallnate/once vulnerable to Incorrect Control Flow Scoping", "url": "https://github.com/advisories/GHSA-vpq2-c234-7xj6", "severity": "low", "cwe": ["CWE-705"], "cvss": {"score": 3.3, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L"}, "range": "<3.0.1"}], "effects": ["http-proxy-agent"], "range": "<3.0.1", "nodes": ["node_modules/@tootallnate/once"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "babel-core": {"name": "babel-core", "severity": "critical", "isDirect": true, "via": ["babel-helpers", "babel-register", "babel-template", "babel-traverse", "json5"], "effects": ["babel-register"], "range": "5.8.20 - 7.0.0-beta.3", "nodes": ["node_modules/babel-core"], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "babel-helpers": {"name": "babel-helpers", "severity": "critical", "isDirect": false, "via": ["babel-template"], "effects": [], "range": "*", "nodes": ["node_modules/babel-helpers"], "fixAvailable": true}, "babel-register": {"name": "babel-register", "severity": "high", "isDirect": false, "via": ["babel-core"], "effects": ["babel-core"], "range": "*", "nodes": ["node_modules/babel-register"], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "babel-template": {"name": "babel-template", "severity": "critical", "isDirect": false, "via": ["babel-traverse"], "effects": ["babel-helpers"], "range": "*", "nodes": ["node_modules/babel-template"], "fixAvailable": true}, "babel-traverse": {"name": "babel-traverse", "severity": "critical", "isDirect": false, "via": [{"source": 1096879, "name": "babel-traverse", "dependency": "babel-traverse", "title": "Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code", "url": "https://github.com/advisories/GHSA-67hx-6x53-jw92", "severity": "critical", "cwe": ["CWE-184", "CWE-697"], "cvss": {"score": 9.4, "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"}, "range": "<7.23.2"}], "effects": ["babel-core", "babel-template"], "range": "*", "nodes": ["node_modules/babel-traverse"], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "editorconfig": {"name": "editorconfig", "severity": "high", "isDirect": false, "via": ["minimatch"], "effects": [], "range": "1.0.3 - 1.0.4 || 2.0.0", "nodes": [""], "fixAvailable": true}, "flatted": {"name": "flatted", "severity": "high", "isDirect": false, "via": [{"source": 1114526, "name": "flatted", "dependency": "flatted", "title": "flatted vulnerable to unbounded recursion DoS in parse() revive phase", "url": "https://github.com/advisories/GHSA-25h7-pfq9-p65f", "severity": "high", "cwe": ["CWE-674"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<3.4.0"}], "effects": [], "range": "<3.4.0", "nodes": [""], "fixAvailable": true}, "grunt": {"name": "grunt", "severity": "high", "isDirect": true, "via": ["minimatch"], "effects": ["grunt-eslint"], "range": ">=0.4.0-a", "nodes": ["node_modules/grunt"], "fixAvailable": {"name": "grunt", "version": "0.3.17", "isSemVerMajor": true}}, "grunt-eslint": {"name": "grunt-eslint", "severity": "high", "isDirect": true, "via": ["grunt"], "effects": [], "range": "<=1.0.0 || >=18.1.0", "nodes": ["node_modules/grunt-eslint"], "fixAvailable": {"name": "grunt-eslint", "version": "18.0.0", "isSemVerMajor": true}}, "http-proxy-agent": {"name": "http-proxy-agent", "severity": "low", "isDirect": false, "via": ["@tootallnate/once"], "effects": ["jsdom"], "range": "4.0.1 - 5.0.0", "nodes": ["node_modules/http-proxy-agent"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "jest-environment-jsdom": {"name": "jest-environment-jsdom", "severity": "low", "isDirect": true, "via": ["jsdom"], "effects": [], "range": "27.0.1 - 30.0.0-rc.1", "nodes": ["node_modules/jest-environment-jsdom"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "jsdom": {"name": "jsdom", "severity": "low", "isDirect": false, "via": ["http-proxy-agent"], "effects": ["jest-environment-jsdom"], "range": "16.6.0 - 22.1.0", "nodes": ["node_modules/jsdom"], "fixAvailable": {"name": "jest-environment-jsdom", "version": "30.3.0", "isSemVerMajor": true}}, "json5": {"name": "json5", "severity": "high", "isDirect": false, "via": [{"source": 1096543, "name": "json5", "dependency": "json5", "title": "Prototype Pollution in JSON5 via Parse Method", "url": "https://github.com/advisories/GHSA-9c47-m6qq-7p4h", "severity": "high", "cwe": ["CWE-1321"], "cvss": {"score": 7.1, "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H"}, "range": "<1.0.2"}], "effects": ["babel-core"], "range": "<1.0.2", "nodes": ["node_modules/babel-core/node_modules/json5"], "fixAvailable": {"name": "babel-core", "version": "4.7.16", "isSemVerMajor": true}}, "minimatch": {"name": "minimatch", "severity": "high", "isDirect": false, "via": [{"source": 1113459, "name": "minimatch", "dependency": "minimatch", "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern", "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 0, "vectorString": null}, "range": "<3.1.3"}, {"source": 1113465, "name": "minimatch", "dependency": "minimatch", "title": "minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern", "url": "https://github.com/advisories/GHSA-3ppc-4f35-3m26", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 0, "vectorString": null}, "range": ">=9.0.0 <9.0.6"}, {"source": 1113538, "name": "minimatch", "dependency": "minimatch", "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments", "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj", "severity": "high", "cwe": ["CWE-407"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<3.1.3"}, {"source": 1113544, "name": "minimatch", "dependency": "minimatch", "title": "minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments", "url": "https://github.com/advisories/GHSA-7r86-cg39-jmmj", "severity": "high", "cwe": ["CWE-407"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=9.0.0 <9.0.7"}, {"source": 1113546, "name": "minimatch", "dependency": "minimatch", "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions", "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<3.1.4"}, {"source": 1113552, "name": "minimatch", "dependency": "minimatch", "title": "minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions", "url": "https://github.com/advisories/GHSA-23c5-xmqv-rm74", "severity": "high", "cwe": ["CWE-1333"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": ">=9.0.0 <9.0.7"}], "effects": ["editorconfig", "grunt"], "range": "<=3.1.3 || 9.0.0 - 9.0.6", "nodes": ["", "", "", "", "", "node_modules/grunt/node_modules/minimatch"], "fixAvailable": {"name": "grunt", "version": "0.3.17", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 4, "moderate": 0, "high": 7, "critical": 4, "total": 15}, "dependencies": {"prod": 1, "dev": 1122, "optional": 3, "peer": 2, "peerOptional": 0, "total": 1122}}}}
$ /usr/bin/npm audit fix --only=dev
--- stderr ---
npm WARN invalid config only="dev" set in command line options
npm WARN invalid config Must be one of: null, prod, production
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---

changed 7 packages, and audited 1122 packages in 5s

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

# npm audit report

@tootallnate/once  <3.0.1
@tootallnate/once vulnerable to Incorrect Control Flow Scoping - https://github.com/advisories/GHSA-vpq2-c234-7xj6
fix available via `npm audit fix --force`
Will install jest-environment-jsdom@30.3.0, which is a breaking change
node_modules/@tootallnate/once
  http-proxy-agent  4.0.1 - 5.0.0
  Depends on vulnerable versions of @tootallnate/once
  node_modules/http-proxy-agent
    jsdom  16.6.0 - 22.1.0
    Depends on vulnerable versions of http-proxy-agent
    node_modules/jsdom
      jest-environment-jsdom  27.0.1 - 30.0.0-rc.1
      Depends on vulnerable versions of jsdom
      node_modules/jest-environment-jsdom

babel-traverse  *
Severity: critical
Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code - https://github.com/advisories/GHSA-67hx-6x53-jw92
fix available via `npm audit fix --force`
Will install babel-core@4.7.16, which is a breaking change
node_modules/babel-traverse
  babel-core  5.8.20 - 7.0.0-beta.3
  Depends on vulnerable versions of babel-helpers
  Depends on vulnerable versions of babel-register
  Depends on vulnerable versions of babel-template
  Depends on vulnerable versions of babel-traverse
  Depends on vulnerable versions of json5
  node_modules/babel-core
    babel-register  *
    Depends on vulnerable versions of babel-core
    node_modules/babel-register
  babel-template  *
  Depends on vulnerable versions of babel-traverse
  node_modules/babel-template
    babel-helpers  *
    Depends on vulnerable versions of babel-template
    node_modules/babel-helpers

json5  <1.0.2
Severity: high
Prototype Pollution in JSON5 via Parse Method - https://github.com/advisories/GHSA-9c47-m6qq-7p4h
fix available via `npm audit fix --force`
Will install babel-core@4.7.16, which is a breaking change
node_modules/babel-core/node_modules/json5

minimatch  <=3.1.3
Severity: high
minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern - https://github.com/advisories/GHSA-3ppc-4f35-3m26
minimatch has ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments - https://github.com/advisories/GHSA-7r86-cg39-jmmj
minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regular expressions - https://github.com/advisories/GHSA-23c5-xmqv-rm74
fix available via `npm audit fix --force`
Will install grunt@0.3.17, which is a breaking change
node_modules/grunt/node_modules/minimatch
  grunt  >=0.4.0-a
  Depends on vulnerable versions of minimatch
  node_modules/grunt
    grunt-eslint  <=1.0.0 || >=18.1.0
    Depends on vulnerable versions of grunt
    node_modules/grunt-eslint

13 vulnerabilities (4 low, 5 high, 4 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@wikimedia/codex-icons@2.4.0',
npm WARN EBADENGINE   required: { node: '>=20.19.1', npm: '>=10.8.2' },
npm WARN EBADENGINE   current: { node: 'v20.19.2', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated osenv@0.1.5: This package is no longer supported.
npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm WARN deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
npm WARN deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm WARN deprecated abab@2.0.6: Use your platform's native atob() and btoa() methods instead
npm WARN deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm WARN deprecated glob@7.1.7: Glob versions prior to v9 are no longer supported
npm WARN deprecated domexception@4.0.0: Use your platform's native DOMException instead
npm WARN deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
npm WARN deprecated core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
--- stdout ---

added 1121 packages, and audited 1122 packages in 15s

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

13 vulnerabilities (4 low, 5 high, 4 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stderr ---
PASS tests/jest/views/update-donations.test.js
PASS tests/jest/views/amount-downgrade.test.js
PASS tests/jest/views/cancel-donations.test.js
PASS tests/jest/views/pause-donations.test.js
PASS tests/jest/views/login.test.js
PASS tests/jest/views/home.test.js
PASS tests/jest/components/donations_history.test.js
PASS tests/jest/views/annual-conversion.test.js
PASS tests/jest/components/recurring-cancel-form.test.js
PASS tests/jest/components/header.test.js
PASS tests/jest/components/recurring-pause-form.test.js
PASS tests/jest/components/recurring-update-form.test.js
PASS tests/jest/components/recurring-cancel-confirmation.test.js
PASS tests/jest/components/recurring_contribution.test.js
PASS tests/jest/routes/router.test.js
PASS tests/jest/components/donations_list_table.test.js
PASS tests/jest/components/error-component.test.js
PASS tests/jest/components/recurring-update-success.test.js
PASS tests/jest/components/recurring-cancel-success.test.js
PASS tests/jest/components/recurring_contribution_summary.test.js
PASS tests/jest/components/app.test.js
PASS tests/jest/components/popup_link.test.js
PASS tests/jest/components/contact_details.test.js
PASS tests/jest/components/recurring-pause-success.test.js
PASS tests/jest/components/recurring-cancel-option-container.test.js
PASS tests/jest/components/onetime_contribution.test.js
PASS tests/jest/components/feedback-survey_component.test.js
PASS tests/jest/components/greeting_component.test.js

Test Suites: 28 passed, 28 total
Tests:       78 passed, 78 total
Snapshots:   0 total
Time:        6.025 s, estimated 7 s
Ran all test suites.
--- stdout ---

> test
> grunt test && npm run test:unit

Running "eslint:all" (eslint) task

/src/repo/Gruntfile.js
  37:11  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/adyen_gateway/forms/adyen.js
    1:26  warning  'Promise' is already defined as a built-in global variable           no-redeclare
    5:3   warning  'configFromServer' is never reassigned. Use 'const' instead          prefer-const
    6:3   warning  'payment_method' is never reassigned. Use 'const' instead            prefer-const
    8:3   warning  'country' is never reassigned. Use 'const' instead                   prefer-const
    9:3   warning  'language' is never reassigned. Use 'const' instead                  prefer-const
   17:3   warning  'GOOGLEPAY_COMPONENT_TYPE' is never reassigned. Use 'const' instead  prefer-const
   18:3   warning  'ACH_GET_DONOR_ADDRESS' is never reassigned. Use 'const' instead     prefer-const
   25:1   warning  Missing JSDoc @return type                                           jsdoc/require-returns-type
   66:5   warning  Unexpected var, use let or const instead                             no-var
   82:23  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
   84:11  warning  'bContact' is never reassigned. Use 'const' instead                  prefer-const
   85:8   warning  'sContact' is never reassigned. Use 'const' instead                  prefer-const
  133:5   warning  Unexpected var, use let or const instead                             no-var
  164:23  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  223:34  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  227:14  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  313:2   warning  'submitPromise' is never reassigned. Use 'const' instead             prefer-const
  313:22  warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  401:6   warning  ES2015 'Object.assign' method is forbidden                           es-x/no-object-assign
  540:4   warning  ES2015 'Object.assign' method is forbidden                           es-x/no-object-assign
  550:4   warning  'containerName' is never reassigned. Use 'const' instead             prefer-const
  554:3   warning  'component_type' is never reassigned. Use 'const' instead            prefer-const
  573:3   warning  'oldShowErrors' is never reassigned. Use 'const' instead             prefer-const
  595:3   warning  'config' is never reassigned. Use 'const' instead                    prefer-const
  603:3   warning  'checkoutPromise' is never reassigned. Use 'const' instead           prefer-const
  627:4   warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise
  654:4   warning  ES2015 'Promise' class is forbidden                                  es-x/no-promise

/src/repo/amazon_gateway/amazon.js
    3:6   warning  'clientId' is never reassigned. Use 'const' instead                   prefer-const
    4:3   warning  'sellerId' is never reassigned. Use 'const' instead                   prefer-const
    5:3   warning  'sandbox' is never reassigned. Use 'const' instead                    prefer-const
    6:3   warning  'returnUrl' is never reassigned. Use 'const' instead                  prefer-const
    7:3   warning  'widgetScript' is never reassigned. Use 'const' instead               prefer-const
    8:3   warning  'loginScript' is never reassigned. Use 'const' instead                prefer-const
    9:3   warning  'failPage' is never reassigned. Use 'const' instead                   prefer-const
   10:3   warning  'isRecurring' is never reassigned. Use 'const' instead                prefer-const
   14:3   warning  'validTokenPattern' is never reassigned. Use 'const' instead          prefer-const
   14:23  warning  Use a regular expression literal instead of the 'RegExp' constructor  prefer-regex-literals
   22:3   warning  'CARD_SELECT_DELAY' is never reassigned. Use 'const' instead          prefer-const
   98:2   warning  'accessToken' is never reassigned. Use 'const' instead                prefer-const
   99:2   warning  'loginError' is never reassigned. Use 'const' instead                 prefer-const
  129:12  warning  Avoid direct access to document.cookie. Use mw.cookie instead         mediawiki/no-cookie
  268:8   warning  Selector extensions are not allowed                                   no-jquery/no-sizzle

/src/repo/braintree_gateway/forms/braintree.js
  10:6  warning  'di' is never reassigned. Use 'const' instead              prefer-const
  12:3  warning  'payment_method' is never reassigned. Use 'const' instead  prefer-const
  13:3  warning  'scripts' is never reassigned. Use 'const' instead         prefer-const

/src/repo/dlocal_gateway/forms/dlocal.js
  27:7  warning  'dlocalInstance' is never reassigned. Use 'const' instead   prefer-const
  28:4  warning  'fields' is never reassigned. Use 'const' instead           prefer-const
  33:4  warning  'commonStyle' is never reassigned. Use 'const' instead      prefer-const
  49:3  warning  'cardField' is never reassigned. Use 'const' instead        prefer-const
  55:3  warning  'expirationField' is never reassigned. Use 'const' instead  prefer-const
  61:3  warning  'cvvField' is never reassigned. Use 'const' instead         prefer-const

/src/repo/gravy_gateway/forms/gravy.js
   13:2   warning  'configFromServer' is never reassigned. Use 'const' instead                          prefer-const
   14:2   warning  'sessionId' is never reassigned. Use 'const' instead                                 prefer-const
   15:2   warning  'environment' is never reassigned. Use 'const' instead                               prefer-const
   16:2   warning  'gravyId' is never reassigned. Use 'const' instead                                   prefer-const
   17:2   warning  'redirectPaypal' is never reassigned. Use 'const' instead                            prefer-const
   18:2   warning  'showRedirectText' is never reassigned. Use 'const' instead                          prefer-const
   21:2   warning  'language' is never reassigned. Use 'const' instead                                  prefer-const
   22:2   warning  'country' is never reassigned. Use 'const' instead                                   prefer-const
   23:2   warning  'isIndia' is never reassigned. Use 'const' instead                                   prefer-const
   24:2   warning  'applePayPaySessionVersionNumber' is never reassigned. Use 'const' instead           prefer-const
  128:15  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  130:25  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  130:49  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  273:8   warning  'extraData' is already declared in the upper scope on line 12 column 2               no-shadow
  442:43  warning  'appleSession' is already declared in the upper scope on line 20 column 2            no-shadow

/src/repo/modules/ext.donationInterface.donorPortal/components/DonationsDisclaimerComponent.vue
  4:34  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  6:34  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/DonationsHistory.vue
  128:25  warning  'panel' is already declared in the upper scope on line 138 column 10  no-shadow

/src/repo/modules/ext.donationInterface.donorPortal/components/DonationsListTable.vue
  21:22  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  41:37  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionAnnualConversionForm.vue
   35:37  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
   55:37  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  100:34  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionAnnualConversionSuccess.vue
  13:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  15:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionCancelSuccess.vue
  13:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionComponent.vue
  25:29  warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  48:5   warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionPauseSuccess.vue
  13:31  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/components/RecurringContributionUpdateSuccess.vue
  15:33  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/ext.donationInterface.donorPortal/views/LoginView.vue
   8:6   warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  37:7   warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  66:8   warning  'v-html' directive can lead to XSS attack  vue/no-v-html
  76:17  warning  'v-html' directive can lead to XSS attack  vue/no-v-html

/src/repo/modules/iframe.liberator.js
  1:10  warning  'self' is already defined as a built-in global variable  no-redeclare

/src/repo/modules/js/ext.donationInterface.applePayHelper.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/modules/js/ext.donationInterface.employerAutoComplete.js
  28:21  warning  Prefer .then to .done  no-jquery/no-done-fail

/src/repo/modules/js/ext.donationInterface.errorLog.js
  16:3  warning  'postdata' is never reassigned. Use 'const' instead  prefer-const

/src/repo/modules/js/ext.donationInterface.forms.js
    4:1   warning  Missing JSDoc @param "$" type                        jsdoc/require-param-type
    5:1   warning  Missing JSDoc @param "mw" type                       jsdoc/require-param-type
   74:27  warning  Selector extensions are not allowed                  no-jquery/no-sizzle
   90:12  warning  '$element' is never reassigned. Use 'const' instead  prefer-const
  107:1   warning  Missing JSDoc @param "checkboxName" type             jsdoc/require-param-type
  111:12  warning  '$element' is never reassigned. Use 'const' instead  prefer-const
  126:1   warning  The type 'result' is undefined                       jsdoc/no-undefined-types
  148:3   warning  'sendData' is never reassigned. Use 'const' instead  prefer-const
  187:4   warning  ES2015 'Object.assign' method is forbidden           es-x/no-object-assign
  239:14  warning  ES2015 'Promise' class is forbidden                  es-x/no-promise
  269:10  warning  ES2015 'Promise' class is forbidden                  es-x/no-promise
  283:4   warning  ES2015 'Promise' class is forbidden                  es-x/no-promise
  321:10  warning  Selector extensions are not allowed                  no-jquery/no-sizzle
  325:30  warning  Selector extensions are not allowed                  no-jquery/no-sizzle

/src/repo/modules/js/ext.donationInterface.jaVariant02.js
  8:1  warning  Missing JSDoc @param "mw" type  jsdoc/require-param-type
  9:1  warning  Missing JSDoc @param "$" type   jsdoc/require-param-type

/src/repo/modules/js/ext.donationInterface.monthlyConvert.js
    2:6   warning  'mc' is never reassigned. Use 'const' instead                         prefer-const
    6:3   warning  'tyUrl' is never reassigned. Use 'const' instead                      prefer-const
    9:3   warning  'convertAmounts' is never reassigned. Use 'const' instead             prefer-const
   17:3   warning  'numAmounts' is never reassigned. Use 'const' instead                 prefer-const
   37:49  warning  'currency' is already declared in the upper scope on line 3 column 3  no-shadow
   78:39  warning  'currency' is already declared in the upper scope on line 3 column 3  no-shadow
  147:51  warning  'currency' is already declared in the upper scope on line 3 column 3  no-shadow
  148:7   warning  'rates' is never reassigned. Use 'const' instead                      prefer-const
  149:4   warning  'amountRules' is never reassigned. Use 'const' instead                prefer-const
  151:4   warning  '$smallAmountMessage' is never reassigned. Use 'const' instead        prefer-const
  161:3   warning  'formattedMin' is never reassigned. Use 'const' instead               prefer-const
  177:4   warning  'locale' is never reassigned. Use 'const' instead                     prefer-const
  180:3   warning  'presetAmount' is never reassigned. Use 'const' instead               prefer-const

/src/repo/modules/js/ext.donationInterface.monthlyConvertAnnual.js
   3:7   warning  'mc' is never reassigned. Use 'const' instead                        prefer-const
   3:31  warning  'originalGetSendData' is never reassigned. Use 'const' instead       prefer-const
   4:4   warning  'originalAmount' is never reassigned. Use 'const' instead            prefer-const
   5:4   warning  '$otherAmountMonthlyInput' is never reassigned. Use 'const' instead  prefer-const
   5:62  warning  '$otherAmountAnnualInput' is never reassigned. Use 'const' instead   prefer-const
   6:4   warning  '$otherMonthlySubmit' is never reassigned. Use 'const' instead       prefer-const
   6:60  warning  '$otherAnnualSubmit' is never reassigned. Use 'const' instead        prefer-const
   7:4   warning  '$smallAmountMessage' is never reassigned. Use 'const' instead       prefer-const
  15:3   warning  'originalAmountFormatted' is never reassigned. Use 'const' instead   prefer-const

/src/repo/modules/js/ext.donationInterface.monthlyConvertMultiplier.js
  3:7  warning  'mc' is never reassigned. Use 'const' instead              prefer-const
  4:3  warning  'originalAmount' is never reassigned. Use 'const' instead  prefer-const

/src/repo/modules/js/ext.donationInterface.monthlyConvert_011.js
  3:7  warning  'mc' is never reassigned. Use 'const' instead              prefer-const
  4:4  warning  'locale' is never reassigned. Use 'const' instead          prefer-const
  5:3  warning  'originalAmount' is never reassigned. Use 'const' instead  prefer-const
  6:3  warning  'currency' is never reassigned. Use 'const' instead        prefer-const
  7:3  warning  'presetAmount' is never reassigned. Use 'const' instead    prefer-const
  8:3  warning  'formattedAsk' is never reassigned. Use 'const' instead    prefer-const

/src/repo/modules/js/ext.donationInterface.recurUpgrade.js
   3:7  warning  '$submitButton' is never reassigned. Use 'const' instead      prefer-const
   4:4  warning  '$amountField' is never reassigned. Use 'const' instead       prefer-const
   5:4  warning  '$otherAmountField' is never reassigned. Use 'const' instead  prefer-const
   6:4  warning  '$totalMessage' is never reassigned. Use 'const' instead      prefer-const
   7:4  warning  '$newTotalAmount' is never reassigned. Use 'const' instead    prefer-const
   8:4  warning  '$form' is never reassigned. Use 'const' instead              prefer-const
   9:4  warning  'originalAmount' is never reassigned. Use 'const' instead     prefer-const
  10:4  warning  'currency' is never reassigned. Use 'const' instead           prefer-const
  11:4  warning  'maximum' is never reassigned. Use 'const' instead            prefer-const
  12:4  warning  'nextDateFormatted' is never reassigned. Use 'const' instead  prefer-const
  14:4  warning  'preSelectAmount' is never reassigned. Use 'const' instead    prefer-const
  38:4  warning  'valueIsValid' is never reassigned. Use 'const' instead       prefer-const

/src/repo/modules/js/ext.donationInterface.validation.js
   7:1   warning  Missing JSDoc @param "$" type                                      jsdoc/require-param-type
   8:1   warning  Missing JSDoc @param "mw" type                                     jsdoc/require-param-type
  11:6   warning  'di' is never reassigned. Use 'const' instead                      prefer-const
  13:3   warning  'mcDomains' is never reassigned. Use 'const' instead               prefer-const
  33:3   warning  'multiCountrySubdomains' is never reassigned. Use 'const' instead  prefer-const
  34:3   warning  'countryTlds' is never reassigned. Use 'const' instead             prefer-const
  40:26  warning  'i' is already declared in the upper scope on line 39 column 36    no-shadow

/src/repo/modules/validate_input.js
    1:1   warning  Missing JSDoc @return declaration                                                    jsdoc/require-returns
    9:3   warning  'rates' is never reassigned. Use 'const' instead                                     prefer-const
   10:3   warning  'amountRules' is never reassigned. Use 'const' instead                               prefer-const
   14:3   warning  '$amountMsg' is never reassigned. Use 'const' instead                                prefer-const
   15:3   warning  'threeDecimalCurrencies' is never reassigned. Use 'const' instead                    prefer-const
   86:3   warning  'invalids' is never reassigned. Use 'const' instead                                  prefer-const
   87:3   warning  'rules' is never reassigned. Use 'const' instead                                     prefer-const
  105:27  warning  'value' is already declared in the upper scope on line 82 column 6                   no-shadow
  107:14  warning  All possible message keys should be documented. See https://w.wiki/4r9a for details  mediawiki/msg-doc
  113:23  warning  'i' is already declared in the upper scope on line 85 column 3                       no-shadow
  145:2   warning  'countryField' is never reassigned. Use 'const' instead                              prefer-const
  168:2   warning  'emailAdd' is never reassigned. Use 'const' instead                                  prefer-const
  220:2   warning  'phoneAdd' is never reassigned. Use 'const' instead                                  prefer-const
  241:11  warning  Avoid direct access to document.cookie. Use mw.cookie instead                        mediawiki/no-cookie
  242:16  warning  Avoid direct access to document.cookie. Use mw.cookie instead                        mediawiki/no-cookie
  243:12  warning  Avoid direct access to document.cookie. Use mw.cookie instead                        mediawiki/no-cookie

/src/repo/paypal_ec_gateway/forms/js/paypal.js
  2:6  warning  'di' is never reassigned. Use 'const' instead     prefer-const
  3:3  warning  'rules' is never reassigned. Use 'const' instead  prefer-const

/src/repo/tests/jest/components/recurring_contribution.test.js
  55:19  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign
  69:19  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/amount-downgrade.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/annual-conversion.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/cancel-donations.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/pause-donations.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

/src/repo/tests/jest/views/update-donations.test.js
  5:34  warning  ES2015 'Object.assign' method is forbidden  es-x/no-object-assign

✖ 181 problems (0 errors, 181 warnings)


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

Running "banana:DonationInterface" (banana) task
>> The "fr" translation has 1 translation with trailing whitespace:
>> * donorportal-coming-soon
>> 10 message directories checked.

Done.

> test:unit
> jest

----------------------------------------------------|---------|----------|---------|---------|-----------------------
File                                                | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s     
----------------------------------------------------|---------|----------|---------|---------|-----------------------
All files                                           |    94.2 |    87.01 |   87.45 |   94.17 |                       
 ext.donationInterface.donorPortal                  |   75.34 |    64.15 |   77.77 |   75.34 |                       
  apiPostAction.js                                  |     100 |      100 |     100 |     100 |                       
  normalizeInput.js                                 |   63.88 |    59.45 |      75 |   63.88 | 4,21,32-35,54-66      
  router.js                                         |      80 |    71.42 |      50 |      80 | 12-13,19-20,52        
  trackingParams.js                                 |     100 |      100 |     100 |     100 |                       
 ext.donationInterface.donorPortal/components       |   95.01 |    91.61 |   84.61 |   95.01 |                       
  App.vue                                           |     100 |      100 |     100 |     100 |                       
  DonationsDisclaimerComponent.vue                  |     100 |      100 |     100 |     100 |                       
  DonationsHistory.vue                              |   94.44 |      100 |      75 |   94.44 | 16-23                 
  DonationsListTable.vue                            |   89.28 |    94.44 |   73.33 |   89.28 | 23,40,137-153,183-199 
  DonorCardComponent.vue                            |     100 |       90 |     100 |     100 | 78                    
  DonorContactDetails.vue                           |   93.93 |    86.36 |     100 |   93.93 | 46,48                 
  EndowmentInformationComponent.vue                 |     100 |      100 |     100 |     100 |                       
  ErrorComponent.vue                                |     100 |      100 |     100 |     100 |                       
  FeedbackSurveyComponent.vue                       |     100 |      100 |     100 |     100 |                       
  GreetingComponent.vue                             |     100 |      100 |     100 |     100 |                       
  Header.vue                                        |   87.17 |    88.23 |   66.66 |   87.17 | 30-37,134             
  OnetimeContribution.vue                           |     100 |      100 |     100 |     100 |                       
  PopupLink.vue                                     |     100 |      100 |     100 |     100 |                       
  RadioButtonInput.vue                              |   94.44 |      100 |      75 |   94.44 | 63                    
  RecurringContributionAnnualConversionForm.vue     |   93.02 |    78.04 |      70 |   93.02 | 19,50,217-245,262     
  RecurringContributionAnnualConversionSuccess.vue  |      96 |      100 |   83.33 |      96 | 17                    
  RecurringContributionCancelAltOptionContainer.vue |     100 |      100 |   83.33 |     100 |                       
  RecurringContributionCancelConfirmation.vue       |   97.22 |       90 |      90 |   97.22 | 22                    
  RecurringContributionCancelForm.vue               |   94.23 |    91.66 |   85.71 |   94.23 | 24,52,55              
  RecurringContributionCancelSuccess.vue            |   96.42 |       50 |     100 |   96.42 | 28                    
  RecurringContributionComponent.vue                |   88.23 |    95.08 |   88.23 |   88.23 | 43-46,52,57,112,180   
  RecurringContributionPauseForm.vue                |   97.14 |      100 |    87.5 |   97.14 | 22                    
  RecurringContributionPauseSuccess.vue             |   94.44 |      100 |      75 |   94.44 | 17                    
  RecurringContributionSummary.vue                  |     100 |      100 |     100 |     100 |                       
  RecurringContributionUpdateForm.vue               |   96.72 |    89.18 |   83.33 |   96.72 | 85,183                
  RecurringContributionUpdateSuccess.vue            |     100 |      100 |     100 |     100 |                       
  RelatedContentComponent.vue                       |   94.11 |      100 |      60 |   94.11 | 99-105                
 ext.donationInterface.donorPortal/views            |   96.33 |     83.9 |   97.01 |   96.27 |                       
  AmountDowngrade.vue                               |   97.61 |       75 |     100 |   97.56 | 32                    
  AnnualConversion.vue                              |    97.5 |       75 |     100 |   97.43 | 32                    
  CancelDonations.vue                               |   98.36 |    85.71 |     100 |   98.33 | 35                    
  Home.vue                                          |   96.77 |       90 |     100 |   96.77 | 38                    
  LoginView.vue                                     |   91.42 |    89.65 |   90.47 |   91.42 | 40-42,77,85,192       
  PauseDonations.vue                                |   97.61 |       75 |     100 |   97.56 | 30                    
  UpdateDonations.vue                               |   97.56 |       80 |     100 |    97.5 | 31                    
----------------------------------------------------|---------|----------|---------|---------|-----------------------

--- end ---
{}
{}
{}
{"1114526": {"source": 1114526, "name": "flatted", "dependency": "flatted", "title": "flatted vulnerable to unbounded recursion DoS in parse() revive phase", "url": "https://github.com/advisories/GHSA-25h7-pfq9-p65f", "severity": "high", "cwe": ["CWE-674"], "cvss": {"score": 7.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"}, "range": "<3.4.0"}}
Upgrading n:flatted from 3.3.3 -> 3.4.1
$ package-lock-lint /src/repo/package-lock.json
--- stdout ---
Checking /src/repo/package-lock.json

--- end ---
build: Updating dependencies

composer:
* mediawiki/mediawiki-codesniffer: 49.0.0 → 50.0.0
* mediawiki/mediawiki-phan-config: 0.18.0 → 0.20.0

npm:
* @wikimedia/codex: 2.3.4 → 2.4.0
* @wikimedia/codex-icons: 2.3.4 → 2.4.0
* flatted: 3.3.3 → 3.4.1
  * https://github.com/advisories/GHSA-25h7-pfq9-p65f


$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmpslj91p4u
--- stdout ---
[master 7477bb5] build: Updating dependencies
 3 files changed, 39 insertions(+), 39 deletions(-)

--- end ---
$ git format-patch HEAD~1 --stdout
--- stdout ---
From 7477bb5ac0da4d53980953a73d1f2b93270594bb Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sun, 15 Mar 2026 07:54:47 +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: 49.0.0 → 50.0.0
* mediawiki/mediawiki-phan-config: 0.18.0 → 0.20.0

npm:
* @wikimedia/codex: 2.3.4 → 2.4.0
* @wikimedia/codex-icons: 2.3.4 → 2.4.0
* flatted: 3.3.3 → 3.4.1
  * https://github.com/advisories/GHSA-25h7-pfq9-p65f

Change-Id: I590a7179de580f2e54aed7a5ac77bfc6700e5b59
---
 composer.json     |  4 +--
 package-lock.json | 70 +++++++++++++++++++++++------------------------
 package.json      |  4 +--
 3 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/composer.json b/composer.json
index 1bcfd9f..b7b71d1 100644
--- a/composer.json
+++ b/composer.json
@@ -35,8 +35,8 @@
 		"whichbrowser/parser": "^2.1"
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "49.0.0",
-		"mediawiki/mediawiki-phan-config": "0.18.0",
+		"mediawiki/mediawiki-codesniffer": "50.0.0",
+		"mediawiki/mediawiki-phan-config": "0.20.0",
 		"mediawiki/minus-x": "2.0.1",
 		"php-parallel-lint/php-console-highlighter": "1.0.0",
 		"php-parallel-lint/php-parallel-lint": "1.4.0",
diff --git a/package-lock.json b/package-lock.json
index 6e448e8..2b8c51c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,8 +11,8 @@
 				"@vue/compiler-sfc": "3.5.13",
 				"@vue/test-utils": "2.4.6",
 				"@vue/vue3-jest": "29.2.6",
-				"@wikimedia/codex": "2.3.4",
-				"@wikimedia/codex-icons": "2.3.4",
+				"@wikimedia/codex": "2.4.0",
+				"@wikimedia/codex-icons": "2.4.0",
 				"babel-core": "^6.26.3",
 				"eslint-config-wikimedia": "0.32.3",
 				"eslint-plugin-jest": "27.2.1",
@@ -3131,12 +3131,12 @@
 			}
 		},
 		"node_modules/@stylistic/eslint-plugin/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -3831,13 +3831,13 @@
 			"dev": true
 		},
 		"node_modules/@wikimedia/codex": {
-			"version": "2.3.4",
-			"resolved": "https://registry.npmjs.org/@wikimedia/codex/-/codex-2.3.4.tgz",
-			"integrity": "sha512-Dn2R/LwRZedbgT98XyHEm02IAFXDNoLu8AvD6PFNX8Itk3H1Fdn9O4bUZWtcQGy9Y7dkmXnHUFswUH8QlXLn9g==",
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/@wikimedia/codex/-/codex-2.4.0.tgz",
+			"integrity": "sha512-j/I1gGbTo6pttjmwyYw9/3CeInK6mpBm2FVfABJk+B1Ylw5DskX+TqeCdKghwxSkxBt0ODbUTBYdFyafk+7ajg==",
 			"dev": true,
 			"dependencies": {
 				"@floating-ui/vue": "1.0.6",
-				"@wikimedia/codex-icons": "2.3.4"
+				"@wikimedia/codex-icons": "2.4.0"
 			},
 			"engines": {
 				"node": ">=20.19.1",
@@ -3848,9 +3848,9 @@
 			}
 		},
 		"node_modules/@wikimedia/codex-icons": {
-			"version": "2.3.4",
-			"resolved": "https://registry.npmjs.org/@wikimedia/codex-icons/-/codex-icons-2.3.4.tgz",
-			"integrity": "sha512-eRRYmqIyIbbiaDhiw+qdNNqQ4Npz04k6crSaqyWFS6Y4vh5Lrd3kbjk2uNZK3Tu0h+yz0mQmlMlBEOtb/r3dPw==",
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/@wikimedia/codex-icons/-/codex-icons-2.4.0.tgz",
+			"integrity": "sha512-BBtrzLR7r9ShxCMYfsx9XaKJu/peqt5Y/jtvWx3E2G5aL/Y/pIWAkv8NIvU+ztKklbHySLH5jSvVZVKxxvU0Ew==",
 			"dev": true,
 			"engines": {
 				"node": ">=20.19.1",
@@ -5491,14 +5491,14 @@
 			"dev": true
 		},
 		"node_modules/editorconfig": {
-			"version": "1.0.4",
-			"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz",
-			"integrity": "sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==",
+			"version": "1.0.7",
+			"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.7.tgz",
+			"integrity": "sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==",
 			"dev": true,
 			"dependencies": {
 				"@one-ini/wasm": "0.1.1",
 				"commander": "^10.0.0",
-				"minimatch": "9.0.1",
+				"minimatch": "^9.0.1",
 				"semver": "^7.5.3"
 			},
 			"bin": {
@@ -5518,12 +5518,12 @@
 			}
 		},
 		"node_modules/editorconfig/node_modules/minimatch": {
-			"version": "9.0.1",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-			"integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -6235,12 +6235,12 @@
 			}
 		},
 		"node_modules/eslint-config-wikimedia/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -7440,9 +7440,9 @@
 			}
 		},
 		"node_modules/flatted": {
-			"version": "3.3.3",
-			"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
-			"integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+			"version": "3.4.1",
+			"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
+			"integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
 			"dev": true
 		},
 		"node_modules/for-in": {
@@ -10654,12 +10654,12 @@
 			}
 		},
 		"node_modules/js-beautify/node_modules/minimatch": {
-			"version": "9.0.5",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+			"version": "9.0.9",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+			"integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
 			"dev": true,
 			"dependencies": {
-				"brace-expansion": "^2.0.1"
+				"brace-expansion": "^2.0.2"
 			},
 			"engines": {
 				"node": ">=16 || 14 >=14.17"
@@ -11154,9 +11154,9 @@
 			}
 		},
 		"node_modules/minimatch": {
-			"version": "3.1.2",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
-			"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+			"version": "3.1.5",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+			"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
 			"dev": true,
 			"dependencies": {
 				"brace-expansion": "^1.1.7"
diff --git a/package.json b/package.json
index 001cc8b..ca6a15e 100644
--- a/package.json
+++ b/package.json
@@ -16,8 +16,8 @@
 		"@vue/compiler-sfc": "3.5.13",
 		"@vue/test-utils": "2.4.6",
 		"@vue/vue3-jest": "29.2.6",
-		"@wikimedia/codex": "2.3.4",
-		"@wikimedia/codex-icons": "2.3.4",
+		"@wikimedia/codex": "2.4.0",
+		"@wikimedia/codex-icons": "2.4.0",
 		"babel-core": "^6.26.3",
 		"eslint-config-wikimedia": "0.32.3",
 		"eslint-plugin-jest": "27.2.1",
-- 
2.47.3


--- end ---

composer dependencies

Dependencies
Development dependencies

npm dependencies

Development dependencies

Logs

Source code is licensed under the AGPL.