mediawiki/extensions/ProofreadPage (main)

sourcepatches
From 47c05b3a46c37e19c7e640f8abd5873dfb0bd013 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sat, 6 Nov 2021 07:57:49 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: 37.0.0 → 38.0.0
* mediawiki/mediawiki-phan-config: 0.10.6 → 0.11.0
* php-parallel-lint/php-parallel-lint: 1.3.0 → 1.3.1

npm:
* @wdio/mocha-framework: 7.3.0 → 7.16.4
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)
* ansi-regex: 5.0.0 → 5.0.1
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)
* validator: 13.6.0 → 13.7.0
  * https://npmjs.com/advisories/1004784 (CVE-2021-3765)

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

Change-Id: I1745cbcc494e5fb8bb37cada8325f37728eed177
---
 composer.json     |  11 +-
 package-lock.json | 597 +++++++++++++++++++++++++---------------------
 package.json      |   2 +-
 3 files changed, 332 insertions(+), 278 deletions(-)

diff --git a/composer.json b/composer.json
index cfd7090..68dde72 100644
--- a/composer.json
+++ b/composer.json
@@ -8,22 +8,23 @@
 		"composer/installers": "~1.0"
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "37.0.0",
-		"mediawiki/mediawiki-phan-config": "0.10.6",
+		"mediawiki/mediawiki-codesniffer": "38.0.0",
+		"mediawiki/mediawiki-phan-config": "0.11.0",
 		"mediawiki/minus-x": "1.1.1",
 		"php-parallel-lint/php-console-highlighter": "0.5.0",
-		"php-parallel-lint/php-parallel-lint": "1.3.0"
+		"php-parallel-lint/php-parallel-lint": "1.3.1"
 	},
 	"scripts": {
 		"test": [
 			"parallel-lint . --exclude node_modules --exclude vendor",
-			"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 715c326..d41d895 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -395,15 +395,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"
 			},
 			"dependencies": {
@@ -417,9 +417,9 @@
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
@@ -604,9 +604,9 @@
 			}
 		},
 		"@types/istanbul-reports": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
-			"integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+			"integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
 			"dev": true,
 			"requires": {
 				"@types/istanbul-lib-report": "*"
@@ -682,9 +682,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": {
@@ -733,9 +733,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": {
@@ -775,18 +775,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": {
@@ -1078,17 +1078,107 @@
 			}
 		},
 		"@wdio/mocha-framework": {
-			"version": "7.3.0",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.3.0.tgz",
-			"integrity": "sha512-xVbnuYZrLReu5ED1E1vZU6RQ5PjBPgdx5E6FFa66vDG+Cgu5HNd5uZmepcgJMIsr8YDE8GSOag993HrLBiRFxQ==",
+			"version": "7.16.4",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.16.4.tgz",
+			"integrity": "sha512-vKJzLN2HEKvyug0BGVCVueTg5j9fTQxY7SIP3Euv0r5RGEAtFJ5S7v/h+kw1Mu3pvlwF/XWZ4jOtIvS8B19x0g==",
 			"dev": true,
 			"requires": {
-				"@types/mocha": "^8.0.0",
-				"@wdio/logger": "7.0.0",
-				"@wdio/types": "7.2.1",
-				"@wdio/utils": "7.3.0",
-				"expect-webdriverio": "^2.0.0",
-				"mocha": "^8.0.1"
+				"@types/mocha": "^9.0.0",
+				"@wdio/logger": "7.16.0",
+				"@wdio/types": "7.16.3",
+				"@wdio/utils": "7.16.3",
+				"expect-webdriverio": "^3.0.0",
+				"mocha": "^9.0.0"
+			},
+			"dependencies": {
+				"@types/node": {
+					"version": "16.11.6",
+					"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz",
+					"integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==",
+					"dev": true
+				},
+				"@wdio/logger": {
+					"version": "7.16.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz",
+					"integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==",
+					"dev": true,
+					"requires": {
+						"chalk": "^4.0.0",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"strip-ansi": "^6.0.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "7.16.3",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.3.tgz",
+					"integrity": "sha512-iJLtJrOJZSJrXR1zseCkVWUFs477FngjWz2HTMfGHR69LzfmxC0RNagemjZuLTfhTqWp/FBbqaA/F+7xJdNKag==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^16.11.1",
+						"got": "^11.8.1"
+					}
+				},
+				"@wdio/utils": {
+					"version": "7.16.3",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.3.tgz",
+					"integrity": "sha512-/662h5Z7B5TejHN6GiW96PAKuTPi/xcAGmtjA9ozRBI2/0eHSccDfNEaBgTTjLqqEgGAXylHcOuxHOrKx2ddJw==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "7.16.0",
+						"@wdio/types": "7.16.3",
+						"p-iteration": "^1.1.8"
+					}
+				},
+				"ansi-styles": {
+					"version": "4.3.0",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+					"dev": true,
+					"requires": {
+						"color-convert": "^2.0.1"
+					}
+				},
+				"chalk": {
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+					"dev": true,
+					"requires": {
+						"ansi-styles": "^4.1.0",
+						"supports-color": "^7.1.0"
+					}
+				},
+				"color-convert": {
+					"version": "2.0.1",
+					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+					"dev": true,
+					"requires": {
+						"color-name": "~1.1.4"
+					}
+				},
+				"color-name": {
+					"version": "1.1.4",
+					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+					"dev": true
+				},
+				"has-flag": {
+					"version": "4.0.0",
+					"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+					"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+					"dev": true
+				},
+				"supports-color": {
+					"version": "7.2.0",
+					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+					"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+					"dev": true,
+					"requires": {
+						"has-flag": "^4.0.0"
+					}
+				}
 			}
 		},
 		"@wdio/protocols": {
@@ -1240,9 +1330,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": {
@@ -2322,9 +2412,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": {
@@ -3348,53 +3438,35 @@
 			}
 		},
 		"expect": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
