mediawiki/extensions/Newsletter: REL1_37 (log #499675)

sourcepatches

This run took 194 seconds.

From dbbef4907f2e2741a3d44148bf4c5d10bdc71532 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sun, 10 Oct 2021 21:04:23 +0000
Subject: [PATCH] build: Updating npm dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* @wdio/mocha-framework: 7.5.3 → 7.14.1
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)
* ansi-regex: 5.0.0 → 5.0.1
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)

Additional changes:
* composer.json: Updated phpcs command in composer test (T280592).
* composer.json: Added phpcs command to scripts (T280592).

Change-Id: I999028d857d4050235393b6c2fd0f25d487d50be
---
 composer.json     |   5 +-
 package-lock.json | 355 ++++++++++++++++++++++------------------------
 package.json      |   2 +-
 3 files changed, 176 insertions(+), 186 deletions(-)

diff --git a/composer.json b/composer.json
index 8a943ae..d59f654 100644
--- a/composer.json
+++ b/composer.json
@@ -11,13 +11,14 @@
 	"scripts": {
 		"test": [
 			"parallel-lint . --exclude vendor --exclude node_modules",
-			"phpcs -p -s",
+			"@phpcs",
 			"minus-x check ."
 		],
 		"fix": [
 			"minus-x fix .",
 			"phpcbf"
 		],
-		"phan": "phan -d . --long-progress-bar"
+		"phan": "phan -d . --long-progress-bar",
+		"phpcs": "phpcs -sp --cache"
 	}
 }
diff --git a/package-lock.json b/package-lock.json
index c8cef73..f1bbfa3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -683,15 +683,15 @@
 			}
 		},
 		"@jest/types": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
-			"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+			"integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
 			"dev": true,
 			"requires": {
 				"@types/istanbul-lib-coverage": "^2.0.0",
 				"@types/istanbul-reports": "^3.0.0",
 				"@types/node": "*",
-				"@types/yargs": "^15.0.0",
+				"@types/yargs": "^16.0.0",
 				"chalk": "^4.0.0"
 			}
 		},
@@ -919,9 +919,9 @@
 			"dev": true
 		},
 		"@types/mocha": {
-			"version": "8.2.2",
-			"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz",
-			"integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==",
+			"version": "9.0.0",
+			"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz",
+			"integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==",
 			"dev": true
 		},
 		"@types/node": {
@@ -970,9 +970,9 @@
 			}
 		},
 		"@types/stack-utils": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
-			"integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+			"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
 			"dev": true
 		},
 		"@types/stream-buffers": {
@@ -1012,18 +1012,18 @@
 			"dev": true
 		},
 		"@types/yargs": {
-			"version": "15.0.13",
-			"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
-			"integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
+			"version": "16.0.4",
+			"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+			"integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
 			"dev": true,
 			"requires": {
 				"@types/yargs-parser": "*"
 			}
 		},
 		"@types/yargs-parser": {
-			"version": "20.2.0",
-			"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
-			"integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
+			"version": "20.2.1",
+			"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz",
+			"integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==",
 			"dev": true
 		},
 		"@types/yauzl": {
@@ -1278,23 +1278,29 @@
 			}
 		},
 		"@wdio/mocha-framework": {
-			"version": "7.5.3",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.5.3.tgz",
-			"integrity": "sha512-96QCVWsiyZxEgOZP3oTq2B2T7zne5dCdehLa2n4q/BLjk96Rj0jifidJZfd/1+vdNPKX0gWWAzpy98Znn8MVMw==",
+			"version": "7.14.1",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.14.1.tgz",
+			"integrity": "sha512-VoFt8ziAH1KHDR7vKan0tT2I3new0Y/mU284nR/zHfUJyxrqi9P6pff6Y9wVTyjHYHsJfWstwk2v9wPKNUn6pQ==",
 			"dev": true,
 			"requires": {
-				"@types/mocha": "^8.0.0",
-				"@wdio/logger": "7.5.3",
-				"@wdio/types": "7.5.3",
-				"@wdio/utils": "7.5.3",
-				"expect-webdriverio": "^2.0.0",
-				"mocha": "^8.0.1"
+				"@types/mocha": "^9.0.0",
+				"@wdio/logger": "7.7.0",
+				"@wdio/types": "7.14.1",
+				"@wdio/utils": "7.14.1",
+				"expect-webdriverio": "^3.0.0",
+				"mocha": "^9.0.0"
 			},
 			"dependencies": {
+				"@types/node": {
+					"version": "15.14.9",
+					"resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+					"integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+					"dev": true
+				},
 				"@wdio/logger": {
-					"version": "7.5.3",
-					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz",
-					"integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==",
+					"version": "7.7.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.7.0.tgz",
+					"integrity": "sha512-XX/OkC8NlvsBdhKsb9j7ZbuQtF/Vuo0xf38PXdqYtVezOrYbDuba0hPG++g/IGNuAF34ZbSi+49cvz4u5w92kQ==",
 					"dev": true,
 					"requires": {
 						"chalk": "^4.0.0",
@@ -1304,22 +1310,24 @@
 					}
 				},
 				"@wdio/types": {
-					"version": "7.5.3",
-					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz",
-					"integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==",
+					"version": "7.14.1",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.14.1.tgz",
+					"integrity": "sha512-W1ctBarjFuLz7wub6wNFd3sWfaENf1+thQL2YQW/cgFuTvhyK5hhUPoP2Q1suXBDE+qs90wWwx4z8XwDC6S8OA==",
 					"dev": true,
 					"requires": {
+						"@types/node": "^15.12.5",
 						"got": "^11.8.1"
 					}
 				},
 				"@wdio/utils": {
-					"version": "7.5.3",
-					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.5.3.tgz",
-					"integrity": "sha512-nlLDKr8v8abLOHCKroBwQkGPdCIxjID2MllgWX23xqkYZylM9RdwPBdL8osQt9m3rq2TxiPAT4OlbzNt2WtN6Q==",
+					"version": "7.14.1",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.14.1.tgz",
+					"integrity": "sha512-2LMjTiCccohUKGaHWpodIz9eF+5HApT4NVFJjWYqGQFAUrLaBrSocie7NW5+moYolY5dESYSNVB6qJlSdMbQlA==",
 					"dev": true,
 					"requires": {
-						"@wdio/logger": "7.5.3",
-						"@wdio/types": "7.5.3"
+						"@wdio/logger": "7.7.0",
+						"@wdio/types": "7.14.1",
+						"p-iteration": "^1.1.8"
 					}
 				}
 			}
@@ -1628,9 +1636,9 @@
 			}
 		},
 		"ansi-regex": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-			"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+			"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
 			"dev": true
 		},
 		"ansi-styles": {
@@ -2670,9 +2678,9 @@
 			"dev": true
 		},
 		"diff-sequences": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
