mediawiki/core: REL1_42 (log #1388729)

sourcepatches

This run took 269 seconds.

From ebb342adb883fa6d402e2d1e400dbd842fb3bf0f Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Thu, 20 Jun 2024 00:38:37 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* braces: 3.0.2 → 3.0.3
  * https://github.com/advisories/GHSA-grv7-fg5c-xmjg
* ejs: 3.1.8 → 3.1.10
  * https://github.com/advisories/GHSA-ghr5-ch3p-vcr6
* follow-redirects: 1.15.5 → 1.15.6
  * https://github.com/advisories/GHSA-cxjh-pqwp-8mfp
* socket.io: 4.6.1 → 4.7.5
  * https://github.com/advisories/GHSA-25hc-qcg6-38wj

Change-Id: Ifa588582554c0f760b832161a673cc80fd139641
---
 package-lock.json | 227 +++++++++++++++++++++++++---------------------
 1 file changed, 125 insertions(+), 102 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 78921fd..bfea35a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -556,9 +556,9 @@
 			}
 		},
 		"node_modules/@socket.io/component-emitter": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
-			"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+			"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
 			"dev": true
 		},
 		"node_modules/@szmarczak/http-timer": {
@@ -607,9 +607,9 @@
 			"dev": true
 		},
 		"node_modules/@types/cors": {
-			"version": "2.8.13",
-			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
-			"integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
+			"version": "2.8.17",
+			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+			"integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
@@ -1962,12 +1962,12 @@
 			}
 		},
 		"node_modules/braces": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 			"dev": true,
 			"dependencies": {
-				"fill-range": "^7.0.1"
+				"fill-range": "^7.1.1"
 			},
 			"engines": {
 				"node": ">=8"
@@ -3636,9 +3636,9 @@
 			"dev": true
 		},
 		"node_modules/ejs": {
-			"version": "3.1.8",
-			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
-			"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
+			"version": "3.1.10",
+			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+			"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
 			"dev": true,
 			"dependencies": {
 				"jake": "^10.8.5"
@@ -3681,9 +3681,9 @@
 			}
 		},
 		"node_modules/engine.io": {
-			"version": "6.4.2",
-			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
-			"integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
+			"version": "6.5.5",
+			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+			"integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
 			"dev": true,
 			"dependencies": {
 				"@types/cookie": "^0.4.1",
@@ -3694,17 +3694,17 @@
 				"cookie": "~0.4.1",
 				"cors": "~2.8.5",
 				"debug": "~4.3.1",
-				"engine.io-parser": "~5.0.3",
-				"ws": "~8.11.0"
+				"engine.io-parser": "~5.2.1",
+				"ws": "~8.17.1"
 			},
 			"engines": {
-				"node": ">=10.0.0"
+				"node": ">=10.2.0"
 			}
 		},
 		"node_modules/engine.io-parser": {
-			"version": "5.0.6",
-			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz",
-			"integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==",
+			"version": "5.2.2",
+			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
+			"integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
 			"dev": true,
 			"engines": {
 				"node": ">=10.0.0"
@@ -4631,9 +4631,9 @@
 			}
 		},
 		"node_modules/fill-range": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"version": "7.1.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 			"dev": true,
 			"dependencies": {
 				"to-regex-range": "^5.0.1"
@@ -4760,9 +4760,9 @@
 			"dev": true
 		},
 		"node_modules/follow-redirects": {
-			"version": "1.15.5",
-			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
-			"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+			"version": "1.15.6",
+			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+			"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
 			"dev": true,
 			"funding": [
 				{
@@ -4859,6 +4859,20 @@
 			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 			"dev": true
 		},
+		"node_modules/fsevents": {
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+			"dev": true,
+			"hasInstallScript": true,
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+			}
+		},
 		"node_modules/function-bind": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -9493,35 +9507,37 @@
 			}
 		},
 		"node_modules/socket.io": {
-			"version": "4.6.1",
-			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz",
-			"integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==",
+			"version": "4.7.5",
+			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+			"integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
 			"dev": true,
 			"dependencies": {
 				"accepts": "~1.3.4",
 				"base64id": "~2.0.0",
+				"cors": "~2.8.5",
 				"debug": "~4.3.2",
-				"engine.io": "~6.4.1",
+				"engine.io": "~6.5.2",
 				"socket.io-adapter": "~2.5.2",
-				"socket.io-parser": "~4.2.1"
+				"socket.io-parser": "~4.2.4"
 			},
 			"engines": {
-				"node": ">=10.0.0"
+				"node": ">=10.2.0"
 			}
 		},
 		"node_modules/socket.io-adapter": {
-			"version": "2.5.2",
-			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
-			"integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
+			"version": "2.5.5",
+			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+			"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
 			"dev": true,
 			"dependencies": {
-				"ws": "~8.11.0"
+				"debug": "~4.3.4",
+				"ws": "~8.17.1"
 			}
 		},
 		"node_modules/socket.io-parser": {
-			"version": "4.2.3",
-			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz",
-			"integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==",
+			"version": "4.2.4",
+			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+			"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
 			"dev": true,
 			"dependencies": {
 				"@socket.io/component-emitter": "~3.1.0",
@@ -10734,8 +10750,17 @@
 			}
 		},
 		"node_modules/wdio-mediawiki": {
-			"resolved": "tests/selenium/wdio-mediawiki",
-			"link": true
+			"version": "2.5.0",
+			"resolved": "file:tests/selenium/wdio-mediawiki",
+			"dev": true,
+			"license": "MIT",
+			"dependencies": {
+				"mwbot": "2.1.3"
+			},
+			"engines": {
+				"node": ">=18.17.0",
+				"npm": ">=9.6.7"
+			}
 		},
 		"node_modules/webdriver": {
 			"version": "7.33.0",
@@ -10942,16 +10967,16 @@
 			}
 		},
 		"node_modules/ws": {
-			"version": "8.11.0",
-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
-			"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+			"version": "8.17.1",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+			"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
 			"dev": true,
 			"engines": {
 				"node": ">=10.0.0"
 			},
 			"peerDependencies": {
 				"bufferutil": "^4.0.1",
-				"utf-8-validate": "^5.0.2"
+				"utf-8-validate": ">=5.0.2"
 			},
 			"peerDependenciesMeta": {
 				"bufferutil": {
@@ -11316,18 +11341,6 @@
 			"funding": {
 				"url": "https://github.com/sponsors/isaacs"
 			}
-		},
-		"tests/selenium/wdio-mediawiki": {
-			"version": "2.5.0",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"mwbot": "2.1.3"
-			},
-			"engines": {
-				"node": ">=18.17.0",
-				"npm": ">=9.6.7"
-			}
 		}
 	},
 	"dependencies": {
@@ -11689,9 +11702,9 @@
 			"dev": true
 		},
 		"@socket.io/component-emitter": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
-			"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+			"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
 			"dev": true
 		},
 		"@szmarczak/http-timer": {
@@ -11734,9 +11747,9 @@
 			"dev": true
 		},
 		"@types/cors": {
-			"version": "2.8.13",
-			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
-			"integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
+			"version": "2.8.17",
+			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+			"integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
 			"dev": true,
 			"requires": {
 				"@types/node": "*"
@@ -12860,12 +12873,12 @@
 			}
 		},
 		"braces": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 			"dev": true,
 			"requires": {
-				"fill-range": "^7.0.1"
+				"fill-range": "^7.1.1"
 			}
 		},
 		"browser-stdout": {
@@ -14113,9 +14126,9 @@
 			"dev": true
 		},
 		"ejs": {
-			"version": "3.1.8",
-			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
-			"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
+			"version": "3.1.10",
+			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+			"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
 			"dev": true,
 			"requires": {
 				"jake": "^10.8.5"
@@ -14149,9 +14162,9 @@
 			}
 		},
 		"engine.io": {
-			"version": "6.4.2",
-			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
-			"integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
+			"version": "6.5.5",
+			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+			"integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
 			"dev": true,
 			"requires": {
 				"@types/cookie": "^0.4.1",
@@ -14162,14 +14175,14 @@
 				"cookie": "~0.4.1",
 				"cors": "~2.8.5",
 				"debug": "~4.3.1",
-				"engine.io-parser": "~5.0.3",
-				"ws": "~8.11.0"
+				"engine.io-parser": "~5.2.1",
+				"ws": "~8.17.1"
 			}
 		},
 		"engine.io-parser": {
-			"version": "5.0.6",
-			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz",
-			"integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==",
+			"version": "5.2.2",
+			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
+			"integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
 			"dev": true
 		},
 		"ent": {
@@ -14856,9 +14869,9 @@
 			}
 		},
 		"fill-range": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"version": "7.1.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 			"dev": true,
 			"requires": {
 				"to-regex-range": "^5.0.1"
@@ -14960,9 +14973,9 @@
 			"dev": true
 		},
 		"follow-redirects": {
-			"version": "1.15.5",
-			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
-			"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+			"version": "1.15.6",
+			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+			"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
 			"dev": true
 		},
 		"for-in": {
@@ -15026,6 +15039,13 @@
 			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 			"dev": true
 		},
+		"fsevents": {
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+			"dev": true,
+			"optional": true
+		},
 		"function-bind": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -18575,32 +18595,34 @@
 			}
 		},
 		"socket.io": {
-			"version": "4.6.1",
-			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz",
-			"integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==",
+			"version": "4.7.5",
+			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+			"integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
 			"dev": true,
 			"requires": {
 				"accepts": "~1.3.4",
 				"base64id": "~2.0.0",
+				"cors": "~2.8.5",
 				"debug": "~4.3.2",
-				"engine.io": "~6.4.1",
+				"engine.io": "~6.5.2",
 				"socket.io-adapter": "~2.5.2",
-				"socket.io-parser": "~4.2.1"
+				"socket.io-parser": "~4.2.4"
 			}
 		},
 		"socket.io-adapter": {
-			"version": "2.5.2",
-			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
-			"integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
+			"version": "2.5.5",
+			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+			"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
 			"dev": true,
 			"requires": {
-				"ws": "~8.11.0"
+				"debug": "~4.3.4",
+				"ws": "~8.17.1"
 			}
 		},
 		"socket.io-parser": {
-			"version": "4.2.3",
-			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz",
-			"integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==",
+			"version": "4.2.4",
+			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+			"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
 			"dev": true,
 			"requires": {
 				"@socket.io/component-emitter": "~3.1.0",
@@ -19531,7 +19553,8 @@
 			}
 		},
 		"wdio-mediawiki": {
-			"version": "file:tests/selenium/wdio-mediawiki",
+			"version": "2.5.0",
+			"dev": true,
 			"requires": {
 				"mwbot": "2.1.3"
 			}
@@ -19703,9 +19726,9 @@
 			}
 		},
 		"ws": {
-			"version": "8.11.0",
-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
-			"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+			"version": "8.17.1",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+			"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
 			"dev": true,
 			"requires": {}
 		},
-- 
2.39.2

$ date
--- stdout ---
Thu Jun 20 00:35:16 UTC 2024