-			"integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+			"version": "27.3.1",
+			"resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz",
+			"integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==",
 			"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.3.1",
+				"jest-matcher-utils": "^27.3.1",
+				"jest-message-util": "^27.3.1",
+				"jest-regex-util": "^27.0.6"
 			},
 			"dependencies": {
 				"ansi-styles": {
-					"version": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-					"dev": true,
-					"requires": {
-						"color-convert": "^2.0.1"
-					}
-				},
-				"color-convert": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-					"dev": true,
-					"requires": {
-						"color-name": "~1.1.4"
-					}
-				},
-				"color-name": {
-					"version": "1.1.4",
-					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+					"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": {
@@ -4815,15 +4887,15 @@
 			}
 		},
 		"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
+			"integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
 			"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.3.1",
+				"pretty-format": "^27.3.1"
 			},
 			"dependencies": {
 				"ansi-styles": {
@@ -4836,9 +4908,9 @@
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
@@ -4878,21 +4950,21 @@
 			}
 		},
 		"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
+			"integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
 			"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz",
+			"integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==",
 			"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.3.1",
+				"jest-get-type": "^27.3.1",
+				"pretty-format": "^27.3.1"
 			},
 			"dependencies": {
 				"ansi-styles": {
@@ -4905,9 +4977,9 @@
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
@@ -4947,39 +5019,89 @@
 			}
 		},
 		"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz",
+			"integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==",
 			"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.3.1",
 				"slash": "^3.0.0",