-			"integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
+			"version": "27.0.6",
+			"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
+			"integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
 			"dev": true
 		},
 		"dir-glob": {
@@ -3443,27 +3451,35 @@
 			}
 		},
 		"expect": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
-			"integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz",
+			"integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==",
 			"dev": true,
 			"requires": {
-				"@jest/types": "^26.6.2",
-				"ansi-styles": "^4.0.0",
-				"jest-get-type": "^26.3.0",
-				"jest-matcher-utils": "^26.6.2",
-				"jest-message-util": "^26.6.2",
-				"jest-regex-util": "^26.0.0"
+				"@jest/types": "^27.2.5",
+				"ansi-styles": "^5.0.0",
+				"jest-get-type": "^27.0.6",
+				"jest-matcher-utils": "^27.2.5",
+				"jest-message-util": "^27.2.5",
+				"jest-regex-util": "^27.0.6"
+			},
+			"dependencies": {
+				"ansi-styles": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+					"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+					"dev": true
+				}
 			}
 		},
 		"expect-webdriverio": {
-			"version": "2.0.2",
-			"resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-2.0.2.tgz",
-			"integrity": "sha512-dst0tqP1aZ2p7TPmbatqoIQ+7hRTw+IeKNi830XxKhu2DNNe5vQ85i9ttf9rpXgbnUf91HxKcocn4G7A5bQxDA==",
+			"version": "3.1.4",
+			"resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-3.1.4.tgz",
+			"integrity": "sha512-65FTS3bmxcIp0cq6fLb/72TrCQXBCpwPLC7SwMWdpPlLq461mXcK1BPKJJjnIC587aXSKD+3E4hvnlCtwDmXfg==",
 			"dev": true,
 			"requires": {
-				"expect": "^26.6.2",
-				"jest-matcher-utils": "^26.6.2"
+				"expect": "^27.0.2",
+				"jest-matcher-utils": "^27.0.2"
 			}
 		},
 		"extend": {
@@ -4646,56 +4662,56 @@
 			}
 		},
 		"jest-diff": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
-			"integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz",
+			"integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==",
 			"dev": true,
 			"requires": {
 				"chalk": "^4.0.0",
-				"diff-sequences": "^26.6.2",
-				"jest-get-type": "^26.3.0",
-				"pretty-format": "^26.6.2"
+				"diff-sequences": "^27.0.6",
+				"jest-get-type": "^27.0.6",
+				"pretty-format": "^27.2.5"
 			}
 		},
 		"jest-get-type": {
-			"version": "26.3.0",
-			"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
-			"integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+			"version": "27.0.6",
+			"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz",
+			"integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==",
 			"dev": true
 		},
 		"jest-matcher-utils": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
-			"integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz",
+			"integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==",
 			"dev": true,
 			"requires": {
 				"chalk": "^4.0.0",
-				"jest-diff": "^26.6.2",
-				"jest-get-type": "^26.3.0",
-				"pretty-format": "^26.6.2"
+				"jest-diff": "^27.2.5",
+				"jest-get-type": "^27.0.6",
+				"pretty-format": "^27.2.5"
 			}
 		},
 		"jest-message-util": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
-			"integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.5.tgz",
+			"integrity": "sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ==",
 			"dev": true,
 			"requires": {
-				"@babel/code-frame": "^7.0.0",
-				"@jest/types": "^26.6.2",
+				"@babel/code-frame": "^7.12.13",
+				"@jest/types": "^27.2.5",
 				"@types/stack-utils": "^2.0.0",
 				"chalk": "^4.0.0",
 				"graceful-fs": "^4.2.4",
-				"micromatch": "^4.0.2",
-				"pretty-format": "^26.6.2",
+				"micromatch": "^4.0.4",
+				"pretty-format": "^27.2.5",
 				"slash": "^3.0.0",
-				"stack-utils": "^2.0.2"
+				"stack-utils": "^2.0.3"
 			}
 		},
 		"jest-regex-util": {
-			"version": "26.0.0",
-			"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
-			"integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
+			"version": "27.0.6",
+			"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz",
+			"integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==",
 			"dev": true
 		},
 		"js-tokens": {
@@ -4705,9 +4721,9 @@
 			"dev": true
 		},
 		"js-yaml": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