--- end ---
$ git clone file:///srv/git/mediawiki-core.git repo --depth=1 -b REL1_42
--- stderr ---
Cloning into 'repo'...
Updating files:  87% (8301/9540)
Updating files:  88% (8396/9540)
Updating files:  89% (8491/9540)
Updating files:  90% (8586/9540)
Updating files:  91% (8682/9540)
Updating files:  92% (8777/9540)
Updating files:  93% (8873/9540)
Updating files:  94% (8968/9540)
Updating files:  95% (9063/9540)
Updating files:  96% (9159/9540)
Updating files:  97% (9254/9540)
Updating files:  98% (9350/9540)
Updating files:  99% (9445/9540)
Updating files: 100% (9540/9540)
Updating files: 100% (9540/9540), done.
--- stdout ---

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

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

--- end ---
$ git submodule update --init
--- stderr ---
Submodule 'extensions/AbuseFilter' (https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter) registered for path 'extensions/AbuseFilter'
Submodule 'extensions/CategoryTree' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CategoryTree) registered for path 'extensions/CategoryTree'
Submodule 'extensions/Cite' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite) registered for path 'extensions/Cite'
Submodule 'extensions/CiteThisPage' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CiteThisPage) registered for path 'extensions/CiteThisPage'
Submodule 'extensions/CodeEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeEditor) registered for path 'extensions/CodeEditor'
Submodule 'extensions/ConfirmEdit' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ConfirmEdit) registered for path 'extensions/ConfirmEdit'
Submodule 'extensions/DiscussionTools' (https://gerrit.wikimedia.org/r/mediawiki/extensions/DiscussionTools) registered for path 'extensions/DiscussionTools'
Submodule 'extensions/Echo' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo) registered for path 'extensions/Echo'
Submodule 'extensions/Gadgets' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets) registered for path 'extensions/Gadgets'
Submodule 'extensions/ImageMap' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ImageMap) registered for path 'extensions/ImageMap'
Submodule 'extensions/InputBox' (https://gerrit.wikimedia.org/r/mediawiki/extensions/InputBox) registered for path 'extensions/InputBox'
Submodule 'extensions/Interwiki' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Interwiki) registered for path 'extensions/Interwiki'
Submodule 'extensions/Linter' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Linter) registered for path 'extensions/Linter'
Submodule 'extensions/LoginNotify' (https://gerrit.wikimedia.org/r/mediawiki/extensions/LoginNotify) registered for path 'extensions/LoginNotify'
Submodule 'extensions/Math' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Math) registered for path 'extensions/Math'
Submodule 'extensions/MultimediaViewer' (https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer) registered for path 'extensions/MultimediaViewer'
Submodule 'extensions/Nuke' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Nuke) registered for path 'extensions/Nuke'
Submodule 'extensions/OATHAuth' (https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth) registered for path 'extensions/OATHAuth'
Submodule 'extensions/PageImages' (https://gerrit.wikimedia.org/r/mediawiki/extensions/PageImages) registered for path 'extensions/PageImages'
Submodule 'extensions/ParserFunctions' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserFunctions) registered for path 'extensions/ParserFunctions'
Submodule 'extensions/PdfHandler' (https://gerrit.wikimedia.org/r/mediawiki/extensions/PdfHandler) registered for path 'extensions/PdfHandler'
Submodule 'extensions/Poem' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Poem) registered for path 'extensions/Poem'
Submodule 'extensions/ReplaceText' (https://gerrit.wikimedia.org/r/mediawiki/extensions/ReplaceText) registered for path 'extensions/ReplaceText'
Submodule 'extensions/Scribunto' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto) registered for path 'extensions/Scribunto'
Submodule 'extensions/SecureLinkFixer' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SecureLinkFixer) registered for path 'extensions/SecureLinkFixer'
Submodule 'extensions/SpamBlacklist' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist) registered for path 'extensions/SpamBlacklist'
Submodule 'extensions/SyntaxHighlight_GeSHi' (https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi) registered for path 'extensions/SyntaxHighlight_GeSHi'
Submodule 'extensions/TemplateData' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateData) registered for path 'extensions/TemplateData'
Submodule 'extensions/TextExtracts' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts) registered for path 'extensions/TextExtracts'
Submodule 'extensions/Thanks' (https://gerrit.wikimedia.org/r/mediawiki/extensions/Thanks) registered for path 'extensions/Thanks'
Submodule 'extensions/TitleBlacklist' (https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist) registered for path 'extensions/TitleBlacklist'
Submodule 'extensions/VisualEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor) registered for path 'extensions/VisualEditor'
Submodule 'extensions/WikiEditor' (https://gerrit.wikimedia.org/r/mediawiki/extensions/WikiEditor) registered for path 'extensions/WikiEditor'
Submodule 'skins/MinervaNeue' (https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue) registered for path 'skins/MinervaNeue'
Submodule 'skins/MonoBook' (https://gerrit.wikimedia.org/r/mediawiki/skins/MonoBook) registered for path 'skins/MonoBook'
Submodule 'skins/Timeless' (https://gerrit.wikimedia.org/r/mediawiki/skins/Timeless) registered for path 'skins/Timeless'
Submodule 'skins/Vector' (https://gerrit.wikimedia.org/r/mediawiki/skins/Vector) registered for path 'skins/Vector'
Submodule 'vendor' (https://gerrit.wikimedia.org/r/mediawiki/vendor) registered for path 'vendor'
Cloning into '/src/repo/extensions/AbuseFilter'...
Cloning into '/src/repo/extensions/CategoryTree'...
Cloning into '/src/repo/extensions/Cite'...
Cloning into '/src/repo/extensions/CiteThisPage'...
Cloning into '/src/repo/extensions/CodeEditor'...
Cloning into '/src/repo/extensions/ConfirmEdit'...
Cloning into '/src/repo/extensions/DiscussionTools'...
Cloning into '/src/repo/extensions/Echo'...
Cloning into '/src/repo/extensions/Gadgets'...
Cloning into '/src/repo/extensions/ImageMap'...
Cloning into '/src/repo/extensions/InputBox'...
Cloning into '/src/repo/extensions/Interwiki'...
Cloning into '/src/repo/extensions/Linter'...
Cloning into '/src/repo/extensions/LoginNotify'...
Cloning into '/src/repo/extensions/Math'...
Cloning into '/src/repo/extensions/MultimediaViewer'...
Cloning into '/src/repo/extensions/Nuke'...
Cloning into '/src/repo/extensions/OATHAuth'...
Cloning into '/src/repo/extensions/PageImages'...
Cloning into '/src/repo/extensions/ParserFunctions'...
Cloning into '/src/repo/extensions/PdfHandler'...
Cloning into '/src/repo/extensions/Poem'...
Cloning into '/src/repo/extensions/ReplaceText'...
Cloning into '/src/repo/extensions/Scribunto'...
Cloning into '/src/repo/extensions/SecureLinkFixer'...
Cloning into '/src/repo/extensions/SpamBlacklist'...
Cloning into '/src/repo/extensions/SyntaxHighlight_GeSHi'...
Cloning into '/src/repo/extensions/TemplateData'...
Cloning into '/src/repo/extensions/TextExtracts'...
Cloning into '/src/repo/extensions/Thanks'...
Cloning into '/src/repo/extensions/TitleBlacklist'...
Cloning into '/src/repo/extensions/VisualEditor'...
Cloning into '/src/repo/extensions/WikiEditor'...
Cloning into '/src/repo/skins/MinervaNeue'...
Cloning into '/src/repo/skins/MonoBook'...
Cloning into '/src/repo/skins/Timeless'...
Cloning into '/src/repo/skins/Vector'...
Cloning into '/src/repo/vendor'...
--- stdout ---
Submodule path 'extensions/AbuseFilter': checked out '8473c0bdbc1405d19212ec0103594af9711c9ec1'
Submodule path 'extensions/CategoryTree': checked out 'c4cb0ec3d5b6e9bb967da19596d26b0bcc609da4'
Submodule path 'extensions/Cite': checked out '10b9ede274c23d625dcca7b4f6630598710e1b02'
Submodule path 'extensions/CiteThisPage': checked out '1c77a4526ca8ffcfd5f9525080a99179b1ac15a0'
Submodule path 'extensions/CodeEditor': checked out '549934791b8be819921e4d7910830dbd70c5f788'
Submodule path 'extensions/ConfirmEdit': checked out 'c12d7d82195e52252a207e312fb8c2d289a7a51b'
Submodule path 'extensions/DiscussionTools': checked out '8b23bc5a52baa163a2d988c9ab6c4564f24fdb45'
Submodule path 'extensions/Echo': checked out 'c4120227fabf179e8c9a4fd1f3ea762c243d9fd2'
Submodule path 'extensions/Gadgets': checked out 'ff1bff40d506d2d36544099fc6dcfe12f6303aad'
Submodule path 'extensions/ImageMap': checked out '832faa7c7a945d318312dfcc6c0174767cc5a50c'
Submodule path 'extensions/InputBox': checked out '0c40a75b1a98c878e1455ad0d2d45f26b5706384'
Submodule path 'extensions/Interwiki': checked out 'b9e35f2ede7bffcff34ba171a961ca48fcf2819c'
Submodule path 'extensions/Linter': checked out '6fa9d9f451bceb666d8becf0de324c37d9e5d566'
Submodule path 'extensions/LoginNotify': checked out '9ce5f03f4cff3e3736cfcb41e3cd5e580ac085be'
Submodule path 'extensions/Math': checked out 'be93a2d7e9b4972b8f1f08f61163153caec8511c'
Submodule path 'extensions/MultimediaViewer': checked out '2d6fd78ff749422a1cfccfe75f7aae2bb300b636'
Submodule path 'extensions/Nuke': checked out '54a2121e0855e445c32f3b9630e4410e53536bf6'
Submodule path 'extensions/OATHAuth': checked out '0e26225a3f721b479d3bb79fe63d9d450413de5f'
Submodule path 'extensions/PageImages': checked out '1669003c0ad79f2cc39de3b32ffe05d38946e387'
Submodule path 'extensions/ParserFunctions': checked out '7fc9e0dacef2a4b2ab2c390f89360b80f4745722'
Submodule path 'extensions/PdfHandler': checked out '441517ada1b2e35be8ebca6034b6165f09c9b3fb'
Submodule path 'extensions/Poem': checked out 'f18362eb6d4ca1aaa0a9cc528d483c9217d82c16'
Submodule path 'extensions/ReplaceText': checked out '3450fd0f3209441213eb7924a1a35378a86d6f9a'
Submodule path 'extensions/Scribunto': checked out '7dea5f00a98521725f69ed2cbac72d89b49e2ba7'
Submodule path 'extensions/SecureLinkFixer': checked out '974efa21772e65c3db3456b75dd207aa5dff539e'
Submodule path 'extensions/SpamBlacklist': checked out '4fa9a0e477e508838b15877203fee9198e0096b8'
Submodule path 'extensions/SyntaxHighlight_GeSHi': checked out 'e4fabbb7b4665e6066e931c5c48f39e0774c803a'
Submodule path 'extensions/TemplateData': checked out '606bfc9fbff954c1b94526b8bb3591e832ecd65b'
Submodule path 'extensions/TextExtracts': checked out '48f70fcb756c36df013817f59cbcb1f0723d8e88'
Submodule path 'extensions/Thanks': checked out '10e7b1267a1d4ffecdf745453fd0d07302dbe13e'
Submodule path 'extensions/TitleBlacklist': checked out '0284e98026132db94821cfb863a68010f6ff7a27'
Submodule path 'extensions/VisualEditor': checked out '4759a072c752ee8d71644c75ecbe9f8794a571da'
Submodule path 'extensions/WikiEditor': checked out '0a021330779fd028fead0553013d59d313f76f0a'
Submodule path 'skins/MinervaNeue': checked out '985106c2409939eed477ba4c61d5f558091192ad'
Submodule path 'skins/MonoBook': checked out 'bb482596d14da504860733f14aa601dc6ea59229'
Submodule path 'skins/Timeless': checked out 'a2a8f1cd83f8d92eaa8380e7e88461617a7df038'
Submodule path 'skins/Vector': checked out '9eaffef0be64811c0fd44138b7a40bf47b7e25a7'
Submodule path 'vendor': checked out '08c7e69347a10e29b1a64515cabe43feb341d065'

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

--- end ---
$ git show-ref refs/heads/REL1_42
--- stdout ---
f0ffdd4564ed7b2271e4e6133379b1270bb5159c refs/heads/REL1_42

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio"
      ],
      "effects": [],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/runner"
      ],
      "effects": [],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "braces": {
      "name": "braces",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1097496,
          "name": "braces",
          "dependency": "braces",
          "title": "Uncontrolled resource consumption in braces",
          "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
          "severity": "high",
          "cwe": [
            "CWE-1050"
          ],
          "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.0.3"
        }
      ],
      "effects": [],
      "range": "<3.0.3",
      "nodes": [
        "node_modules/braces"
      ],
      "fixAvailable": true
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "ejs": {
      "name": "ejs",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097492,
          "name": "ejs",
          "dependency": "ejs",
          "title": "ejs lacks certain pollution protection",
          "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.1.10"
        }
      ],
      "effects": [],
      "range": "<3.1.10",
      "nodes": [
        "node_modules/ejs"
      ],
      "fixAvailable": true
    },
    "engine.io": {
      "name": "engine.io",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "socket.io"
      ],
      "range": "0.7.8 - 0.7.9 || 6.0.0 - 6.5.4",
      "nodes": [
        "node_modules/engine.io"
      ],
      "fixAvailable": true
    },
    "follow-redirects": {
      "name": "follow-redirects",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096856,
          "name": "follow-redirects",
          "dependency": "follow-redirects",
          "title": "follow-redirects' Proxy-Authorization header kept across hosts",
          "url": "https://github.com/advisories/GHSA-cxjh-pqwp-8mfp",
          "severity": "moderate",
          "cwe": [
            "CWE-200"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
          },
          "range": "<=1.15.5"
        }
      ],
      "effects": [],
      "range": "<=1.15.5",
      "nodes": [
        "node_modules/follow-redirects"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": {
        "name": "mwbot",
        "version": "0.1.5",
        "isSemVerMajor": true
      }
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "11.0.0 - 22.11.1",
      "nodes": [
        "node_modules/devtools/node_modules/puppeteer-core",
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "mwbot",
        "version": "0.1.5",
        "isSemVerMajor": true
      }
    },
    "socket.io": {
      "name": "socket.io",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1097657,
          "name": "socket.io",
          "dependency": "socket.io",
          "title": "socket.io has an unhandled 'error' event",
          "url": "https://github.com/advisories/GHSA-25hc-qcg6-38wj",
          "severity": "high",
          "cwe": [
            "CWE-754"
          ],
          "cvss": {
            "score": 7.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
          },
          "range": ">=3.0.0 <4.6.2"
        },
        "engine.io"
      ],
      "effects": [],
      "range": "3.0.0 - 4.6.2",
      "nodes": [
        "node_modules/socket.io"
      ],
      "fixAvailable": true
    },
    "socket.io-adapter": {
      "name": "socket.io-adapter",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [],
      "range": "2.5.2 - 2.5.4",
      "nodes": [
        "node_modules/socket.io-adapter"
      ],
      "fixAvailable": true
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096643,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/tough-cookie"
      ],
      "fixAvailable": {
        "name": "mwbot",
        "version": "0.1.5",
        "isSemVerMajor": true
      }
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": false,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1097615,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "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": ">=8.0.0 <8.17.1"
        }
      ],
      "effects": [
        "engine.io",
        "puppeteer-core",
        "socket.io-adapter"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/devtools/node_modules/ws",
        "node_modules/puppeteer-core/node_modules/ws",
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 5,
      "high": 11,
      "critical": 0,
      "total": 16
    },
    "dependencies": {
      "prod": 1,
      "dev": 987,
      "optional": 1,
      "peer": 7,
      "peerOptional": 0,
      "total": 987
    }
  }
}