-				"stack-utils": "^2.0.2"
+				"stack-utils": "^2.0.3"
 			},
 			"dependencies": {
-				"ansi-styles": {
-					"version": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+				"@babel/code-frame": {
+					"version": "7.16.0",
+					"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+					"integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
 					"dev": true,
 					"requires": {
-						"color-convert": "^2.0.1"
+						"@babel/highlight": "^7.16.0"
+					}
+				},
+				"@babel/helper-validator-identifier": {
+					"version": "7.15.7",
+					"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+					"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+					"dev": true
+				},
+				"@babel/highlight": {
+					"version": "7.16.0",
+					"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
+					"integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==",
+					"dev": true,
+					"requires": {
+						"@babel/helper-validator-identifier": "^7.15.7",
+						"chalk": "^2.0.0",
+						"js-tokens": "^4.0.0"
+					},
+					"dependencies": {
+						"chalk": {
+							"version": "2.4.2",
+							"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+							"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+							"dev": true,
+							"requires": {
+								"ansi-styles": "^3.2.1",
+								"escape-string-regexp": "^1.0.5",
+								"supports-color": "^5.3.0"
+							}
+						}
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
 						"supports-color": "^7.1.0"
+					},
+					"dependencies": {
+						"ansi-styles": {
+							"version": "4.3.0",
+							"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+							"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+							"dev": true,
+							"requires": {
+								"color-convert": "^2.0.1"
+							}
+						},
+						"supports-color": {
+							"version": "7.2.0",
+							"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+							"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+							"dev": true,
+							"requires": {
+								"has-flag": "^4.0.0"
+							}
+						}
 					}
 				},
 				"color-convert": {
@@ -5003,21 +5125,28 @@
 					"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
 					"dev": true
 				},
-				"supports-color": {
-					"version": "7.2.0",
-					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-					"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+				"micromatch": {
+					"version": "4.0.4",
+					"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+					"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
 					"dev": true,
 					"requires": {
-						"has-flag": "^4.0.0"
+						"braces": "^3.0.1",
+						"picomatch": "^2.2.3"
 					}
+				},
+				"picomatch": {
+					"version": "2.3.0",
+					"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+					"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+					"dev": true
 				}
 			}
 		},
 		"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": {
@@ -5865,93 +5994,63 @@
 			"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.3",
+			"resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz",
+			"integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==",
 			"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": {
-				"ansi-styles": {
-					"version": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-					"dev": true,
-					"requires": {
-						"color-convert": "^2.0.1"
-					}
-				},
 				"argparse": {
 					"version": "2.0.1",
 					"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
 					"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
 					"dev": true
 				},
-				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
-					"dev": true,
-					"requires": {
-						"ansi-styles": "^4.1.0",
-						"supports-color": "^7.1.0"
-					},
-					"dependencies": {
-						"supports-color": {
-							"version": "7.2.0",
-							"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-							"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-							"dev": true,
-							"requires": {
-								"has-flag": "^4.0.0"
-							}
-						}
-					}
-				},
-				"color-convert": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+				"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": {
-						"color-name": "~1.1.4"
+						"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"
 					}
 				},
-				"color-name": {
-					"version": "1.1.4",
-					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-					"dev": true
-				},
 				"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"
@@ -5981,6 +6080,20 @@
 						"path-exists": "^4.0.0"
 					}
 				},
+				"glob": {
+					"version": "7.1.7",
+					"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+					"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+					"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"
+					}
+				},
 				"has-flag": {
 					"version": "4.0.0",
 					"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -5988,9 +6101,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"
@@ -6005,27 +6118,12 @@
 						"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",
 					"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
 					"dev": true
 				},
-				"nanoid": {
-					"version": "3.1.20",
-					"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
-					"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
-					"dev": true
-				},
 				"p-limit": {
 					"version": "3.1.0",
 					"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -6044,6 +6142,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",
@@ -6399,6 +6506,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",
@@ -6685,39 +6798,21 @@
 			"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.3.1",
+			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+			"integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
 			"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": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-					"dev": true,
-					"requires": {
-						"color-convert": "^2.0.1"
-					}
-				},
-				"color-convert": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-					"dev": true,
-					"requires": {
-						"color-name": "~1.1.4"
-					}
-				},
-				"color-name": {
-					"version": "1.1.4",
-					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+					"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
 				}
 			}