-			"integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
+			"version": "4.1.0",
+			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+			"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
 			"dev": true,
 			"requires": {
 				"argparse": "^2.0.1"
@@ -5531,42 +5547,57 @@
 			"dev": true
 		},
 		"mocha": {
-			"version": "8.4.0",
-			"resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
-			"integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
+			"version": "9.1.2",
+			"resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.2.tgz",
+			"integrity": "sha512-ta3LtJ+63RIBP03VBjMGtSqbe6cWXRejF9SyM9Zyli1CKZJZ+vfCTj3oW24V7wAphMJdpOFLoMI3hjJ1LWbs0w==",
 			"dev": true,
 			"requires": {
 				"@ungap/promise-all-settled": "1.1.2",
 				"ansi-colors": "4.1.1",
 				"browser-stdout": "1.3.1",
-				"chokidar": "3.5.1",
-				"debug": "4.3.1",
+				"chokidar": "3.5.2",
+				"debug": "4.3.2",
 				"diff": "5.0.0",
 				"escape-string-regexp": "4.0.0",
 				"find-up": "5.0.0",
-				"glob": "7.1.6",
+				"glob": "7.1.7",
 				"growl": "1.10.5",
 				"he": "1.2.0",
-				"js-yaml": "4.0.0",
-				"log-symbols": "4.0.0",
+				"js-yaml": "4.1.0",
+				"log-symbols": "4.1.0",
 				"minimatch": "3.0.4",
 				"ms": "2.1.3",
-				"nanoid": "3.1.20",
-				"serialize-javascript": "5.0.1",
+				"nanoid": "3.1.25",
+				"serialize-javascript": "6.0.0",
 				"strip-json-comments": "3.1.1",
 				"supports-color": "8.1.1",
 				"which": "2.0.2",
-				"wide-align": "1.1.3",
-				"workerpool": "6.1.0",
+				"workerpool": "6.1.5",
 				"yargs": "16.2.0",
 				"yargs-parser": "20.2.4",
 				"yargs-unparser": "2.0.0"
 			},
 			"dependencies": {
+				"chokidar": {
+					"version": "3.5.2",
+					"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+					"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+					"dev": true,
+					"requires": {
+						"anymatch": "~3.1.2",
+						"braces": "~3.0.2",
+						"fsevents": "~2.3.2",
+						"glob-parent": "~5.1.2",
+						"is-binary-path": "~2.1.0",
+						"is-glob": "~4.0.1",
+						"normalize-path": "~3.0.0",
+						"readdirp": "~3.6.0"
+					}
+				},
 				"debug": {
-					"version": "4.3.1",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-					"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+					"version": "4.3.2",
+					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+					"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
 					"dev": true,
 					"requires": {
 						"ms": "2.1.2"
@@ -5596,20 +5627,6 @@
 						"path-exists": "^4.0.0"
 					}
 				},
-				"glob": {
-					"version": "7.1.6",
-					"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-					"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-					"dev": true,
-					"requires": {
-						"fs.realpath": "^1.0.0",
-						"inflight": "^1.0.4",
-						"inherits": "2",
-						"minimatch": "^3.0.4",
-						"once": "^1.3.0",
-						"path-is-absolute": "^1.0.0"
-					}
-				},
 				"locate-path": {
 					"version": "6.0.0",
 					"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -5619,15 +5636,6 @@
 						"p-locate": "^5.0.0"
 					}
 				},
-				"log-symbols": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
-					"integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
-					"dev": true,
-					"requires": {
-						"chalk": "^4.0.0"
-					}
-				},
 				"ms": {
 					"version": "2.1.3",
 					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -5652,6 +5660,15 @@
 						"p-limit": "^3.0.2"
 					}
 				},
+				"readdirp": {
+					"version": "3.6.0",
+					"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+					"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+					"dev": true,
+					"requires": {
+						"picomatch": "^2.2.1"
+					}
+				},
 				"supports-color": {
 					"version": "8.1.1",
 					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -5741,9 +5758,9 @@
 			}
 		},
 		"nanoid": {
-			"version": "3.1.20",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
-			"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
+			"version": "3.1.25",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
+			"integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
 			"dev": true
 		},
 		"natural-compare": {
@@ -5929,6 +5946,12 @@
 			"integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
 			"dev": true
 		},
+		"p-iteration": {
+			"version": "1.1.8",
+			"resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz",
+			"integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==",
+			"dev": true
+		},
 		"p-limit": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -6267,15 +6290,23 @@
 			"dev": true
 		},
 		"pretty-format": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
-			"integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz",
+			"integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==",
 			"dev": true,
 			"requires": {
-				"@jest/types": "^26.6.2",
-				"ansi-regex": "^5.0.0",
-				"ansi-styles": "^4.0.0",
+				"@jest/types": "^27.2.5",
+				"ansi-regex": "^5.0.1",
+				"ansi-styles": "^5.0.0",
 				"react-is": "^17.0.1"
+			},
+			"dependencies": {
+				"ansi-styles": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+					"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+					"dev": true
+				}
 			}
 		},
 		"prettyjson": {
@@ -6786,9 +6817,9 @@
 			}
 		},
 		"serialize-javascript": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
-			"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
+			"version": "6.0.0",
+			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+			"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
 			"dev": true,
 			"requires": {
 				"randombytes": "^2.1.0"
@@ -6915,9 +6946,9 @@
 			}
 		},
 		"stack-utils": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
-			"integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
+			"integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
 			"dev": true,
 			"requires": {
 				"escape-string-regexp": "^2.0.0"
@@ -7730,48 +7761,6 @@
 				"isexe": "^2.0.0"
 			}
 		},
-		"wide-align": {
-			"version": "1.1.3",
-			"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
-			"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-			"dev": true,
-			"requires": {
-				"string-width": "^1.0.2 || 2"
-			},
-			"dependencies": {
-				"ansi-regex": {
-					"version": "3.0.0",
-					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-					"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-					"dev": true
-				},
-				"is-fullwidth-code-point": {
-					"version": "2.0.0",
-					"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-					"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-					"dev": true
-				},
-				"string-width": {
-					"version": "2.1.1",
-					"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-					"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-					"dev": true,
-					"requires": {
-						"is-fullwidth-code-point": "^2.0.0",
-						"strip-ansi": "^4.0.0"
-					}
-				},
-				"strip-ansi": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-					"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-					"dev": true,
-					"requires": {
-						"ansi-regex": "^3.0.0"
-					}
-				}
-			}
-		},
 		"word-wrap": {
 			"version": "1.2.3",
 			"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -7779,9 +7768,9 @@
 			"dev": true
 		},
 		"workerpool": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