--- 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.
> MediaWiki\Composer\VersionChecker::onEvent
Loading composer repositories with package information
Updating dependencies
Lock file operations: 135 installs, 0 updates, 0 removals
  - Locking composer/pcre (3.1.4)
  - Locking composer/semver (3.4.0)
  - Locking composer/spdx-licenses (1.5.8)
  - Locking composer/xdebug-handler (3.0.5)
  - Locking cssjanus/cssjanus (v2.1.1)
  - Locking dealerdirect/phpcodesniffer-composer-installer (v1.0.0)
  - Locking doctrine/cache (2.2.0)
  - Locking doctrine/dbal (3.7.2)
  - Locking doctrine/deprecations (1.1.3)
  - Locking doctrine/event-manager (2.0.1)
  - Locking doctrine/instantiator (2.0.0)
  - Locking doctrine/sql-formatter (1.1.3)
  - Locking felixfbecker/advanced-json-rpc (v3.2.1)
  - Locking giorgiosironi/eris (0.14.0)
  - Locking guzzlehttp/guzzle (7.7.1)
  - Locking guzzlehttp/promises (2.0.2)
  - Locking guzzlehttp/psr7 (2.6.2)
  - Locking hamcrest/hamcrest-php (v2.0.1)
  - Locking johnkary/phpunit-speedtrap (v4.0.1)
  - Locking justinrainbow/json-schema (v5.2.13)
  - Locking liuggio/statsd-php-client (v1.0.18)
  - Locking mck89/peast (v1.16.2)
  - Locking mediawiki/mediawiki-codesniffer (v43.0.0)
  - Locking mediawiki/mediawiki-phan-config (0.14.0)
  - Locking mediawiki/phan-taint-check-plugin (6.0.0)
  - Locking microsoft/tolerant-php-parser (v0.1.2)
  - Locking monolog/monolog (2.9.2)
  - Locking myclabs/deep-copy (1.12.0)
  - Locking netresearch/jsonmapper (v4.4.1)
  - Locking nikic/php-parser (v4.19.1)
  - Locking oojs/oojs-ui (v0.49.1)
  - Locking pear/console_getopt (v1.4.3)
  - Locking pear/mail (v1.6.0)
  - Locking pear/mail_mime (1.10.12)
  - Locking pear/net_smtp (1.11.1)
  - Locking pear/net_socket (v1.2.2)
  - Locking pear/net_url2 (v2.2.2)
  - Locking pear/pear-core-minimal (v1.10.15)
  - Locking pear/pear_exception (v1.0.2)
  - Locking phan/phan (5.4.3)
  - Locking phar-io/manifest (2.0.4)
  - Locking phar-io/version (3.2.1)
  - 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.1.2)
  - Locking phpcsstandards/phpcsutils (1.0.9)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.4.1)
  - Locking phpdocumentor/type-resolver (1.8.2)
  - Locking phpstan/phpdoc-parser (1.29.1)
  - Locking phpunit/php-code-coverage (9.2.31)
  - Locking phpunit/php-file-iterator (3.0.6)
  - Locking phpunit/php-invoker (3.1.1)
  - Locking phpunit/php-text-template (2.0.4)
  - Locking phpunit/php-timer (5.0.3)
  - Locking phpunit/phpunit (9.6.16)
  - Locking psr/cache (3.0.0)
  - Locking psr/container (1.1.2)
  - Locking psr/http-client (1.0.3)
  - Locking psr/http-factory (1.1.0)
  - Locking psr/http-message (1.1)
  - Locking psr/log (1.1.4)
  - Locking psy/psysh (v0.12.4)
  - Locking ralouphie/getallheaders (3.0.3)
  - Locking sabre/event (5.1.4)
  - Locking sebastian/cli-parser (1.0.2)
  - Locking sebastian/code-unit (1.0.8)
  - Locking sebastian/code-unit-reverse-lookup (2.0.3)
  - Locking sebastian/comparator (4.0.8)
  - Locking sebastian/complexity (2.0.3)
  - Locking sebastian/diff (4.0.6)
  - Locking sebastian/environment (5.1.5)
  - Locking sebastian/exporter (4.0.6)
  - Locking sebastian/global-state (5.0.7)
  - Locking sebastian/lines-of-code (1.0.4)
  - Locking sebastian/object-enumerator (4.0.4)
  - Locking sebastian/object-reflector (2.0.4)
  - Locking sebastian/recursion-context (4.0.5)
  - Locking sebastian/resource-operations (3.0.4)
  - Locking sebastian/type (3.2.1)
  - Locking sebastian/version (3.0.2)
  - Locking seld/jsonlint (1.10.1)
  - Locking squizlabs/php_codesniffer (3.8.1)
  - Locking symfony/console (v7.1.1)
  - Locking symfony/deprecation-contracts (v3.5.0)
  - Locking symfony/polyfill-php80 (v1.29.0)
  - Locking symfony/polyfill-php81 (v1.29.0)
  - Locking symfony/polyfill-php82 (v1.29.0)
  - Locking symfony/polyfill-php83 (v1.29.0)
  - Locking symfony/service-contracts (v3.5.0)
  - Locking symfony/string (v7.1.1)
  - Locking symfony/var-dumper (v7.1.1)
  - Locking symfony/yaml (v5.4.35)
  - Locking theseer/tokenizer (1.2.3)
  - Locking tysonandre/var_representation_polyfill (0.1.3)
  - Locking webmozart/assert (1.11.0)
  - Locking wikimedia/alea (1.0.0)
  - Locking wikimedia/assert (v0.5.1)
  - Locking wikimedia/at-ease (v2.1.0)
  - Locking wikimedia/base-convert (v2.0.2)
  - Locking wikimedia/bcp-47-code (v2.0.0)
  - Locking wikimedia/cdb (3.0.0)
  - Locking wikimedia/cldr-plural-rule-parser (v2.0.0)
  - Locking wikimedia/common-passwords (v0.5.0)
  - Locking wikimedia/composer-merge-plugin (v2.1.0)
  - Locking wikimedia/html-formatter (4.1.0)
  - Locking wikimedia/idle-dom (v1.0.0)
  - Locking wikimedia/ip-utils (5.0.0)
  - Locking wikimedia/json-codec (v2.2.1)
  - Locking wikimedia/langconv (0.4.2)
  - Locking wikimedia/less.php (v4.2.1)
  - Locking wikimedia/minify (2.7.0)
  - Locking wikimedia/normalized-exception (v1.0.1)
  - Locking wikimedia/object-factory (v5.0.1)
  - Locking wikimedia/parsoid (v0.19.0)
  - Locking wikimedia/php-session-serializer (v2.0.1)
  - Locking wikimedia/purtle (v1.0.8)
  - Locking wikimedia/relpath (4.0.0)
  - Locking wikimedia/remex-html (4.1.0)
  - Locking wikimedia/request-timeout (1.2.0)
  - Locking wikimedia/running-stat (v2.1.0)
  - Locking wikimedia/scoped-callback (v4.0.0)
  - Locking wikimedia/services (3.0.0)
  - Locking wikimedia/shellbox (4.0.2)
  - Locking wikimedia/testing-access-wrapper (3.0.0)
  - Locking wikimedia/timestamp (v4.1.1)
  - Locking wikimedia/utfnormal (4.0.0)
  - Locking wikimedia/wait-condition-loop (v2.0.2)
  - Locking wikimedia/wikipeg (4.0.0)
  - Locking wikimedia/wrappedstring (v4.0.1)
  - Locking wikimedia/xmp-reader (0.9.1)
  - Locking wikimedia/zest-css (3.0.1)
  - Locking wmde/hamcrest-html-matchers (v1.0.0)
  - Locking zordius/lightncandy (v1.2.6)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 71 installs, 3 updates, 6 removals
  - Downloading doctrine/dbal (3.7.2)
  - Downloading seld/jsonlint (1.10.1)
 0/2 [>---------------------------]   0%
 1/2 [==============>-------------]  50%
 2/2 [============================] 100%
  - Removing wikimedia/equivset (1.6.1)
  - Removing jakobo/hotp-php (v2.0.0)
  - Removing endroid/qr-code (4.6.1)
  - Removing dasprid/enum (1.0.5)
  - Removing christian-riesen/base32 (1.6.0)
  - Removing bacon/bacon-qr-code (2.0.8)
  - Installing squizlabs/php_codesniffer (3.8.1): Extracting archive
 0/1 [>---------------------------]   0%
 1/1 [============================] 100%
  - Installing dealerdirect/phpcodesniffer-composer-installer (v1.0.0): Extracting archive
  - Installing composer/pcre (3.1.4): Extracting archive
  - Installing psr/cache (3.0.0): Extracting archive
  - Installing doctrine/event-manager (2.0.1): Extracting archive
  - Installing doctrine/deprecations (1.1.3): Extracting archive
  - Installing doctrine/cache (2.2.0): Extracting archive
  - Installing doctrine/dbal (3.7.2): Extracting archive
  - Installing doctrine/sql-formatter (1.1.3): Extracting archive
  - Installing giorgiosironi/eris (0.14.0): Extracting archive
  - Upgrading psr/http-factory (1.0.2 => 1.1.0): Extracting archive
  - Upgrading guzzlehttp/psr7 (2.4.5 => 2.6.2): Extracting archive
  - Installing sebastian/version (3.0.2): Extracting archive
  - Installing sebastian/type (3.2.1): Extracting archive
  - Installing sebastian/resource-operations (3.0.4): Extracting archive
  - Installing sebastian/recursion-context (4.0.5): Extracting archive
  - Installing sebastian/object-reflector (2.0.4): Extracting archive
  - Installing sebastian/object-enumerator (4.0.4): Extracting archive
  - Installing sebastian/global-state (5.0.7): Extracting archive
  - Installing sebastian/exporter (4.0.6): Extracting archive
  - Installing sebastian/environment (5.1.5): Extracting archive
  - Installing sebastian/diff (4.0.6): Extracting archive
  - Installing sebastian/comparator (4.0.8): Extracting archive
  - Installing sebastian/code-unit (1.0.8): Extracting archive
  - Installing sebastian/cli-parser (1.0.2): Extracting archive
  - Installing phpunit/php-timer (5.0.3): Extracting archive
  - Installing phpunit/php-text-template (2.0.4): Extracting archive
  - Installing phpunit/php-invoker (3.1.1): Extracting archive
  - Installing phpunit/php-file-iterator (3.0.6): Extracting archive
  - Installing theseer/tokenizer (1.2.3): Extracting archive
  - Installing nikic/php-parser (v4.19.1): Extracting archive
  - Installing sebastian/lines-of-code (1.0.4): Extracting archive
  - Installing sebastian/complexity (2.0.3): Extracting archive
  - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
  - Installing phpunit/php-code-coverage (9.2.31): Extracting archive
  - Installing phar-io/version (3.2.1): Extracting archive
  - Installing phar-io/manifest (2.0.4): Extracting archive
  - Installing myclabs/deep-copy (1.12.0): Extracting archive
  - Installing doctrine/instantiator (2.0.0): Extracting archive
  - Installing phpunit/phpunit (9.6.16): Extracting archive
  - Installing johnkary/phpunit-speedtrap (v4.0.1): Extracting archive
  - Installing phpcsstandards/phpcsutils (1.0.9): Extracting archive
  - Installing phpcsstandards/phpcsextra (1.1.2): Extracting archive
  - Installing composer/spdx-licenses (1.5.8): Extracting archive
  - Installing mediawiki/mediawiki-codesniffer (v43.0.0): Extracting archive
  - Installing tysonandre/var_representation_polyfill (0.1.3): Extracting archive
  - Installing symfony/string (v7.1.1): Extracting archive
  - Upgrading symfony/deprecation-contracts (v2.5.3 => v3.5.0): Extracting archive
  - Installing symfony/service-contracts (v3.5.0): Extracting archive
  - Installing symfony/console (v7.1.1): Extracting archive
  - Installing sabre/event (5.1.4): Extracting archive
  - Installing netresearch/jsonmapper (v4.4.1): Extracting archive
  - Installing microsoft/tolerant-php-parser (v0.1.2): Extracting archive
  - Installing webmozart/assert (1.11.0): Extracting archive
  - Installing phpstan/phpdoc-parser (1.29.1): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.8.2): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.4.1): Extracting archive
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Extracting archive
  - Installing composer/xdebug-handler (3.0.5): Extracting archive
  - Installing phan/phan (5.4.3): Extracting archive
  - Installing mediawiki/phan-taint-check-plugin (6.0.0): Extracting archive
  - Installing mediawiki/mediawiki-phan-config (0.14.0): 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 symfony/var-dumper (v7.1.1): Extracting archive
  - Installing psy/psysh (v0.12.4): Extracting archive
  - Installing seld/jsonlint (1.10.1): Extracting archive
  - Installing wikimedia/alea (1.0.0): Extracting archive
  - Installing wikimedia/langconv (0.4.2): Extracting archive
  - Installing wikimedia/testing-access-wrapper (3.0.0): Extracting archive
  - Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive
  - Installing wmde/hamcrest-html-matchers (v1.0.0): Extracting archive
  0/72 [>---------------------------]   0%
  8/72 [===>------------------------]  11%
 18/72 [=======>--------------------]  25%
 28/72 [==========>-----------------]  38%
 33/72 [============>---------------]  45%
 40/72 [===============>------------]  55%
 46/72 [=================>----------]  63%
 53/72 [====================>-------]  73%
 62/72 [========================>---]  86%
 68/72 [==========================>-]  94%
 72/72 [============================] 100%