@@ -7267,9 +7362,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"
@@ -7458,9 +7553,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"
@@ -8131,9 +8226,9 @@
 			}
 		},
 		"validator": {
-			"version": "13.6.0",
-			"resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz",
-			"integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==",
+			"version": "13.7.0",
+			"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+			"integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
 			"dev": true
 		},
 		"verror": {
@@ -8273,48 +8368,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",
@@ -8322,9 +8375,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 28e8f04..7711600 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
 		"@wdio/dot-reporter": "7.4.2",
 		"@wdio/junit-reporter": "7.4.2",
 		"@wdio/local-runner": "7.3.0",
-		"@wdio/mocha-framework": "7.3.0",
+		"@wdio/mocha-framework": "7.16.4",
 		"@wdio/sync": "7.3.0",
 		"eslint-config-wikimedia": "0.20.0",
 		"grunt": "1.4.0",
-- 
2.20.1

$ date
Sat Nov  6 07:53:36 UTC 2021

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

$ git config user.name libraryupgrader

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

$ git submodule update --init

$ grr init
Installed commit-msg hook.

$ git show-ref refs/heads/master
645dfcc92e5e41490ab724e79f0627aa928ca2ba refs/heads/master

$ 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 composer/installers (v1.12.0): Loading from cache
  - 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.6): Loading from cache
  - Installing mediawiki/mediawiki-codesniffer (v37.0.0): 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.10): 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.10): Loading from cache
  - Installing psr/log (1.1.4): Loading from cache
  - Installing sabre/event (5.1.4): Loading from cache
  - Installing netresearch/jsonmapper (v3.1.1): Loading from cache
  - Installing microsoft/tolerant-php-parser (v0.0.23): Loading from cache
  - Installing phpdocumentor/reflection-common (2.2.0): Loading from cache
  - Installing webmozart/assert (1.10.0): Loading from cache
  - Installing phpdocumentor/type-resolver (1.5.1): Loading from cache
  - Installing phpdocumentor/reflection-docblock (5.3.0): Loading from cache
  - Installing felixfbecker/advanced-json-rpc (v3.2.1): Loading from cache
  - Installing composer/xdebug-handler (1.4.6): Loading from cache
  - Installing phan/phan (3.2.6): Loading from cache
  - Installing mediawiki/phan-taint-check-plugin (3.2.1): Loading from cache
  - Installing mediawiki/mediawiki-phan-config (0.10.6): Loading from cache
  - Installing mediawiki/minus-x (1.1.1): Loading from cache
  - Installing php-parallel-lint/php-console-color (v0.3): Loading from cache
  - Installing php-parallel-lint/php-console-highlighter (v0.5): Loading from cache
  - Installing php-parallel-lint/php-parallel-lint (v1.3.0): Loading from cache
symfony/service-contracts suggests installing symfony/service-implementation
symfony/console suggests installing symfony/event-dispatcher
symfony/console suggests installing symfony/lock
symfony/console suggests installing symfony/process
phan/phan suggests installing ext-ast (Needed for parsing ASTs (unless --use-fallback-parser is used). 1.0.1+ is needed, 1.0.8+ is recommended.)
Writing lock file
Generating autoload files
15 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Upgrading c:mediawiki/mediawiki-codesniffer from 37.0.0 -> 38.0.0
Upgrading c:mediawiki/mediawiki-phan-config from 0.10.6 -> 0.11.0
Upgrading c:php-parallel-lint/php-parallel-lint from 1.3.0 -> 1.3.1
$ composer update
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: 1 install, 9 updates, 1 removal
  - Removing sebastian/diff (3.0.3)
  - Updating squizlabs/php_codesniffer (3.6.0 => 3.6.1): Loading from cache
  - Updating mediawiki/mediawiki-codesniffer (v37.0.0 => v38.0.0): Loading from cache
  - Installing tysonandre/var_representation_polyfill (0.1.1): Loading from cache
  - Updating netresearch/jsonmapper (v3.1.1 => v4.0.0): Loading from cache
  - Updating microsoft/tolerant-php-parser (v0.0.23 => v0.1.1): Loading from cache
  - Updating composer/xdebug-handler (1.4.6 => 2.0.2): Loading from cache
  - Updating phan/phan (3.2.6 => 5.2.0): Loading from cache
  - Updating mediawiki/phan-taint-check-plugin (3.2.1 => 3.3.2): Loading from cache
  - Updating mediawiki/mediawiki-phan-config (0.10.6 => 0.11.0): Loading from cache
  - Updating php-parallel-lint/php-parallel-lint (v1.3.0 => v1.3.1): Loading from cache
tysonandre/var_representation_polyfill suggests installing ext-var_representation (*)
Writing lock file
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