-			"integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==",
+			"version": "6.1.5",
+			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz",
+			"integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==",
 			"dev": true
 		},
 		"wrap-ansi": {
diff --git a/package.json b/package.json
index 0311299..6bac3bf 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
 		"@wdio/dot-reporter": "7.5.3",
 		"@wdio/junit-reporter": "7.5.3",
 		"@wdio/local-runner": "7.5.3",
-		"@wdio/mocha-framework": "7.5.3",
+		"@wdio/mocha-framework": "7.14.1",
 		"@wdio/sync": "7.5.3",
 		"eslint-config-wikimedia": "0.20.0",
 		"grunt": "1.4.0",
-- 
2.20.1

$ date
Sun Oct 10 21:01:13 UTC 2021

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

$ git config user.name libraryupgrader

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

$ git submodule update --init

$ grr init
Installed commit-msg hook.

$ git show-ref refs/heads/REL1_37
25dc50fdadcbae81dafed6f6c1926cf6c4c5790b refs/heads/REL1_37

$ composer install
Loading composer repositories with package information
Warning from https://repo.packagist.org: Support for Composer 1 is deprecated and some packages will not be available. You should upgrade to Composer 2. See https://blog.packagist.com/deprecating-composer-1-support/
Updating dependencies (including require-dev)
Package operations: 34 installs, 0 updates, 0 removals
  - Installing squizlabs/php_codesniffer (3.6.0): Loading from cache
  - Installing sebastian/diff (3.0.3): Loading from cache
  - Installing composer/spdx-licenses (1.5.5): Loading from cache
  - Installing composer/semver (3.2.5): Loading from cache
  - Installing mediawiki/mediawiki-codesniffer (v37.0.0): Loading from cache
  - Installing tysonandre/var_representation_polyfill (0.1.1): Loading from cache
  - Installing symfony/polyfill-php80 (v1.23.1): Loading from cache
  - Installing symfony/polyfill-mbstring (v1.23.1): Loading from cache
  - Installing symfony/polyfill-intl-normalizer (v1.23.0): Loading from cache
  - Installing symfony/polyfill-intl-grapheme (v1.23.1): Loading from cache
  - Installing symfony/polyfill-ctype (v1.23.0): Loading from cache
  - Installing symfony/string (v5.3.7): Loading from cache
  - Installing psr/container (1.1.1): Loading from cache
  - Installing symfony/service-contracts (v2.4.0): Loading from cache
  - Installing symfony/polyfill-php73 (v1.23.0): Loading from cache
  - Installing symfony/deprecation-contracts (v2.4.0): Loading from cache
  - Installing symfony/console (v5.3.7): Loading from cache
  - Installing psr/log (1.1.4): Loading from cache
  - Installing sabre/event (5.1.2): Loading from cache
  - Installing netresearch/jsonmapper (v4.0.0): Loading from cache
  - Installing microsoft/tolerant-php-parser (v0.1.1): Loading from cache
  - Installing phpdocumentor/reflection-common (2.2.0): Loading from cache
  - Installing webmozart/assert (1.10.0): Loading from cache
  - Installing phpdocumentor/type-resolver (1.5.1): Loading from cache
  - Installing phpdocumentor/reflection-docblock (5.2.2): Loading from cache
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Loading from cache
  - Installing composer/xdebug-handler (2.0.2): Loading from cache
  - Installing phan/phan (5.2.0): Loading from cache
  - Installing mediawiki/phan-taint-check-plugin (3.3.2): Loading from cache
  - Installing mediawiki/mediawiki-phan-config (0.11.0): Loading from cache
  - Installing mediawiki/minus-x (1.1.1): Loading from cache
  - Installing php-parallel-lint/php-console-color (v0.3): Loading from cache
  - Installing php-parallel-lint/php-console-highlighter (v0.5): Loading from cache
  - Installing php-parallel-lint/php-parallel-lint (v1.3.1): Loading from cache
tysonandre/var_representation_polyfill suggests installing ext-var_representation (*)
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
phan/phan suggests installing ext-ast (Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.14+ is recommended.)
phan/phan suggests installing ext-var_representation (Suggested for converting values to strings in issue messages)
Writing lock file
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Attempting to npm audit fix
$ npm audit fix --only=dev

> fibers@5.0.0 install /src/repo/node_modules/fibers
> node build.js || nodejs build.js

make: Entering directory '/src/repo/node_modules/fibers/build'
  CXX(target) Release/obj.target/fibers/src/fibers.o
../src/fibers.cc: In function ‘void uni::SetAccessor(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, uni::FunctionType (*)(v8::Local<v8::String>, const GetterCallbackInfo&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const SetterCallbackInfo&))’:
../src/fibers.cc:355:87: warning: cast between incompatible function types from ‘uni::FunctionType (*)(v8::Local<v8::String>, const GetterCallbackInfo&)’ {aka ‘void (*)(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>&)’} to ‘v8::AccessorNameGetterCallback’ {aka ‘void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&)’} [-Wcast-function-type]
   object->SetAccessor(isolate->GetCurrentContext(), name, (AccessorNameGetterCallback)getter, (AccessorNameSetterCallback)setter).ToChecked();
                                                                                       ^~~~~~
../src/fibers.cc:355:123: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const SetterCallbackInfo&)’ {aka ‘void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} to ‘v8::AccessorNameSetterCallback’ {aka ‘void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} [-Wcast-function-type]
   object->SetAccessor(isolate->GetCurrentContext(), name, (AccessorNameGetterCallback)getter, (AccessorNameSetterCallback)setter).ToChecked();
                                                                                                                           ^~~~~~
In file included from ../src/coroutine.h:1,
                 from ../src/fibers.cc:1:
../src/fibers.cc: At global scope:
/cache/node-gyp/10.24.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.24.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/fibers.cc:930:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(fibers, init)
 ^~~~~~~~~~~
  CXX(target) Release/obj.target/fibers/src/coroutine.o
  CC(target) Release/obj.target/fibers/src/libcoro/coro.o
  SOLINK_MODULE(target) Release/obj.target/fibers.node
  COPY Release/fibers.node
make: Leaving directory '/src/repo/node_modules/fibers/build'
Installed in `/src/repo/node_modules/fibers/bin/linux-x64-64-glibc/fibers.node`

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

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

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

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


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