20 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating optimized autoload files
50 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> MediaWiki\Composer\ComposerVendorHtaccessCreator::onEvent
--- stdout ---
PHP CodeSniffer Config installed_paths set to ../../mediawiki/mediawiki-codesniffer,../../phpcsstandards/phpcsextra,../../phpcsstandards/phpcsutils

--- end ---
$ /usr/bin/npm audit --json
--- stdout ---
{
  "auditReportVersion": 2,
  "vulnerabilities": {
    "@wdio/cli": {
      "name": "@wdio/cli",
      "severity": "high",
      "isDirect": true,
      "via": [
        "webdriverio"
      ],
      "effects": [],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/@wdio/cli"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "@wdio/local-runner": {
      "name": "@wdio/local-runner",
      "severity": "high",
      "isDirect": true,
      "via": [
        "@wdio/runner"
      ],
      "effects": [],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/@wdio/local-runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "@wdio/runner": {
      "name": "@wdio/runner",
      "severity": "high",
      "isDirect": false,
      "via": [
        "webdriverio"
      ],
      "effects": [
        "@wdio/local-runner"
      ],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/@wdio/runner"
      ],
      "fixAvailable": {
        "name": "@wdio/local-runner",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "braces": {
      "name": "braces",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1097496,
          "name": "braces",
          "dependency": "braces",
          "title": "Uncontrolled resource consumption in braces",
          "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
          "severity": "high",
          "cwe": [
            "CWE-1050"
          ],
          "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.0.3"
        }
      ],
      "effects": [],
      "range": "<3.0.3",
      "nodes": [
        "node_modules/braces"
      ],
      "fixAvailable": true
    },
    "devtools": {
      "name": "devtools",
      "severity": "high",
      "isDirect": false,
      "via": [
        "puppeteer-core"
      ],
      "effects": [],
      "range": ">=7.16.5",
      "nodes": [
        "node_modules/devtools"
      ],
      "fixAvailable": true
    },
    "ejs": {
      "name": "ejs",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1097492,
          "name": "ejs",
          "dependency": "ejs",
          "title": "ejs lacks certain pollution protection",
          "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 0,
            "vectorString": null
          },
          "range": "<3.1.10"
        }
      ],
      "effects": [],
      "range": "<3.1.10",
      "nodes": [
        "node_modules/ejs"
      ],
      "fixAvailable": true
    },
    "engine.io": {
      "name": "engine.io",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "socket.io"
      ],
      "range": "0.7.8 - 0.7.9 || 6.0.0 - 6.5.4",
      "nodes": [
        "node_modules/engine.io"
      ],
      "fixAvailable": true
    },
    "follow-redirects": {
      "name": "follow-redirects",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096856,
          "name": "follow-redirects",
          "dependency": "follow-redirects",
          "title": "follow-redirects' Proxy-Authorization header kept across hosts",
          "url": "https://github.com/advisories/GHSA-cxjh-pqwp-8mfp",
          "severity": "moderate",
          "cwe": [
            "CWE-200"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
          },
          "range": "<=1.15.5"
        }
      ],
      "effects": [],
      "range": "<=1.15.5",
      "nodes": [
        "node_modules/follow-redirects"
      ],
      "fixAvailable": true
    },
    "mwbot": {
      "name": "mwbot",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        "request"
      ],
      "effects": [],
      "range": ">=0.1.6",
      "nodes": [
        "node_modules/mwbot"
      ],
      "fixAvailable": {
        "name": "mwbot",
        "version": "0.1.5",
        "isSemVerMajor": true
      }
    },
    "puppeteer-core": {
      "name": "puppeteer-core",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [
        "devtools",
        "webdriverio"
      ],
      "range": "11.0.0 - 22.11.1",
      "nodes": [
        "node_modules/devtools/node_modules/puppeteer-core",
        "node_modules/puppeteer-core"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "request": {
      "name": "request",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096727,
          "name": "request",
          "dependency": "request",
          "title": "Server-Side Request Forgery in Request",
          "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
          "severity": "moderate",
          "cwe": [
            "CWE-918"
          ],
          "cvss": {
            "score": 6.1,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
          },
          "range": "<=2.88.2"
        },
        "tough-cookie"
      ],
      "effects": [
        "mwbot"
      ],
      "range": "*",
      "nodes": [
        "node_modules/request"
      ],
      "fixAvailable": {
        "name": "mwbot",
        "version": "0.1.5",
        "isSemVerMajor": true
      }
    },
    "socket.io": {
      "name": "socket.io",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1097657,
          "name": "socket.io",
          "dependency": "socket.io",
          "title": "socket.io has an unhandled 'error' event",
          "url": "https://github.com/advisories/GHSA-25hc-qcg6-38wj",
          "severity": "high",
          "cwe": [
            "CWE-754"
          ],
          "cvss": {
            "score": 7.3,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
          },
          "range": ">=3.0.0 <4.6.2"
        },
        "engine.io"
      ],
      "effects": [],
      "range": "3.0.0 - 4.6.2",
      "nodes": [
        "node_modules/socket.io"
      ],
      "fixAvailable": true
    },
    "socket.io-adapter": {
      "name": "socket.io-adapter",
      "severity": "high",
      "isDirect": false,
      "via": [
        "ws"
      ],
      "effects": [],
      "range": "2.5.2 - 2.5.4",
      "nodes": [
        "node_modules/socket.io-adapter"
      ],
      "fixAvailable": true
    },
    "tough-cookie": {
      "name": "tough-cookie",
      "severity": "moderate",
      "isDirect": false,
      "via": [
        {
          "source": 1096643,
          "name": "tough-cookie",
          "dependency": "tough-cookie",
          "title": "tough-cookie Prototype Pollution vulnerability",
          "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
          "severity": "moderate",
          "cwe": [
            "CWE-1321"
          ],
          "cvss": {
            "score": 6.5,
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
          },
          "range": "<4.1.3"
        }
      ],
      "effects": [
        "request"
      ],
      "range": "<4.1.3",
      "nodes": [
        "node_modules/tough-cookie"
      ],
      "fixAvailable": {
        "name": "mwbot",
        "version": "0.1.5",
        "isSemVerMajor": true
      }
    },
    "webdriverio": {
      "name": "webdriverio",
      "severity": "high",
      "isDirect": false,
      "via": [
        "devtools",
        "puppeteer-core"
      ],
      "effects": [
        "@wdio/cli",
        "@wdio/runner"
      ],
      "range": "7.16.5 - 8.39.0",
      "nodes": [
        "node_modules/webdriverio"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    },
    "ws": {
      "name": "ws",
      "severity": "high",
      "isDirect": false,
      "via": [
        {
          "source": 1097615,
          "name": "ws",
          "dependency": "ws",
          "title": "ws affected by a DoS when handling a request with many HTTP headers",
          "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
          "severity": "high",
          "cwe": [
            "CWE-476"
          ],
          "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": ">=8.0.0 <8.17.1"
        }
      ],
      "effects": [
        "engine.io",
        "puppeteer-core",
        "socket.io-adapter"
      ],
      "range": "8.0.0 - 8.17.0",
      "nodes": [
        "node_modules/devtools/node_modules/ws",
        "node_modules/puppeteer-core/node_modules/ws",
        "node_modules/ws"
      ],
      "fixAvailable": {
        "name": "@wdio/cli",
        "version": "7.16.4",
        "isSemVerMajor": true
      }
    }
  },
  "metadata": {
    "vulnerabilities": {
      "info": 0,
      "low": 0,
      "moderate": 5,
      "high": 11,
      "critical": 0,
      "total": 16
    },
    "dependencies": {
      "prod": 1,
      "dev": 987,
      "optional": 1,
      "peer": 7,
      "peerOptional": 0,
      "total": 987
    }
  }
}