set()
$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
14 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

$ composer test
> parallel-lint . --exclude node_modules --exclude vendor
PHP 7.3.29 | 10 parallel jobs
............................................................  60/104 (57 %)
............................................                 104/104 (100 %)


Checked 104 files in 0.5 seconds
No syntax error found
> phpcs -p -s
............................................................  60 / 104 (58%)
............................................                 104 / 104 (100%)


Time: 1.61 secs; Memory: 16MB

> minus-x check .
MinusX
======
Processing /src/repo...
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.............................................................
.....
All good!

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.13.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.16.4: 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.16.4
npm WARN notsup Unsupported engine for @wdio/utils@7.16.3: 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.16.3
npm WARN notsup Unsupported engine for @wdio/types@7.16.3: 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.16.3
npm WARN notsup Unsupported engine for mocha@9.1.3: 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.3
npm WARN notsup Unsupported engine for @wdio/logger@7.16.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.16.0
npm WARN notsup Unsupported engine for @wdio/utils@7.16.3: 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.16.3
npm WARN notsup Unsupported engine for @wdio/types@7.16.3: 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.16.3
npm WARN notsup Unsupported engine for @wdio/logger@7.16.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.16.0
npm WARN notsup Unsupported engine for mocha@9.1.3: 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.3
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.16.4
added 979 packages from 742 contributors in 134.54s

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

fixed 8 of 8 vulnerabilities in 978 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.095s

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

fixed 0 of 0 vulnerabilities in 982 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.718s

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

fixed 0 of 0 vulnerabilities in 982 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.13.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 981 packages in 19.474s

$ npm test

> @ test /src/repo
> grunt test

Running "eslint:all" (eslint) task

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

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

Running "libcheck" task
>> Library folder is synchronized with upstream libraries' states.

Done.

Upgrading n:@wdio/mocha-framework from 7.3.0 -> 7.16.4
Upgrading n:ansi-regex from 5.0.0 -> 5.0.1
Upgrading n:validator from 13.6.0 -> 13.7.0
$ package-lock-lint package-lock.json
Checking package-lock.json

$ git add .

$ git commit -F /tmp/tmpixp0hqsu
[master 47c05b3] build: Updating dependencies
 3 files changed, 332 insertions(+), 278 deletions(-)

$ git format-patch HEAD~1 --stdout
From 47c05b3a46c37e19c7e640f8abd5873dfb0bd013 Mon Sep 17 00:00:00 2001
From: libraryupgrader <tools.libraryupgrader@tools.wmflabs.org>
Date: Sat, 6 Nov 2021 07:57:49 +0000
Subject: [PATCH] build: Updating dependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

composer:
* mediawiki/mediawiki-codesniffer: 37.0.0 → 38.0.0
* mediawiki/mediawiki-phan-config: 0.10.6 → 0.11.0
* php-parallel-lint/php-parallel-lint: 1.3.0 → 1.3.1

npm:
* @wdio/mocha-framework: 7.3.0 → 7.16.4
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)
* ansi-regex: 5.0.0 → 5.0.1
  * https://npmjs.com/advisories/1002401 (CVE-2021-3807)
* validator: 13.6.0 → 13.7.0
  * https://npmjs.com/advisories/1004784 (CVE-2021-3765)

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

Change-Id: I1745cbcc494e5fb8bb37cada8325f37728eed177
---
 composer.json     |  11 +-
 package-lock.json | 597 +++++++++++++++++++++++++---------------------
 package.json      |   2 +-
 3 files changed, 332 insertions(+), 278 deletions(-)