npm WARN notsup Unsupported engine for @wdio/mocha-framework@7.14.1: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/mocha-framework@7.14.1
npm WARN notsup Unsupported engine for @wdio/types@7.14.1: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/types@7.14.1
npm WARN notsup Unsupported engine for @wdio/logger@7.7.0: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/logger@7.7.0
npm WARN notsup Unsupported engine for mocha@9.1.2: wanted: {"node":">= 12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: mocha@9.1.2
npm WARN notsup Unsupported engine for @wdio/utils@7.14.1: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/utils@7.14.1
npm WARN notsup Unsupported engine for @wdio/logger@7.7.0: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/logger@7.7.0
npm WARN notsup Unsupported engine for @wdio/types@7.14.1: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/types@7.14.1
npm WARN notsup Unsupported engine for @wdio/utils@7.14.1: wanted: {"node":">=12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: @wdio/utils@7.14.1
npm WARN notsup Unsupported engine for mocha@9.1.2: wanted: {"node":">= 12.0.0"} (current: {"node":"10.24.0","npm":"6.14.5"})
npm WARN notsup Not compatible with your version of node/npm: mocha@9.1.2
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

+ @wdio/mocha-framework@7.14.1
added 904 packages from 734 contributors in 74.485s

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

fixed 11 of 11 vulnerabilities in 907 scanned packages

$ npm audit fix --only=dev
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

up to date in 5.07s

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

fixed 0 of 0 vulnerabilities in 906 scanned packages

$ npm audit fix --only=dev
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

up to date in 4.571s

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

fixed 0 of 0 vulnerabilities in 906 scanned packages

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

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

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


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


> fibers@5.0.0 install /src/repo/node_modules/fibers
> node build.js || nodejs build.js

make: Entering directory '/src/repo/node_modules/fibers/build'
  CXX(target) Release/obj.target/fibers/src/fibers.o
../src/fibers.cc: In function ‘void uni::SetAccessor(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, uni::FunctionType (*)(v8::Local<v8::String>, const GetterCallbackInfo&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const SetterCallbackInfo&))’:
../src/fibers.cc:355:87: warning: cast between incompatible function types from ‘uni::FunctionType (*)(v8::Local<v8::String>, const GetterCallbackInfo&)’ {aka ‘void (*)(v8::Local<v8::String>, const v8::PropertyCallbackInfo<v8::Value>&)’} to ‘v8::AccessorNameGetterCallback’ {aka ‘void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&)’} [-Wcast-function-type]
   object->SetAccessor(isolate->GetCurrentContext(), name, (AccessorNameGetterCallback)getter, (AccessorNameSetterCallback)setter).ToChecked();
                                                                                       ^~~~~~
../src/fibers.cc:355:123: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const SetterCallbackInfo&)’ {aka ‘void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} to ‘v8::AccessorNameSetterCallback’ {aka ‘void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} [-Wcast-function-type]
   object->SetAccessor(isolate->GetCurrentContext(), name, (AccessorNameGetterCallback)getter, (AccessorNameSetterCallback)setter).ToChecked();
                                                                                                                           ^~~~~~
In file included from ../src/coroutine.h:1,
                 from ../src/fibers.cc:1:
../src/fibers.cc: At global scope:
/cache/node-gyp/10.24.0/include/node/node.h:573:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
       (node::addon_register_func) (regfunc),                          \
                                           ^
/cache/node-gyp/10.24.0/include/node/node.h:607:3: note: in expansion of macro ‘NODE_MODULE_X’
   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
   ^~~~~~~~~~~~~
../src/fibers.cc:930:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(fibers, init)
 ^~~~~~~~~~~
  CXX(target) Release/obj.target/fibers/src/coroutine.o
  CC(target) Release/obj.target/fibers/src/libcoro/coro.o
  SOLINK_MODULE(target) Release/obj.target/fibers.node
  COPY Release/fibers.node
make: Leaving directory '/src/repo/node_modules/fibers/build'
Installed in `/src/repo/node_modules/fibers/bin/linux-x64-64-glibc/fibers.node`
added 905 packages in 21.135s

$ npm test

> @ test /src/repo
> grunt test

Running "eslint:all" (eslint) task

Running "banana:Newsletter" (banana) task
>> 2 message directories checked.

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

Done.

Upgrading n:@wdio/mocha-framework from 7.5.3 -> 7.14.1
Upgrading n:ansi-regex from 5.0.0 -> 5.0.1
$ package-lock-lint package-lock.json
Checking package-lock.json

$ git add .

$ git commit -F /tmp/tmpz956rnh6
[REL1_37 dbbef49] build: Updating npm dependencies
 3 files changed, 176 insertions(+), 186 deletions(-)

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

* @wdio/mocha-framework: 7.5.3 → 7.14.1
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)
* ansi-regex: 5.0.0 → 5.0.1
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)

Additional changes:
* composer.json: Updated phpcs command in composer test (T280592).
* composer.json: Added phpcs command to scripts (T280592).

Change-Id: I999028d857d4050235393b6c2fd0f25d487d50be
---
 composer.json     |   5 +-
 package-lock.json | 355 ++++++++++++++++++++++------------------------
 package.json      |   2 +-
 3 files changed, 176 insertions(+), 186 deletions(-)

diff --git a/composer.json b/composer.json
index 8a943ae..d59f654 100644
--- a/composer.json
+++ b/composer.json
@@ -11,13 +11,14 @@
 	"scripts": {
 		"test": [
 			"parallel-lint . --exclude vendor --exclude node_modules",
-			"phpcs -p -s",
+			"@phpcs",
 			"minus-x check ."
 		],
 		"fix": [
 			"minus-x fix .",
 			"phpcbf"
 		],
-		"phan": "phan -d . --long-progress-bar"
+		"phan": "phan -d . --long-progress-bar",
+		"phpcs": "phpcs -sp --cache"
 	}
 }
diff --git a/package-lock.json b/package-lock.json
index c8cef73..f1bbfa3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -683,15 +683,15 @@
 			}
 		},
 		"@jest/types": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz",