--- 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: 'wdio-mediawiki@2.5.0',
npm WARN EBADENGINE   required: { node: '>=18.17.0', npm: '>=9.6.7' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
--- stdout ---
{
  "added": 987,
  "removed": 0,
  "changed": 0,
  "audited": 988,
  "funding": 140,
  "audit": {
    "auditReportVersion": 2,
    "vulnerabilities": {
      "@wdio/cli": {
        "name": "@wdio/cli",
        "severity": "high",
        "isDirect": true,
        "via": [
          "webdriverio"
        ],
        "effects": [],
        "range": "7.16.5 - 8.39.0",
        "nodes": [
          "node_modules/@wdio/cli"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "7.16.4",
          "isSemVerMajor": true
        }
      },
      "@wdio/local-runner": {
        "name": "@wdio/local-runner",
        "severity": "high",
        "isDirect": true,
        "via": [
          "@wdio/runner"
        ],
        "effects": [],
        "range": "7.16.5 - 8.39.0",
        "nodes": [
          "node_modules/@wdio/local-runner"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "7.16.4",
          "isSemVerMajor": true
        }
      },
      "@wdio/runner": {
        "name": "@wdio/runner",
        "severity": "high",
        "isDirect": false,
        "via": [
          "webdriverio"
        ],
        "effects": [
          "@wdio/local-runner"
        ],
        "range": "7.16.5 - 8.39.0",
        "nodes": [
          "node_modules/@wdio/runner"
        ],
        "fixAvailable": {
          "name": "@wdio/local-runner",
          "version": "7.16.4",
          "isSemVerMajor": true
        }
      },
      "braces": {
        "name": "braces",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1097496,
            "name": "braces",
            "dependency": "braces",
            "title": "Uncontrolled resource consumption in braces",
            "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg",
            "severity": "high",
            "cwe": [
              "CWE-1050"
            ],
            "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.0.3"
          }
        ],
        "effects": [],
        "range": "<3.0.3",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "devtools": {
        "name": "devtools",
        "severity": "high",
        "isDirect": false,
        "via": [
          "puppeteer-core"
        ],
        "effects": [],
        "range": ">=7.16.5",
        "nodes": [
          "node_modules/devtools"
        ],
        "fixAvailable": true
      },
      "ejs": {
        "name": "ejs",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1097492,
            "name": "ejs",
            "dependency": "ejs",
            "title": "ejs lacks certain pollution protection",
            "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6",
            "severity": "moderate",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 0,
              "vectorString": null
            },
            "range": "<3.1.10"
          }
        ],
        "effects": [],
        "range": "<3.1.10",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "engine.io": {
        "name": "engine.io",
        "severity": "high",
        "isDirect": false,
        "via": [
          "ws"
        ],
        "effects": [
          "socket.io"
        ],
        "range": "0.7.8 - 0.7.9 || 6.0.0 - 6.5.4",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "follow-redirects": {
        "name": "follow-redirects",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1096856,
            "name": "follow-redirects",
            "dependency": "follow-redirects",
            "title": "follow-redirects' Proxy-Authorization header kept across hosts",
            "url": "https://github.com/advisories/GHSA-cxjh-pqwp-8mfp",
            "severity": "moderate",
            "cwe": [
              "CWE-200"
            ],
            "cvss": {
              "score": 6.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"
            },
            "range": "<=1.15.5"
          }
        ],
        "effects": [],
        "range": "<=1.15.5",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "mwbot": {
        "name": "mwbot",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          "request"
        ],
        "effects": [],
        "range": ">=0.1.6",
        "nodes": [
          "node_modules/mwbot"
        ],
        "fixAvailable": {
          "name": "mwbot",
          "version": "0.1.5",
          "isSemVerMajor": true
        }
      },
      "puppeteer-core": {
        "name": "puppeteer-core",
        "severity": "high",
        "isDirect": false,
        "via": [
          "ws"
        ],
        "effects": [
          "devtools",
          "webdriverio"
        ],
        "range": "11.0.0 - 22.11.1",
        "nodes": [
          "node_modules/devtools/node_modules/puppeteer-core",
          "node_modules/puppeteer-core"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "7.16.4",
          "isSemVerMajor": true
        }
      },
      "request": {
        "name": "request",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1096727,
            "name": "request",
            "dependency": "request",
            "title": "Server-Side Request Forgery in Request",
            "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6",
            "severity": "moderate",
            "cwe": [
              "CWE-918"
            ],
            "cvss": {
              "score": 6.1,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
            },
            "range": "<=2.88.2"
          },
          "tough-cookie"
        ],
        "effects": [
          "mwbot"
        ],
        "range": "*",
        "nodes": [
          "node_modules/request"
        ],
        "fixAvailable": {
          "name": "mwbot",
          "version": "0.1.5",
          "isSemVerMajor": true
        }
      },
      "socket.io": {
        "name": "socket.io",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1097657,
            "name": "socket.io",
            "dependency": "socket.io",
            "title": "socket.io has an unhandled 'error' event",
            "url": "https://github.com/advisories/GHSA-25hc-qcg6-38wj",
            "severity": "high",
            "cwe": [
              "CWE-754"
            ],
            "cvss": {
              "score": 7.3,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"
            },
            "range": ">=3.0.0 <4.6.2"
          },
          "engine.io"
        ],
        "effects": [],
        "range": "3.0.0 - 4.6.2",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "socket.io-adapter": {
        "name": "socket.io-adapter",
        "severity": "high",
        "isDirect": false,
        "via": [
          "ws"
        ],
        "effects": [],
        "range": "2.5.2 - 2.5.4",
        "nodes": [
          ""
        ],
        "fixAvailable": true
      },
      "tough-cookie": {
        "name": "tough-cookie",
        "severity": "moderate",
        "isDirect": false,
        "via": [
          {
            "source": 1096643,
            "name": "tough-cookie",
            "dependency": "tough-cookie",
            "title": "tough-cookie Prototype Pollution vulnerability",
            "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3",
            "severity": "moderate",
            "cwe": [
              "CWE-1321"
            ],
            "cvss": {
              "score": 6.5,
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
            },
            "range": "<4.1.3"
          }
        ],
        "effects": [
          "request"
        ],
        "range": "<4.1.3",
        "nodes": [
          "node_modules/tough-cookie"
        ],
        "fixAvailable": {
          "name": "mwbot",
          "version": "0.1.5",
          "isSemVerMajor": true
        }
      },
      "webdriverio": {
        "name": "webdriverio",
        "severity": "high",
        "isDirect": false,
        "via": [
          "devtools",
          "puppeteer-core"
        ],
        "effects": [
          "@wdio/cli",
          "@wdio/runner"
        ],
        "range": "7.16.5 - 8.39.0",
        "nodes": [
          "node_modules/webdriverio"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "7.16.4",
          "isSemVerMajor": true
        }
      },
      "ws": {
        "name": "ws",
        "severity": "high",
        "isDirect": false,
        "via": [
          {
            "source": 1097615,
            "name": "ws",
            "dependency": "ws",
            "title": "ws affected by a DoS when handling a request with many HTTP headers",
            "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q",
            "severity": "high",
            "cwe": [
              "CWE-476"
            ],
            "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": ">=8.0.0 <8.17.1"
          }
        ],
        "effects": [
          "engine.io",
          "puppeteer-core",
          "socket.io-adapter"
        ],
        "range": "8.0.0 - 8.17.0",
        "nodes": [
          "",
          "node_modules/devtools/node_modules/ws",
          "node_modules/puppeteer-core/node_modules/ws"
        ],
        "fixAvailable": {
          "name": "@wdio/cli",
          "version": "7.16.4",
          "isSemVerMajor": true
        }
      }
    },
    "metadata": {
      "vulnerabilities": {
        "info": 0,
        "low": 0,
        "moderate": 5,
        "high": 11,
        "critical": 0,
        "total": 16
      },
      "dependencies": {
        "prod": 1,
        "dev": 987,
        "optional": 2,
        "peer": 7,
        "peerOptional": 0,
        "total": 987
      }
    }
  }
}