diff --git a/composer.json b/composer.json
index cfd7090..68dde72 100644
--- a/composer.json
+++ b/composer.json
@@ -8,22 +8,23 @@
 		"composer/installers": "~1.0"
 	},
 	"require-dev": {
-		"mediawiki/mediawiki-codesniffer": "37.0.0",
-		"mediawiki/mediawiki-phan-config": "0.10.6",
+		"mediawiki/mediawiki-codesniffer": "38.0.0",
+		"mediawiki/mediawiki-phan-config": "0.11.0",
 		"mediawiki/minus-x": "1.1.1",
 		"php-parallel-lint/php-console-highlighter": "0.5.0",
-		"php-parallel-lint/php-parallel-lint": "1.3.0"
+		"php-parallel-lint/php-parallel-lint": "1.3.1"
 	},
 	"scripts": {
 		"test": [
 			"parallel-lint . --exclude node_modules --exclude vendor",
-			"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 715c326..d41d895 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -395,15 +395,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"
 			},
 			"dependencies": {
@@ -417,9 +417,9 @@
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
@@ -604,9 +604,9 @@
 			}
 		},
 		"@types/istanbul-reports": {
-			"version": "3.0.0",
-			"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz",
-			"integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==",
+			"version": "3.0.1",
+			"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
+			"integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
 			"dev": true,
 			"requires": {
 				"@types/istanbul-lib-report": "*"
@@ -682,9 +682,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": {
@@ -733,9 +733,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": {
@@ -775,18 +775,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": {
@@ -1078,17 +1078,107 @@
 			}
 		},
 		"@wdio/mocha-framework": {
-			"version": "7.3.0",
-			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.3.0.tgz",
-			"integrity": "sha512-xVbnuYZrLReu5ED1E1vZU6RQ5PjBPgdx5E6FFa66vDG+Cgu5HNd5uZmepcgJMIsr8YDE8GSOag993HrLBiRFxQ==",
+			"version": "7.16.4",
+			"resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.16.4.tgz",
+			"integrity": "sha512-vKJzLN2HEKvyug0BGVCVueTg5j9fTQxY7SIP3Euv0r5RGEAtFJ5S7v/h+kw1Mu3pvlwF/XWZ4jOtIvS8B19x0g==",
 			"dev": true,
 			"requires": {
-				"@types/mocha": "^8.0.0",
-				"@wdio/logger": "7.0.0",
-				"@wdio/types": "7.2.1",
-				"@wdio/utils": "7.3.0",
-				"expect-webdriverio": "^2.0.0",
-				"mocha": "^8.0.1"
+				"@types/mocha": "^9.0.0",
+				"@wdio/logger": "7.16.0",
+				"@wdio/types": "7.16.3",
+				"@wdio/utils": "7.16.3",
+				"expect-webdriverio": "^3.0.0",
+				"mocha": "^9.0.0"
+			},
+			"dependencies": {
+				"@types/node": {
+					"version": "16.11.6",
+					"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz",
+					"integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==",
+					"dev": true
+				},
+				"@wdio/logger": {
+					"version": "7.16.0",
+					"resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz",
+					"integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==",
+					"dev": true,
+					"requires": {
+						"chalk": "^4.0.0",
+						"loglevel": "^1.6.0",
+						"loglevel-plugin-prefix": "^0.8.4",
+						"strip-ansi": "^6.0.0"
+					}
+				},
+				"@wdio/types": {
+					"version": "7.16.3",
+					"resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.3.tgz",
+					"integrity": "sha512-iJLtJrOJZSJrXR1zseCkVWUFs477FngjWz2HTMfGHR69LzfmxC0RNagemjZuLTfhTqWp/FBbqaA/F+7xJdNKag==",
+					"dev": true,
+					"requires": {
+						"@types/node": "^16.11.1",
+						"got": "^11.8.1"
+					}
+				},
+				"@wdio/utils": {
+					"version": "7.16.3",
+					"resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.3.tgz",
+					"integrity": "sha512-/662h5Z7B5TejHN6GiW96PAKuTPi/xcAGmtjA9ozRBI2/0eHSccDfNEaBgTTjLqqEgGAXylHcOuxHOrKx2ddJw==",
+					"dev": true,
+					"requires": {
+						"@wdio/logger": "7.16.0",
+						"@wdio/types": "7.16.3",
+						"p-iteration": "^1.1.8"
+					}
+				},
+				"ansi-styles": {
+					"version": "4.3.0",
+					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+					"dev": true,
+					"requires": {
+						"color-convert": "^2.0.1"
+					}
+				},
+				"chalk": {
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+					"dev": true,
+					"requires": {
+						"ansi-styles": "^4.1.0",
+						"supports-color": "^7.1.0"
+					}
+				},
+				"color-convert": {
+					"version": "2.0.1",
+					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+					"dev": true,
+					"requires": {
+						"color-name": "~1.1.4"
+					}
+				},
+				"color-name": {
+					"version": "1.1.4",
+					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+					"dev": true
+				},
+				"has-flag": {
+					"version": "4.0.0",
+					"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+					"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+					"dev": true
+				},
+				"supports-color": {
+					"version": "7.2.0",
+					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+					"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+					"dev": true,
+					"requires": {
+						"has-flag": "^4.0.0"
+					}
+				}
 			}
 		},
 		"@wdio/protocols": {
@@ -1240,9 +1330,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": {
@@ -2322,9 +2412,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": {
@@ -3348,53 +3438,35 @@
 			}
 		},
 		"expect": {
-			"version": "26.6.2",
-			"resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz",
-			"integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==",
+			"version": "27.3.1",
+			"resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz",
+			"integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==",
 			"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.3.1",
+				"jest-matcher-utils": "^27.3.1",
+				"jest-message-util": "^27.3.1",
+				"jest-regex-util": "^27.0.6"
 			},
 			"dependencies": {
 				"ansi-styles": {
-					"version": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-					"dev": true,
-					"requires": {
-						"color-convert": "^2.0.1"
-					}
-				},
-				"color-convert": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-					"dev": true,
-					"requires": {
-						"color-name": "~1.1.4"
-					}
-				},
-				"color-name": {
-					"version": "1.1.4",
-					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+					"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": {
@@ -4815,15 +4887,15 @@
 			}
 		},
 		"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz",