-			"integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/@jest/types/-/types-27.2.5.tgz",
+			"integrity": "sha512-nmuM4VuDtCZcY+eTpw+0nvstwReMsjPoj7ZR80/BbixulhLaiX+fbv8oeLW8WZlJMcsGQsTmMKT/iTZu1Uy/lQ==",
 			"dev": true,
 			"requires": {
 				"@types/istanbul-lib-coverage": "^2.0.0",
 				"@types/istanbul-reports": "^3.0.0",
 				"@types/node": "*",
-				"@types/yargs": "^15.0.0",
+				"@types/yargs": "^16.0.0",
 				"chalk": "^4.0.0"
 			}
 		},
@@ -919,9 +919,9 @@
 			"dev": true
 		},
 		"@types/mocha": {
-			"version": "8.2.2",
-			"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz",
-			"integrity": "sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw==",
+			"version": "9.0.0",
+			"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.0.0.tgz",
+			"integrity": "sha512-scN0hAWyLVAvLR9AyW7HoFF5sJZglyBsbPuHO4fv7JRvfmPBMfp1ozWqOf/e4wwPNxezBZXRfWzMb6iFLgEVRA==",
 			"dev": true
 		},
 		"@types/node": {
@@ -970,9 +970,9 @@
 			}
 		},
 		"@types/stack-utils": {
-			"version": "2.0.0",
-			"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz",
-			"integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
+			"version": "2.0.1",
+			"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
+			"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==",
 			"dev": true
 		},
 		"@types/stream-buffers": {
@@ -1012,18 +1012,18 @@
 			"dev": true
 		},
 		"@types/yargs": {
-			"version": "15.0.13",
-			"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
-			"integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==",
+			"version": "16.0.4",
+			"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
+			"integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
 			"dev": true,
 			"requires": {
 				"@types/yargs-parser": "*"
 			}
 		},
 		"@types/yargs-parser": {
-			"version": "20.2.0",
-			"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
-			"integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
+			"version": "20.2.1",
+			"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz",
+			"integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==",
 			"dev": true
 		},
 		"@types/yauzl": {
@@ -1278,23 +1278,29 @@
 			}
 		},
 		"@wdio/mocha-framework": {
-			"version": "7.5.3",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.5.3.tgz",
-			"integrity": "sha512-96QCVWsiyZxEgOZP3oTq2B2T7zne5dCdehLa2n4q/BLjk96Rj0jifidJZfd/1+vdNPKX0gWWAzpy98Znn8MVMw==",
+			"version": "7.14.1",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.14.1.tgz",
+			"integrity": "sha512-VoFt8ziAH1KHDR7vKan0tT2I3new0Y/mU284nR/zHfUJyxrqi9P6pff6Y9wVTyjHYHsJfWstwk2v9wPKNUn6pQ==",
 			"dev": true,
 			"requires": {
-				"@types/mocha": "^8.0.0",
-				"@wdio/logger": "7.5.3",
-				"@wdio/types": "7.5.3",
-				"@wdio/utils": "7.5.3",
-				"expect-webdriverio": "^2.0.0",
-				"mocha": "^8.0.1"
+				"@types/mocha": "^9.0.0",
+				"@wdio/logger": "7.7.0",
+				"@wdio/types": "7.14.1",
+				"@wdio/utils": "7.14.1",
+				"expect-webdriverio": "^3.0.0",
+				"mocha": "^9.0.0"
 			},
 			"dependencies": {
+				"@types/node": {
+					"version": "15.14.9",
+					"resolved": "https://registry.npmjs.org/@types/node/-/node-15.14.9.tgz",
+					"integrity": "sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==",
+					"dev": true
+				},
 				"@wdio/logger": {
-					"version": "7.5.3",
-					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz",
-					"integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==",
+					"version": "7.7.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.7.0.tgz",
+					"integrity": "sha512-XX/OkC8NlvsBdhKsb9j7ZbuQtF/Vuo0xf38PXdqYtVezOrYbDuba0hPG++g/IGNuAF34ZbSi+49cvz4u5w92kQ==",
 					"dev": true,
 					"requires": {
 						"chalk": "^4.0.0",
@@ -1304,22 +1310,24 @@
 					}
 				},
 				"@wdio/types": {
-					"version": "7.5.3",
-					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz",
-					"integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==",
+					"version": "7.14.1",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.14.1.tgz",
+					"integrity": "sha512-W1ctBarjFuLz7wub6wNFd3sWfaENf1+thQL2YQW/cgFuTvhyK5hhUPoP2Q1suXBDE+qs90wWwx4z8XwDC6S8OA==",
 					"dev": true,
 					"requires": {
+						"@types/node": "^15.12.5",
 						"got": "^11.8.1"
 					}
 				},
 				"@wdio/utils": {
-					"version": "7.5.3",
-					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.5.3.tgz",
-					"integrity": "sha512-nlLDKr8v8abLOHCKroBwQkGPdCIxjID2MllgWX23xqkYZylM9RdwPBdL8osQt9m3rq2TxiPAT4OlbzNt2WtN6Q==",
+					"version": "7.14.1",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.14.1.tgz",
+					"integrity": "sha512-2LMjTiCccohUKGaHWpodIz9eF+5HApT4NVFJjWYqGQFAUrLaBrSocie7NW5+moYolY5dESYSNVB6qJlSdMbQlA==",
 					"dev": true,
 					"requires": {
-						"@wdio/logger": "7.5.3",
-						"@wdio/types": "7.5.3"
+						"@wdio/logger": "7.7.0",
+						"@wdio/types": "7.14.1",
+						"p-iteration": "^1.1.8"
 					}
 				}
 			}
@@ -1628,9 +1636,9 @@
 			}
 		},
 		"ansi-regex": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-			"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+			"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
 			"dev": true
 		},
 		"ansi-styles": {
@@ -2670,9 +2678,9 @@
 			"dev": true
 		},
 		"diff-sequences": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz",
-			"integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==",
+			"version": "27.0.6",
+			"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
+			"integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
 			"dev": true
 		},
 		"dir-glob": {
@@ -3443,27 +3451,35 @@
 			}
 		},
 		"expect": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