--- end ---
{"added": 987, "removed": 0, "changed": 0, "audited": 988, "funding": 140, "audit": {"auditReportVersion": 2, "vulnerabilities": {"@wdio/cli": {"name": "@wdio/cli", "severity": "high", "isDirect": true, "via": ["webdriverio"], "effects": [], "range": "7.16.5 - 8.39.0", "nodes": ["node_modules/@wdio/cli"], "fixAvailable": {"name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true}}, "@wdio/local-runner": {"name": "@wdio/local-runner", "severity": "high", "isDirect": true, "via": ["@wdio/runner"], "effects": [], "range": "7.16.5 - 8.39.0", "nodes": ["node_modules/@wdio/local-runner"], "fixAvailable": {"name": "@wdio/local-runner", "version": "7.16.4", "isSemVerMajor": true}}, "@wdio/runner": {"name": "@wdio/runner", "severity": "high", "isDirect": false, "via": ["webdriverio"], "effects": ["@wdio/local-runner"], "range": "7.16.5 - 8.39.0", "nodes": ["node_modules/@wdio/runner"], "fixAvailable": {"name": "@wdio/local-runner", "version": "7.16.4", "isSemVerMajor": true}}, "braces": {"name": "braces", "severity": "high", "isDirect": false, "via": [{"source": 1097496, "name": "braces", "dependency": "braces", "title": "Uncontrolled resource consumption in braces", "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg", "severity": "high", "cwe": ["CWE-1050"], "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.0.3"}], "effects": [], "range": "<3.0.3", "nodes": [""], "fixAvailable": true}, "devtools": {"name": "devtools", "severity": "high", "isDirect": false, "via": ["puppeteer-core"], "effects": [], "range": ">=7.16.5", "nodes": ["node_modules/devtools"], "fixAvailable": true}, "ejs": {"name": "ejs", "severity": "moderate", "isDirect": false, "via": [{"source": 1097492, "name": "ejs", "dependency": "ejs", "title": "ejs lacks certain pollution protection", "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 0, "vectorString": null}, "range": "<3.1.10"}], "effects": [], "range": "<3.1.10", "nodes": [""], "fixAvailable": true}, "engine.io": {"name": "engine.io", "severity": "high", "isDirect": false, "via": ["ws"], "effects": ["socket.io"], "range": "0.7.8 - 0.7.9 || 6.0.0 - 6.5.4", "nodes": [""], "fixAvailable": true}, "follow-redirects": {"name": "follow-redirects", "severity": "moderate", "isDirect": false, "via": [{"source": 1096856, "name": "follow-redirects", "dependency": "follow-redirects", "title": "follow-redirects' Proxy-Authorization header kept across hosts", "url": "https://github.com/advisories/GHSA-cxjh-pqwp-8mfp", "severity": "moderate", "cwe": ["CWE-200"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"}, "range": "<=1.15.5"}], "effects": [], "range": "<=1.15.5", "nodes": [""], "fixAvailable": true}, "mwbot": {"name": "mwbot", "severity": "moderate", "isDirect": false, "via": ["request"], "effects": [], "range": ">=0.1.6", "nodes": ["node_modules/mwbot"], "fixAvailable": {"name": "mwbot", "version": "0.1.5", "isSemVerMajor": true}}, "puppeteer-core": {"name": "puppeteer-core", "severity": "high", "isDirect": false, "via": ["ws"], "effects": ["devtools", "webdriverio"], "range": "11.0.0 - 22.11.1", "nodes": ["node_modules/devtools/node_modules/puppeteer-core", "node_modules/puppeteer-core"], "fixAvailable": {"name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true}}, "request": {"name": "request", "severity": "moderate", "isDirect": false, "via": [{"source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<=2.88.2"}, "tough-cookie"], "effects": ["mwbot"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "mwbot", "version": "0.1.5", "isSemVerMajor": true}}, "socket.io": {"name": "socket.io", "severity": "high", "isDirect": false, "via": [{"source": 1097657, "name": "socket.io", "dependency": "socket.io", "title": "socket.io has an unhandled 'error' event", "url": "https://github.com/advisories/GHSA-25hc-qcg6-38wj", "severity": "high", "cwe": ["CWE-754"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": ">=3.0.0 <4.6.2"}, "engine.io"], "effects": [], "range": "3.0.0 - 4.6.2", "nodes": [""], "fixAvailable": true}, "socket.io-adapter": {"name": "socket.io-adapter", "severity": "high", "isDirect": false, "via": ["ws"], "effects": [], "range": "2.5.2 - 2.5.4", "nodes": [""], "fixAvailable": true}, "tough-cookie": {"name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [{"source": 1096643, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"}, "range": "<4.1.3"}], "effects": ["request"], "range": "<4.1.3", "nodes": ["node_modules/tough-cookie"], "fixAvailable": {"name": "mwbot", "version": "0.1.5", "isSemVerMajor": true}}, "webdriverio": {"name": "webdriverio", "severity": "high", "isDirect": false, "via": ["devtools", "puppeteer-core"], "effects": ["@wdio/cli", "@wdio/runner"], "range": "7.16.5 - 8.39.0", "nodes": ["node_modules/webdriverio"], "fixAvailable": {"name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true}}, "ws": {"name": "ws", "severity": "high", "isDirect": false, "via": [{"source": 1097615, "name": "ws", "dependency": "ws", "title": "ws affected by a DoS when handling a request with many HTTP headers", "url": "https://github.com/advisories/GHSA-3h5v-q93c-6h6q", "severity": "high", "cwe": ["CWE-476"], "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": ">=8.0.0 <8.17.1"}], "effects": ["engine.io", "puppeteer-core", "socket.io-adapter"], "range": "8.0.0 - 8.17.0", "nodes": ["", "node_modules/devtools/node_modules/ws", "node_modules/puppeteer-core/node_modules/ws"], "fixAvailable": {"name": "@wdio/cli", "version": "7.16.4", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 0, "moderate": 5, "high": 11, "critical": 0, "total": 16}, "dependencies": {"prod": 1, "dev": 987, "optional": 2, "peer": 7, "peerOptional": 0, "total": 987}}}}
$ /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: 'wdio-mediawiki@2.5.0',
npm WARN EBADENGINE   required: { node: '>=18.17.0', npm: '>=9.6.7' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @types/easy-table@1.2.0: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated superagent@6.1.0: Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>. Thanks to @shadowgate15, @spence-s, and @niftylettuce. Superagent is sponsored by Forward Email at <https://forwardemail.net>.
--- stdout ---

added 986 packages, and audited 987 packages in 14s

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

# npm audit report

request  *
Severity: moderate
Server-Side Request Forgery in Request - https://github.com/advisories/GHSA-p8p7-x288-28g6
Depends on vulnerable versions of tough-cookie
No fix available
node_modules/request
  mwbot  >=0.1.6
  Depends on vulnerable versions of request
  node_modules/mwbot
    wdio-mediawiki  *
    Depends on vulnerable versions of mwbot
    node_modules/wdio-mediawiki

tough-cookie  <4.1.3
Severity: moderate
tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3
No fix available
node_modules/tough-cookie

ws  8.0.0 - 8.17.0
Severity: high
ws affected by a DoS when handling a request with many HTTP headers - https://github.com/advisories/GHSA-3h5v-q93c-6h6q
fix available via `npm audit fix --force`
Will install @wdio/cli@7.16.4, which is a breaking change
node_modules/devtools/node_modules/ws
node_modules/puppeteer-core/node_modules/ws
  puppeteer-core  11.0.0 - 22.11.1
  Depends on vulnerable versions of ws
  node_modules/devtools/node_modules/puppeteer-core
  node_modules/puppeteer-core
    devtools  >=7.16.5
    Depends on vulnerable versions of puppeteer-core
    node_modules/devtools
    webdriverio  7.16.5 - 8.39.0
    Depends on vulnerable versions of devtools
    Depends on vulnerable versions of puppeteer-core
    node_modules/webdriverio
      @wdio/cli  7.16.5 - 8.39.0
      Depends on vulnerable versions of webdriverio
      node_modules/@wdio/cli
      @wdio/runner  7.16.5 - 8.39.0
      Depends on vulnerable versions of webdriverio
      node_modules/@wdio/runner
        @wdio/local-runner  7.16.5 - 8.39.0
        Depends on vulnerable versions of @wdio/runner
        node_modules/@wdio/local-runner

11 vulnerabilities (4 moderate, 7 high)

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

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

Some issues need review, and may require choosing
a different dependency.

--- end ---
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
Verifying that tests still pass
$ /usr/bin/npm ci
--- stderr ---
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'wdio-mediawiki@2.5.0',
npm WARN EBADENGINE   required: { node: '>=18.17.0', npm: '>=9.6.7' },
npm WARN EBADENGINE   current: { node: 'v18.19.0', npm: '9.2.0' }
npm WARN EBADENGINE }
npm WARN deprecated @types/easy-table@1.2.0: This is a stub types definition. easy-table provides its own type definitions, so you do not need this installed.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated superagent@6.1.0: Please upgrade to v7.0.2+ of superagent.  We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing.  See the releases tab for more information at <https://github.com/visionmedia/superagent/releases>. Thanks to @shadowgate15, @spence-s, and @niftylettuce. Superagent is sponsored by Forward Email at <https://forwardemail.net>.
--- stdout ---

added 986 packages, and audited 987 packages in 18s

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

11 vulnerabilities (4 moderate, 7 high)

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

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

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

--- end ---
$ /usr/bin/npm test
--- stdout ---

> test
> grunt lint && npm run doc

Running "eslint:all" (eslint) task

/src/repo/resources/src/jquery.tablesorter/jquery.tablesorter.js
  1147:1  warning  The type 'jQueryPlugins' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/jquery/jquery.confirmable.js
  13:2  warning  Missing JSDoc @return declaration  jsdoc/require-returns

/src/repo/resources/src/jquery/jquery.makeCollapsible.js
  406:1  warning  Syntax error in namepath: ~'wikipage.collapsibleContent'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.String.js
  187:1  warning  The type 'StringTrimmed' is undefined  jsdoc/no-undefined-types
  215:1  warning  The type 'StringTrimmed' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.Upload.BookletLayout/BookletLayout.js
  341:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.action.edit/edit.js
  12:1  warning  Syntax error in namepath: ~'wikipage.editform'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.action/mediawiki.action.protect.js
  104:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.action/mediawiki.action.view.postEdit.js
  21:1  warning  Syntax error in namepath: ~'postEdit'               jsdoc/valid-types
  36:1  warning  Syntax error in namepath: ~'postEdit.afterRemoval'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.base/errorLogger.js
   8:1  warning  Syntax error in namepath: ~'global.error'  jsdoc/valid-types
  22:1  warning  Syntax error in namepath: ~'error.caught'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.base/log.js
  12:1  warning  Found more than one @return declaration  jsdoc/require-returns
  12:1  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.base/mediawiki.base.js
  480:1  warning  Invalid JSDoc tag name "See"      jsdoc/check-tag-names
  480:1  warning  Syntax error in type: @link Hook  jsdoc/valid-types

/src/repo/resources/src/mediawiki.diff/inlineFormatToggle.js
  151:1  warning  Syntax error in namepath: ~'wikipage.diff.wikitextDiffBody'  jsdoc/valid-types
  163:1  warning  Syntax error in namepath: ~'wikipage.diff.diffTypeSwitch'    jsdoc/valid-types

/src/repo/resources/src/mediawiki.editRecovery/edit.js
  172:1  warning  Syntax error in namepath: ~'editRecovery.loadEnd'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.htmlform.ooui/Element.js
  37:1  warning  @extends should not have a bracketed type in "jsdoc" mode  jsdoc/valid-types
  55:1  warning  @extends should not have a bracketed type in "jsdoc" mode  jsdoc/valid-types

/src/repo/resources/src/mediawiki.htmlform/cond-state.js
  48:1  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.htmlform/htmlform.js
  3:1  warning  Expected JSDoc block to be aligned             jsdoc/check-alignment
  5:1  warning  Syntax error in namepath: ~'htmlform.enhance'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.inspect.js
  112:2  warning  Found more than one @return declaration  jsdoc/require-returns
  112:2  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.jqueryMsg/mediawiki.jqueryMsg.js
   14:1  warning  The type 'jQueryPlugins' is undefined    jsdoc/no-undefined-types
   23:1  warning  The type 'jQueryPlugins' is undefined    jsdoc/no-undefined-types
  141:1  warning  Found more than one @return declaration  jsdoc/require-returns
  141:1  warning  Found more than one @return declaration  jsdoc/require-returns-check
  203:1  warning  The type 'jQueryPlugins' is undefined    jsdoc/no-undefined-types
  235:1  warning  The type 'jQueryPlugins' is undefined    jsdoc/no-undefined-types
  260:1  warning  The type 'jQueryPlugins' is undefined    jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.language.months/months.js
  44:1  warning  The type 'Months' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.notification.convertmessagebox.js
  13:1  warning  Syntax error in namepath: (require("mediawiki.notification.convertmessagebox"))  jsdoc/valid-types

/src/repo/resources/src/mediawiki.page.gallery.slideshow.js
   52:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names
   60:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names
   68:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names
   76:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names
   84:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names
   92:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names
  100:1  warning  Invalid JSDoc tag name "memberOf"  jsdoc/check-tag-names

/src/repo/resources/src/mediawiki.page.preview.js
  354:1  warning  Syntax error in namepath: ~'wikipage.tableOfContents'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.page.ready/ready.js
   92:1  warning  Syntax error in namepath: ~'wikipage.indicators'  jsdoc/valid-types
  112:1  warning  Syntax error in namepath: ~'wikipage.content'     jsdoc/valid-types
  133:1  warning  Syntax error in namepath: ~'wikipage.categories'  jsdoc/valid-types
  149:1  warning  Syntax error in namepath: ~'wikipage.diff'        jsdoc/valid-types
  180:1  warning  Syntax error in namepath: ~'skin.logout'          jsdoc/valid-types

/src/repo/resources/src/mediawiki.page.watch.ajax/watch-ajax.js
  128:1  warning  Syntax error in namepath: ~'wikipage.watchlistChange'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.rcfilters/Controller.js
  338:1  warning  Found more than one @return declaration                  jsdoc/require-returns
  338:1  warning  Found more than one @return declaration                  jsdoc/require-returns-check
  564:1  warning  Syntax error in namepath: ~'RcFilters.highlight.enable'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.rcfilters/dm/FilterGroup.js
  32:1  warning  @param path declaration ("config.active") root node name ("config") does not match previous real parameter name ("supportsAll")  jsdoc/check-param-names

/src/repo/resources/src/mediawiki.rcfilters/dm/FilterItem.js
  82:1  warning  Found more than one @return declaration  jsdoc/require-returns
  82:1  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.rcfilters/mw.rcfilters.js
  178:1  warning  Syntax error in namepath: ~'structuredChangeFilters.ui.initialized'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.rcfilters/ui/FilterTagMultiselectWidget.js
  401:1  warning  Syntax error in namepath: ~'RcFilters.popup.open'  jsdoc/valid-types

/src/repo/resources/src/mediawiki.rcfilters/ui/SaveFiltersPopupButtonWidget.js
  126:1  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.rcfilters/ui/SavedLinksListItemWidget.js
  199:1  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.rcfilters/utils.js
  11:1  warning  Invalid name: unpaired curlies  jsdoc/valid-types
  11:1  warning  Missing JSDoc @return type      jsdoc/require-returns-type

/src/repo/resources/src/mediawiki.searchSuggest/searchSuggest.js
  50:1  warning  The type 'ResponseMetaData' is undefined  jsdoc/no-undefined-types
  57:1  warning  The type 'ResponseFunction' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.special.apisandbox/apisandbox.js
  1334:2  warning  Found more than one @return declaration  jsdoc/require-returns
  1334:2  warning  Found more than one @return declaration  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.special.createaccount/HtmlformChecker.js
  53:1  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.template.js
   25:1  warning  The type 'TemplateRenderer' is undefined         jsdoc/no-undefined-types
   39:1  warning  The type 'TemplateRenderFunction' is undefined   jsdoc/no-undefined-types
   44:1  warning  The type 'TemplateCompileFunction' is undefined  jsdoc/no-undefined-types
   60:1  warning  The type 'TemplateCompiler' is undefined         jsdoc/no-undefined-types
   87:1  warning  The type 'TemplateCompiler' is undefined         jsdoc/no-undefined-types
  106:1  warning  The type 'TemplateRenderer' is undefined         jsdoc/no-undefined-types
  124:1  warning  The type 'TemplateRenderer' is undefined         jsdoc/no-undefined-types
  148:1  warning  The type 'TemplateRenderer' is undefined         jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.util/util.js
   564:1  warning  Syntax error in namepath: ~'util.addPortlet'      jsdoc/valid-types
   732:1  warning  Syntax error in namepath: ~'util.addPortletLink'  jsdoc/valid-types
  1143:1  warning  Invalid JSDoc tag name "type{string|string[]}"    jsdoc/check-tag-names

/src/repo/resources/src/mediawiki.widgets.datetime/CalendarWidget.js
  508:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.widgets.datetime/DateTimeFormatter.js
  266:1  warning  The type 'FieldSpecificationObject' is undefined  jsdoc/no-undefined-types
  632:1  warning  The type 'CalendarGridData' is undefined          jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js
  593:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check
  717:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.widgets.datetime/DiscordianDateTimeFormatter.js
  73:1  warning  The type 'FieldSpecificationObject' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js
  305:1  warning  The type 'FieldSpecificationObject' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js
  562:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check
  576:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js
  529:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check
  556:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check
  570:2  warning  JSDoc @return declaration present but return expression not available in function  jsdoc/require-returns-check

/src/repo/resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js
  49:1  warning  The type 'DropdownOptions' is undefined  jsdoc/no-undefined-types

/src/repo/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js
  92:1  warning  Invalid JSDoc tag (preference). Replace "function" JSDoc tag with "method"  jsdoc/check-tag-names

/src/repo/resources/src/startup/mediawiki.loader.js
  64:1  warning  Syntax error in namepath: ~'resourceloader.exception'  jsdoc/valid-types

/src/repo/resources/src/startup/mediawiki.requestIdleCallback.js
  40:1  warning  Invalid JSDoc tag (preference). Replace "function" JSDoc tag with "method"  jsdoc/check-tag-names

✖ 93 problems (0 errors, 93 warnings)
  0 errors and 3 warnings potentially fixable with the `--fix` option.


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

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

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

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

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

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

Running "stylelint:resources" (stylelint) task
>> Linted 205 files without errors

Running "stylelint:config" (stylelint) task
>> Linted 1 files without errors

Done.

> doc
> jsdoc -c jsdoc.js


--- end ---
{"1097496": {"source": 1097496, "name": "braces", "dependency": "braces", "title": "Uncontrolled resource consumption in braces", "url": "https://github.com/advisories/GHSA-grv7-fg5c-xmjg", "severity": "high", "cwe": ["CWE-1050"], "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.0.3"}}
Upgrading n:braces from 3.0.2 -> 3.0.3
{}
{"1097492": {"source": 1097492, "name": "ejs", "dependency": "ejs", "title": "ejs lacks certain pollution protection", "url": "https://github.com/advisories/GHSA-ghr5-ch3p-vcr6", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 0, "vectorString": null}, "range": "<3.1.10"}}
Upgrading n:ejs from 3.1.8 -> 3.1.10
{}
{"1096856": {"source": 1096856, "name": "follow-redirects", "dependency": "follow-redirects", "title": "follow-redirects' Proxy-Authorization header kept across hosts", "url": "https://github.com/advisories/GHSA-cxjh-pqwp-8mfp", "severity": "moderate", "cwe": ["CWE-200"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N"}, "range": "<=1.15.5"}}
Upgrading n:follow-redirects from 1.15.5 -> 1.15.6
{"1097657": {"source": 1097657, "name": "socket.io", "dependency": "socket.io", "title": "socket.io has an unhandled 'error' event", "url": "https://github.com/advisories/GHSA-25hc-qcg6-38wj", "severity": "high", "cwe": ["CWE-754"], "cvss": {"score": 7.3, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L"}, "range": ">=3.0.0 <4.6.2"}}
Upgrading n:socket.io from 4.6.1 -> 4.7.5
{}
$ package-lock-lint package-lock.json
--- stdout ---
Checking package-lock.json

--- end ---
build: Updating npm dependencies

* braces: 3.0.2 → 3.0.3
  * https://github.com/advisories/GHSA-grv7-fg5c-xmjg
* ejs: 3.1.8 → 3.1.10
  * https://github.com/advisories/GHSA-ghr5-ch3p-vcr6
* follow-redirects: 1.15.5 → 1.15.6
  * https://github.com/advisories/GHSA-cxjh-pqwp-8mfp
* socket.io: 4.6.1 → 4.7.5
  * https://github.com/advisories/GHSA-25hc-qcg6-38wj

$ git add .
--- stdout ---

--- end ---
$ git commit -F /tmp/tmpvibx53nn
--- stdout ---
[REL1_42 ebb342a] build: Updating npm dependencies
 1 file changed, 125 insertions(+), 102 deletions(-)

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

* braces: 3.0.2 → 3.0.3
  * https://github.com/advisories/GHSA-grv7-fg5c-xmjg
* ejs: 3.1.8 → 3.1.10
  * https://github.com/advisories/GHSA-ghr5-ch3p-vcr6
* follow-redirects: 1.15.5 → 1.15.6
  * https://github.com/advisories/GHSA-cxjh-pqwp-8mfp
* socket.io: 4.6.1 → 4.7.5
  * https://github.com/advisories/GHSA-25hc-qcg6-38wj

Change-Id: Ifa588582554c0f760b832161a673cc80fd139641
---
 package-lock.json | 227 +++++++++++++++++++++++++---------------------
 1 file changed, 125 insertions(+), 102 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 78921fd..bfea35a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -556,9 +556,9 @@
 			}
 		},
 		"node_modules/@socket.io/component-emitter": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
-			"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+			"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
 			"dev": true
 		},
 		"node_modules/@szmarczak/http-timer": {
@@ -607,9 +607,9 @@
 			"dev": true
 		},
 		"node_modules/@types/cors": {
-			"version": "2.8.13",
-			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
-			"integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
+			"version": "2.8.17",
+			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+			"integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
 			"dev": true,
 			"dependencies": {
 				"@types/node": "*"
@@ -1962,12 +1962,12 @@
 			}
 		},
 		"node_modules/braces": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 			"dev": true,
 			"dependencies": {
-				"fill-range": "^7.0.1"
+				"fill-range": "^7.1.1"
 			},
 			"engines": {
 				"node": ">=8"
@@ -3636,9 +3636,9 @@
 			"dev": true
 		},
 		"node_modules/ejs": {
-			"version": "3.1.8",
-			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
-			"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
+			"version": "3.1.10",
+			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+			"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
 			"dev": true,
 			"dependencies": {
 				"jake": "^10.8.5"
@@ -3681,9 +3681,9 @@
 			}
 		},
 		"node_modules/engine.io": {
-			"version": "6.4.2",
-			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
-			"integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
+			"version": "6.5.5",
+			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+			"integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
 			"dev": true,
 			"dependencies": {
 				"@types/cookie": "^0.4.1",
@@ -3694,17 +3694,17 @@
 				"cookie": "~0.4.1",
 				"cors": "~2.8.5",
 				"debug": "~4.3.1",
-				"engine.io-parser": "~5.0.3",
-				"ws": "~8.11.0"
+				"engine.io-parser": "~5.2.1",
+				"ws": "~8.17.1"
 			},
 			"engines": {
-				"node": ">=10.0.0"
+				"node": ">=10.2.0"
 			}
 		},
 		"node_modules/engine.io-parser": {
-			"version": "5.0.6",
-			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz",
-			"integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==",
+			"version": "5.2.2",
+			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
+			"integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
 			"dev": true,
 			"engines": {
 				"node": ">=10.0.0"
@@ -4631,9 +4631,9 @@
 			}
 		},
 		"node_modules/fill-range": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"version": "7.1.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 			"dev": true,
 			"dependencies": {
 				"to-regex-range": "^5.0.1"
@@ -4760,9 +4760,9 @@
 			"dev": true
 		},
 		"node_modules/follow-redirects": {
-			"version": "1.15.5",
-			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
-			"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+			"version": "1.15.6",
+			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+			"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
 			"dev": true,
 			"funding": [
 				{
@@ -4859,6 +4859,20 @@
 			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 			"dev": true
 		},
+		"node_modules/fsevents": {
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+			"dev": true,
+			"hasInstallScript": true,
+			"optional": true,
+			"os": [
+				"darwin"
+			],
+			"engines": {
+				"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+			}
+		},
 		"node_modules/function-bind": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -9493,35 +9507,37 @@
 			}
 		},
 		"node_modules/socket.io": {
-			"version": "4.6.1",
-			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz",
-			"integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==",
+			"version": "4.7.5",
+			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+			"integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
 			"dev": true,
 			"dependencies": {
 				"accepts": "~1.3.4",
 				"base64id": "~2.0.0",
+				"cors": "~2.8.5",
 				"debug": "~4.3.2",
-				"engine.io": "~6.4.1",
+				"engine.io": "~6.5.2",
 				"socket.io-adapter": "~2.5.2",
-				"socket.io-parser": "~4.2.1"
+				"socket.io-parser": "~4.2.4"
 			},
 			"engines": {
-				"node": ">=10.0.0"
+				"node": ">=10.2.0"
 			}
 		},
 		"node_modules/socket.io-adapter": {
-			"version": "2.5.2",
-			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
-			"integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
+			"version": "2.5.5",
+			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+			"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
 			"dev": true,
 			"dependencies": {
-				"ws": "~8.11.0"
+				"debug": "~4.3.4",
+				"ws": "~8.17.1"
 			}
 		},
 		"node_modules/socket.io-parser": {
-			"version": "4.2.3",
-			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz",
-			"integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==",
+			"version": "4.2.4",
+			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+			"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
 			"dev": true,
 			"dependencies": {
 				"@socket.io/component-emitter": "~3.1.0",
@@ -10734,8 +10750,17 @@
 			}
 		},
 		"node_modules/wdio-mediawiki": {
-			"resolved": "tests/selenium/wdio-mediawiki",
-			"link": true
+			"version": "2.5.0",
+			"resolved": "file:tests/selenium/wdio-mediawiki",
+			"dev": true,
+			"license": "MIT",
+			"dependencies": {
+				"mwbot": "2.1.3"
+			},
+			"engines": {
+				"node": ">=18.17.0",
+				"npm": ">=9.6.7"
+			}
 		},
 		"node_modules/webdriver": {
 			"version": "7.33.0",
@@ -10942,16 +10967,16 @@
 			}
 		},
 		"node_modules/ws": {
-			"version": "8.11.0",
-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
-			"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+			"version": "8.17.1",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+			"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
 			"dev": true,
 			"engines": {
 				"node": ">=10.0.0"
 			},
 			"peerDependencies": {
 				"bufferutil": "^4.0.1",
-				"utf-8-validate": "^5.0.2"
+				"utf-8-validate": ">=5.0.2"
 			},
 			"peerDependenciesMeta": {
 				"bufferutil": {
@@ -11316,18 +11341,6 @@
 			"funding": {
 				"url": "https://github.com/sponsors/isaacs"
 			}
-		},
-		"tests/selenium/wdio-mediawiki": {
-			"version": "2.5.0",
-			"dev": true,
-			"license": "MIT",
-			"dependencies": {
-				"mwbot": "2.1.3"
-			},
-			"engines": {
-				"node": ">=18.17.0",
-				"npm": ">=9.6.7"
-			}
 		}
 	},
 	"dependencies": {
@@ -11689,9 +11702,9 @@
 			"dev": true
 		},
 		"@socket.io/component-emitter": {
-			"version": "3.1.0",
-			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
-			"integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==",
+			"version": "3.1.2",
+			"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+			"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
 			"dev": true
 		},
 		"@szmarczak/http-timer": {
@@ -11734,9 +11747,9 @@
 			"dev": true
 		},
 		"@types/cors": {
-			"version": "2.8.13",
-			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz",
-			"integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==",
+			"version": "2.8.17",
+			"resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+			"integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
 			"dev": true,
 			"requires": {
 				"@types/node": "*"
@@ -12860,12 +12873,12 @@
 			}
 		},
 		"braces": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-			"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+			"version": "3.0.3",
+			"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+			"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 			"dev": true,
 			"requires": {
-				"fill-range": "^7.0.1"
+				"fill-range": "^7.1.1"
 			}
 		},
 		"browser-stdout": {
@@ -14113,9 +14126,9 @@
 			"dev": true
 		},
 		"ejs": {
-			"version": "3.1.8",
-			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
-			"integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
+			"version": "3.1.10",
+			"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+			"integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
 			"dev": true,
 			"requires": {
 				"jake": "^10.8.5"
@@ -14149,9 +14162,9 @@
 			}
 		},
 		"engine.io": {
-			"version": "6.4.2",
-			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz",
-			"integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==",
+			"version": "6.5.5",
+			"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+			"integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
 			"dev": true,
 			"requires": {
 				"@types/cookie": "^0.4.1",
@@ -14162,14 +14175,14 @@
 				"cookie": "~0.4.1",
 				"cors": "~2.8.5",
 				"debug": "~4.3.1",
-				"engine.io-parser": "~5.0.3",
-				"ws": "~8.11.0"
+				"engine.io-parser": "~5.2.1",
+				"ws": "~8.17.1"
 			}
 		},
 		"engine.io-parser": {
-			"version": "5.0.6",
-			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz",
-			"integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==",
+			"version": "5.2.2",
+			"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz",
+			"integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==",
 			"dev": true
 		},
 		"ent": {
@@ -14856,9 +14869,9 @@
 			}
 		},
 		"fill-range": {
-			"version": "7.0.1",
-			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-			"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+			"version": "7.1.1",
+			"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+			"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 			"dev": true,
 			"requires": {
 				"to-regex-range": "^5.0.1"
@@ -14960,9 +14973,9 @@
 			"dev": true
 		},
 		"follow-redirects": {
-			"version": "1.15.5",
-			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
-			"integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+			"version": "1.15.6",
+			"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+			"integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
 			"dev": true
 		},
 		"for-in": {
@@ -15026,6 +15039,13 @@
 			"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 			"dev": true
 		},
+		"fsevents": {
+			"version": "2.3.3",
+			"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+			"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+			"dev": true,
+			"optional": true
+		},
 		"function-bind": {
 			"version": "1.1.2",
 			"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -18575,32 +18595,34 @@
 			}
 		},
 		"socket.io": {
-			"version": "4.6.1",
-			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz",
-			"integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==",
+			"version": "4.7.5",
+			"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+			"integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
 			"dev": true,
 			"requires": {
 				"accepts": "~1.3.4",
 				"base64id": "~2.0.0",
+				"cors": "~2.8.5",
 				"debug": "~4.3.2",
-				"engine.io": "~6.4.1",
+				"engine.io": "~6.5.2",
 				"socket.io-adapter": "~2.5.2",
-				"socket.io-parser": "~4.2.1"
+				"socket.io-parser": "~4.2.4"
 			}
 		},
 		"socket.io-adapter": {
-			"version": "2.5.2",
-			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz",
-			"integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==",
+			"version": "2.5.5",
+			"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+			"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
 			"dev": true,
 			"requires": {
-				"ws": "~8.11.0"
+				"debug": "~4.3.4",
+				"ws": "~8.17.1"
 			}
 		},
 		"socket.io-parser": {
-			"version": "4.2.3",
-			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz",
-			"integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==",
+			"version": "4.2.4",
+			"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+			"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
 			"dev": true,
 			"requires": {
 				"@socket.io/component-emitter": "~3.1.0",
@@ -19531,7 +19553,8 @@
 			}
 		},
 		"wdio-mediawiki": {
-			"version": "file:tests/selenium/wdio-mediawiki",
+			"version": "2.5.0",
+			"dev": true,
 			"requires": {
 				"mwbot": "2.1.3"
 			}
@@ -19703,9 +19726,9 @@
 			}
 		},
 		"ws": {
-			"version": "8.11.0",
-			"resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz",
-			"integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==",
+			"version": "8.17.1",
+			"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+			"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
 			"dev": true,
 			"requires": {}
 		},
-- 
2.39.2


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