+			"integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==",
 			"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.3.1",
+				"pretty-format": "^27.3.1"
 			},
 			"dependencies": {
 				"ansi-styles": {
@@ -4836,9 +4908,9 @@
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
@@ -4878,21 +4950,21 @@
 			}
 		},
 		"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz",
+			"integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==",
 			"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz",
+			"integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==",
 			"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.3.1",
+				"jest-get-type": "^27.3.1",
+				"pretty-format": "^27.3.1"
 			},
 			"dependencies": {
 				"ansi-styles": {
@@ -4905,9 +4977,9 @@
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
@@ -4947,39 +5019,89 @@
 			}
 		},
 		"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.3.1",
+			"resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz",
+			"integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==",
 			"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.3.1",
 				"slash": "^3.0.0",
-				"stack-utils": "^2.0.2"
+				"stack-utils": "^2.0.3"
 			},
 			"dependencies": {
-				"ansi-styles": {
-					"version": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+				"@babel/code-frame": {
+					"version": "7.16.0",
+					"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+					"integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
 					"dev": true,
 					"requires": {
-						"color-convert": "^2.0.1"
+						"@babel/highlight": "^7.16.0"
+					}
+				},
+				"@babel/helper-validator-identifier": {
+					"version": "7.15.7",
+					"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
+					"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==",
+					"dev": true
+				},
+				"@babel/highlight": {
+					"version": "7.16.0",
+					"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
+					"integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==",
+					"dev": true,
+					"requires": {
+						"@babel/helper-validator-identifier": "^7.15.7",
+						"chalk": "^2.0.0",
+						"js-tokens": "^4.0.0"
+					},
+					"dependencies": {
+						"chalk": {
+							"version": "2.4.2",
+							"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+							"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+							"dev": true,
+							"requires": {
+								"ansi-styles": "^3.2.1",
+								"escape-string-regexp": "^1.0.5",
+								"supports-color": "^5.3.0"
+							}
+						}
 					}
 				},
 				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+					"version": "4.1.2",
+					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+					"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 					"dev": true,
 					"requires": {
 						"ansi-styles": "^4.1.0",
 						"supports-color": "^7.1.0"
+					},
+					"dependencies": {
+						"ansi-styles": {
+							"version": "4.3.0",
+							"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+							"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+							"dev": true,
+							"requires": {
+								"color-convert": "^2.0.1"
+							}
+						},
+						"supports-color": {
+							"version": "7.2.0",
+							"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+							"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+							"dev": true,
+							"requires": {
+								"has-flag": "^4.0.0"
+							}
+						}
 					}
 				},
 				"color-convert": {
@@ -5003,21 +5125,28 @@
 					"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
 					"dev": true
 				},
-				"supports-color": {
-					"version": "7.2.0",
-					"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-					"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+				"micromatch": {
+					"version": "4.0.4",
+					"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz",
+					"integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
 					"dev": true,
 					"requires": {
-						"has-flag": "^4.0.0"
+						"braces": "^3.0.1",
+						"picomatch": "^2.2.3"
 					}
+				},
+				"picomatch": {
+					"version": "2.3.0",
+					"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
+					"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
+					"dev": true
 				}
 			}
 		},
 		"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": {
@@ -5865,93 +5994,63 @@
 			"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.3",
+			"resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz",
+			"integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==",
 			"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": {
-				"ansi-styles": {
-					"version": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-					"dev": true,
-					"requires": {
-						"color-convert": "^2.0.1"
-					}
-				},
 				"argparse": {
 					"version": "2.0.1",
 					"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
 					"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
 					"dev": true
 				},
-				"chalk": {
-					"version": "4.1.1",
-					"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
-					"integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
-					"dev": true,
-					"requires": {
-						"ansi-styles": "^4.1.0",
-						"supports-color": "^7.1.0"
-					},
-					"dependencies": {
-						"supports-color": {
-							"version": "7.2.0",
-							"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-							"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-							"dev": true,
-							"requires": {
-								"has-flag": "^4.0.0"
-							}
-						}
-					}
-				},
-				"color-convert": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+				"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": {
-						"color-name": "~1.1.4"
+						"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"
 					}
 				},
-				"color-name": {
-					"version": "1.1.4",
-					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-					"dev": true
-				},
 				"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"
@@ -5981,6 +6080,20 @@
 						"path-exists": "^4.0.0"
 					}
 				},