-			"integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz",
+			"integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==",
 			"dev": true,
 			"requires": {
-				"@jest/types": "^26.6.2",
-				"ansi-styles": "^4.0.0",
-				"jest-get-type": "^26.3.0",
-				"jest-matcher-utils": "^26.6.2",
-				"jest-message-util": "^26.6.2",
-				"jest-regex-util": "^26.0.0"
+				"@jest/types": "^27.2.5",
+				"ansi-styles": "^5.0.0",
+				"jest-get-type": "^27.0.6",
+				"jest-matcher-utils": "^27.2.5",
+				"jest-message-util": "^27.2.5",
+				"jest-regex-util": "^27.0.6"
+			},
+			"dependencies": {
+				"ansi-styles": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+					"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+					"dev": true
+				}
 			}
 		},
 		"expect-webdriverio": {
-			"version": "2.0.2",
-			"resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-2.0.2.tgz",
-			"integrity": "sha512-dst0tqP1aZ2p7TPmbatqoIQ+7hRTw+IeKNi830XxKhu2DNNe5vQ85i9ttf9rpXgbnUf91HxKcocn4G7A5bQxDA==",
+			"version": "3.1.4",
+			"resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-3.1.4.tgz",
+			"integrity": "sha512-65FTS3bmxcIp0cq6fLb/72TrCQXBCpwPLC7SwMWdpPlLq461mXcK1BPKJJjnIC587aXSKD+3E4hvnlCtwDmXfg==",
 			"dev": true,
 			"requires": {
-				"expect": "^26.6.2",
-				"jest-matcher-utils": "^26.6.2"
+				"expect": "^27.0.2",
+				"jest-matcher-utils": "^27.0.2"
 			}
 		},
 		"extend": {
@@ -4646,56 +4662,56 @@
 			}
 		},
 		"jest-diff": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz",
-			"integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz",
+			"integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==",
 			"dev": true,
 			"requires": {
 				"chalk": "^4.0.0",
-				"diff-sequences": "^26.6.2",
-				"jest-get-type": "^26.3.0",
-				"pretty-format": "^26.6.2"
+				"diff-sequences": "^27.0.6",
+				"jest-get-type": "^27.0.6",
+				"pretty-format": "^27.2.5"
 			}
 		},
 		"jest-get-type": {
-			"version": "26.3.0",
-			"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz",
-			"integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==",
+			"version": "27.0.6",
+			"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz",
+			"integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==",
 			"dev": true
 		},
 		"jest-matcher-utils": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz",
-			"integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz",
+			"integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==",
 			"dev": true,
 			"requires": {
 				"chalk": "^4.0.0",
-				"jest-diff": "^26.6.2",
-				"jest-get-type": "^26.3.0",
-				"pretty-format": "^26.6.2"
+				"jest-diff": "^27.2.5",
+				"jest-get-type": "^27.0.6",
+				"pretty-format": "^27.2.5"
 			}
 		},
 		"jest-message-util": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz",
-			"integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.5.tgz",
+			"integrity": "sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ==",
 			"dev": true,
 			"requires": {
-				"@babel/code-frame": "^7.0.0",
-				"@jest/types": "^26.6.2",
+				"@babel/code-frame": "^7.12.13",
+				"@jest/types": "^27.2.5",
 				"@types/stack-utils": "^2.0.0",
 				"chalk": "^4.0.0",
 				"graceful-fs": "^4.2.4",
-				"micromatch": "^4.0.2",
-				"pretty-format": "^26.6.2",
+				"micromatch": "^4.0.4",
+				"pretty-format": "^27.2.5",
 				"slash": "^3.0.0",
-				"stack-utils": "^2.0.2"
+				"stack-utils": "^2.0.3"
 			}
 		},
 		"jest-regex-util": {
-			"version": "26.0.0",
-			"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz",
-			"integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==",
+			"version": "27.0.6",
+			"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.0.6.tgz",
+			"integrity": "sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==",
 			"dev": true
 		},
 		"js-tokens": {
@@ -4705,9 +4721,9 @@
 			"dev": true
 		},
 		"js-yaml": {
-			"version": "4.0.0",
-			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz",
-			"integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==",
+			"version": "4.1.0",
+			"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+			"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
 			"dev": true,
 			"requires": {
 				"argparse": "^2.0.1"
@@ -5531,42 +5547,57 @@
 			"dev": true
 		},
 		"mocha": {
-			"version": "8.4.0",
-			"resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz",
-			"integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==",
+			"version": "9.1.2",
+			"resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.2.tgz",
+			"integrity": "sha512-ta3LtJ+63RIBP03VBjMGtSqbe6cWXRejF9SyM9Zyli1CKZJZ+vfCTj3oW24V7wAphMJdpOFLoMI3hjJ1LWbs0w==",
 			"dev": true,
 			"requires": {
 				"@ungap/promise-all-settled": "1.1.2",
 				"ansi-colors": "4.1.1",
 				"browser-stdout": "1.3.1",
-				"chokidar": "3.5.1",
-				"debug": "4.3.1",
+				"chokidar": "3.5.2",
+				"debug": "4.3.2",
 				"diff": "5.0.0",
 				"escape-string-regexp": "4.0.0",
 				"find-up": "5.0.0",
-				"glob": "7.1.6",
+				"glob": "7.1.7",
 				"growl": "1.10.5",
 				"he": "1.2.0",
-				"js-yaml": "4.0.0",
-				"log-symbols": "4.0.0",
+				"js-yaml": "4.1.0",
+				"log-symbols": "4.1.0",
 				"minimatch": "3.0.4",
 				"ms": "2.1.3",
-				"nanoid": "3.1.20",
-				"serialize-javascript": "5.0.1",
+				"nanoid": "3.1.25",
+				"serialize-javascript": "6.0.0",
 				"strip-json-comments": "3.1.1",
 				"supports-color": "8.1.1",
 				"which": "2.0.2",
-				"wide-align": "1.1.3",
-				"workerpool": "6.1.0",
+				"workerpool": "6.1.5",
 				"yargs": "16.2.0",
 				"yargs-parser": "20.2.4",
 				"yargs-unparser": "2.0.0"
 			},
 			"dependencies": {
+				"chokidar": {
+					"version": "3.5.2",
+					"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
+					"integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+					"dev": true,
+					"requires": {
+						"anymatch": "~3.1.2",
+						"braces": "~3.0.2",
+						"fsevents": "~2.3.2",
+						"glob-parent": "~5.1.2",
+						"is-binary-path": "~2.1.0",
+						"is-glob": "~4.0.1",
+						"normalize-path": "~3.0.0",
+						"readdirp": "~3.6.0"
+					}
+				},
 				"debug": {
-					"version": "4.3.1",
-					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
-					"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+					"version": "4.3.2",
+					"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+					"integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
 					"dev": true,
 					"requires": {
 						"ms": "2.1.2"
@@ -5596,20 +5627,6 @@
 						"path-exists": "^4.0.0"
 					}
 				},
-				"glob": {
-					"version": "7.1.6",
-					"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
-					"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
-					"dev": true,
-					"requires": {
-						"fs.realpath": "^1.0.0",
-						"inflight": "^1.0.4",
-						"inherits": "2",
-						"minimatch": "^3.0.4",
-						"once": "^1.3.0",
-						"path-is-absolute": "^1.0.0"
-					}
-				},
 				"locate-path": {
 					"version": "6.0.0",
 					"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -5619,15 +5636,6 @@
 						"p-locate": "^5.0.0"
 					}
 				},
-				"log-symbols": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
-					"integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==",
-					"dev": true,
-					"requires": {
-						"chalk": "^4.0.0"
-					}
-				},
 				"ms": {
 					"version": "2.1.3",
 					"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -5652,6 +5660,15 @@
 						"p-limit": "^3.0.2"
 					}
 				},