+				"glob": {
+					"version": "7.1.7",
+					"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+					"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+					"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"
+					}
+				},
 				"has-flag": {
 					"version": "4.0.0",
 					"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -5988,9 +6101,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"
@@ -6005,27 +6118,12 @@
 						"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",
 					"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
 					"dev": true
 				},
-				"nanoid": {
-					"version": "3.1.20",
-					"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz",
-					"integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==",
-					"dev": true
-				},
 				"p-limit": {
 					"version": "3.1.0",
 					"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
@@ -6044,6 +6142,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",
@@ -6399,6 +6506,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",
@@ -6685,39 +6798,21 @@
 			"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.3.1",
+			"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz",
+			"integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==",
 			"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": "4.3.0",
-					"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-					"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-					"dev": true,
-					"requires": {
-						"color-convert": "^2.0.1"
-					}
-				},
-				"color-convert": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-					"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-					"dev": true,
-					"requires": {
-						"color-name": "~1.1.4"
-					}
-				},
-				"color-name": {
-					"version": "1.1.4",
-					"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-					"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+					"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
 				}
 			}
@@ -7267,9 +7362,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"
@@ -7458,9 +7553,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"
@@ -8131,9 +8226,9 @@
 			}
 		},
 		"validator": {
-			"version": "13.6.0",
-			"resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz",
-			"integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==",
+			"version": "13.7.0",
+			"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+			"integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
 			"dev": true
 		},
 		"verror": {
@@ -8273,48 +8368,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",
@@ -8322,9 +8375,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 28e8f04..7711600 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
 		"@wdio/dot-reporter": "7.4.2",
 		"@wdio/junit-reporter": "7.4.2",
 		"@wdio/local-runner": "7.3.0",
-		"@wdio/mocha-framework": "7.3.0",
+		"@wdio/mocha-framework": "7.16.4",
 		"@wdio/sync": "7.3.0",
 		"eslint-config-wikimedia": "0.20.0",
 		"grunt": "1.4.0",
-- 
2.20.1

composer dependencies

Dependencies
Development dependencies

npm dependencies

Dependencies
Development dependencies

Logs

Source code is licensed under the AGPL.