+				"readdirp": {
+					"version": "3.6.0",
+					"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+					"integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+					"dev": true,
+					"requires": {
+						"picomatch": "^2.2.1"
+					}
+				},
 				"supports-color": {
 					"version": "8.1.1",
 					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
@@ -5741,9 +5758,9 @@
 			}
 		},
 		"nanoid": {
-			"version": "3.1.20",
-			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
-			"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
+			"version": "3.1.25",
+			"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
+			"integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
 			"dev": true
 		},
 		"natural-compare": {
@@ -5929,6 +5946,12 @@
 			"integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
 			"dev": true
 		},
+		"p-iteration": {
+			"version": "1.1.8",
+			"resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz",
+			"integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==",
+			"dev": true
+		},
 		"p-limit": {
 			"version": "2.3.0",
 			"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -6267,15 +6290,23 @@
 			"dev": true
 		},
 		"pretty-format": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz",
-			"integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==",
+			"version": "27.2.5",
+			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz",
+			"integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==",
 			"dev": true,
 			"requires": {
-				"@jest/types": "^26.6.2",
-				"ansi-regex": "^5.0.0",
-				"ansi-styles": "^4.0.0",
+				"@jest/types": "^27.2.5",
+				"ansi-regex": "^5.0.1",
+				"ansi-styles": "^5.0.0",
 				"react-is": "^17.0.1"
+			},
+			"dependencies": {
+				"ansi-styles": {
+					"version": "5.2.0",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+					"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+					"dev": true
+				}
 			}
 		},
 		"prettyjson": {
@@ -6786,9 +6817,9 @@
 			}
 		},
 		"serialize-javascript": {
-			"version": "5.0.1",
-			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
-			"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
+			"version": "6.0.0",
+			"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+			"integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
 			"dev": true,
 			"requires": {
 				"randombytes": "^2.1.0"
@@ -6915,9 +6946,9 @@
 			}
 		},
 		"stack-utils": {
-			"version": "2.0.3",
-			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz",
-			"integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==",
+			"version": "2.0.5",
+			"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz",
+			"integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==",
 			"dev": true,
 			"requires": {
 				"escape-string-regexp": "^2.0.0"
@@ -7730,48 +7761,6 @@
 				"isexe": "^2.0.0"
 			}
 		},
-		"wide-align": {
-			"version": "1.1.3",
-			"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
-			"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
-			"dev": true,
-			"requires": {
-				"string-width": "^1.0.2 || 2"
-			},
-			"dependencies": {
-				"ansi-regex": {
-					"version": "3.0.0",
-					"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-					"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
-					"dev": true
-				},
-				"is-fullwidth-code-point": {
-					"version": "2.0.0",
-					"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-					"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-					"dev": true
-				},
-				"string-width": {
-					"version": "2.1.1",
-					"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
-					"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
-					"dev": true,
-					"requires": {
-						"is-fullwidth-code-point": "^2.0.0",
-						"strip-ansi": "^4.0.0"
-					}
-				},
-				"strip-ansi": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
-					"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
-					"dev": true,
-					"requires": {
-						"ansi-regex": "^3.0.0"
-					}
-				}
-			}
-		},
 		"word-wrap": {
 			"version": "1.2.3",
 			"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -7779,9 +7768,9 @@
 			"dev": true
 		},
 		"workerpool": {
-			"version": "6.1.0",
-			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz",
-			"integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==",
+			"version": "6.1.5",
+			"resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz",
+			"integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==",
 			"dev": true
 		},
 		"wrap-ansi": {
diff --git a/package.json b/package.json
index 0311299..6bac3bf 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,7 @@
 		"@wdio/dot-reporter": "7.5.3",
 		"@wdio/junit-reporter": "7.5.3",
 		"@wdio/local-runner": "7.5.3",
-		"@wdio/mocha-framework": "7.5.3",
+		"@wdio/mocha-framework": "7.14.1",
 		"@wdio/sync": "7.5.3",
 		"eslint-config-wikimedia": "0.20.0",
 		"grunt": "1.4.0",
-- 
2.20.1

Source code is licensed under the AGPL.