From e5cf25d1796dc6d31b912d84981d9b31a6a4bfd4 Mon Sep 17 00:00:00 2001 From: nick-funk Date: Tue, 28 Nov 2023 16:08:15 -0700 Subject: [PATCH 01/66] set new fields to improve akismet spam payloads --- .../services/comments/pipeline/phases/spam.ts | 13 +++- server/src/core/server/services/spam/index.ts | 64 +++++++++++++++---- 2 files changed, 63 insertions(+), 14 deletions(-) diff --git a/server/src/core/server/services/comments/pipeline/phases/spam.ts b/server/src/core/server/services/comments/pipeline/phases/spam.ts index e8d7a38014..f7a71c4052 100644 --- a/server/src/core/server/services/comments/pipeline/phases/spam.ts +++ b/server/src/core/server/services/comments/pipeline/phases/spam.ts @@ -6,6 +6,7 @@ import { IntermediateModerationPhase, IntermediatePhaseResult, } from "coral-server/services/comments/pipeline"; +import { AkismetSpamCheckPayload } from "coral-server/services/spam"; import { GQLCOMMENT_FLAG_REASON, @@ -20,6 +21,7 @@ export const spam: IntermediateModerationPhase = async ({ req, nudge, log, + now, }): Promise => { const integration = tenant.integrations.akismet; @@ -93,8 +95,9 @@ export const spam: IntermediateModerationPhase = async ({ try { log.trace("checking comment for spam"); - // Check the comment for spam. - const isSpam = await client.checkSpam({ + const payload: AkismetSpamCheckPayload = { + api_key: integration.key, + blog: integration.site, user_ip: userIP, // REQUIRED referrer, // REQUIRED user_agent: userAgent, // REQUIRED @@ -103,7 +106,11 @@ export const spam: IntermediateModerationPhase = async ({ comment_author: author.username || "", comment_type: "comment", is_test: false, - }); + comment_date_gmt: now.toISOString(), + }; + + // Check the comment for spam. + const isSpam = await client.checkSpam(payload); // NICK: make not any if (isSpam) { log.trace({ isSpam }, "comment contained spam"); diff --git a/server/src/core/server/services/spam/index.ts b/server/src/core/server/services/spam/index.ts index 557b18d6cd..9e4b710e3b 100644 --- a/server/src/core/server/services/spam/index.ts +++ b/server/src/core/server/services/spam/index.ts @@ -11,35 +11,74 @@ import { Request } from "coral-server/types/express"; export interface Parameters { apiKey: string; + blog: string; comment: Readonly; story: Readonly; author: Readonly; userIP: string | undefined; userAgent: string | undefined; referrer: string | undefined; + recheckReason?: string | undefined; } -const createBody = (params: Parameters) => { - const { comment, story, author, userIP, userAgent, referrer } = params; - const latestRevision = getLatestRevision(comment); - const username = author ? (author.username ? author.username : "") : ""; +export interface AkismetSpamCheckPayload { + api_key: string; + blog: string; + + user_ip: string; + user_agent: string; + referrer: string; + + permalink: string; + comment_type: string; + comment_author: string; + comment_content: string; + is_test: boolean; + comment_date_gmt: string; - return { - user_ip: userIP, - user_agent: userAgent, + recheck_reason?: string; +} + +const createBody = (params: Parameters): AkismetSpamCheckPayload => { + const { + comment, + story, + author, + userIP, + userAgent, referrer, + recheckReason, + apiKey, + blog, + } = params; + const latestRevision = getLatestRevision(comment); + + const body: AkismetSpamCheckPayload = { + api_key: apiKey, + blog, + + user_ip: userIP || "", + user_agent: userAgent || "", + referrer: referrer || "", permalink: story.url, comment_type: "comment", - comment_author: username, + comment_author: author?.username || "", comment_content: latestRevision ? latestRevision.body : "", - comment_date_gmt: latestRevision - ? latestRevision.createdAt.toISOString() - : "", is_test: false, + + comment_date_gmt: latestRevision + ? latestRevision.createdAt.toISOString() + : new Date().toISOString(), }; + + if (recheckReason) { + body.recheck_reason = recheckReason; + } + + return body; }; const submitSpam = async (params: Parameters) => { @@ -118,6 +157,7 @@ export const submitCommentAsNotSpam = async ( apiKey: tenant.integrations.akismet.key ? tenant.integrations.akismet.key : "", + blog: tenant.integrations.akismet.site || "", comment, story, author, @@ -161,11 +201,13 @@ export const submitCommentAsSpam = async ( apiKey: tenant.integrations.akismet.key ? tenant.integrations.akismet.key : "", + blog: tenant.integrations.akismet.site || "", comment, story, author, userIP, userAgent, referrer, + recheckReason: comment.revisions.length > 1 ? "edit" : undefined, }); }; From 22cebb9dc22741de90cf22bc83f4f59e5ff4fb0d Mon Sep 17 00:00:00 2001 From: nick-funk Date: Tue, 28 Nov 2023 16:27:26 -0700 Subject: [PATCH 02/66] upgrade akismet-api to v6 and use the new TS types --- server/package-lock.json | 500 ++++++++---------- server/package.json | 2 +- .../services/comments/pipeline/phases/spam.ts | 6 +- server/src/core/server/services/spam/index.ts | 36 +- server/src/types/akismet-api.d.ts | 33 -- 5 files changed, 233 insertions(+), 344 deletions(-) delete mode 100644 server/src/types/akismet-api.d.ts diff --git a/server/package-lock.json b/server/package-lock.json index 1f997418f3..b02ca27a94 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -24,7 +24,7 @@ "@types/url-regex-safe": "^1.0.0", "abort-controller": "^3.0.0", "address": "^1.2.2", - "akismet-api": "^5.0.0", + "akismet-api": "^6.0.0", "apollo-server-express": "^2.18.1", "apollo-server-plugin-base": "^0.10.1", "apollo-server-plugin-response-cache": "^0.5.5", @@ -10247,14 +10247,15 @@ "license": "MIT" }, "node_modules/akismet-api": { - "version": "5.0.0", - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/akismet-api/-/akismet-api-6.0.0.tgz", + "integrity": "sha512-IqPwdqKOpRXXJg/T2772BB1RoCFfB5kBX1Zeef98T/RkIIFuRqO1kPM4wAjgIdGtvP7YNQ8VYh9kTszpR0637g==", "dependencies": { "bluebird": "^3.1.1", - "superagent": "^5.1.1" + "superagent": "^8.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=14.0.0" } }, "node_modules/alphanum-sort": { @@ -13864,7 +13865,6 @@ }, "node_modules/call-bind": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1", @@ -14847,9 +14847,12 @@ "license": "MIT" }, "node_modules/component-emitter": { - "version": "1.2.1", - "dev": true, - "license": "MIT" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/component-type": { "version": "1.2.1", @@ -15209,8 +15212,9 @@ "license": "MIT" }, "node_modules/cookiejar": { - "version": "2.1.2", - "license": "MIT" + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" }, "node_modules/copy-concurrently": { "version": "1.0.5", @@ -17751,6 +17755,15 @@ "dev": true, "license": "ISC" }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/dicer": { "version": "0.3.0", "dependencies": { @@ -18736,14 +18749,6 @@ "node": ">=4.0" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object-inspect": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/eslint-plugin-jsx-a11y/node_modules/object.assign": { "version": "4.1.2", "dev": true, @@ -20351,8 +20356,9 @@ "license": "MIT" }, "node_modules/fast-safe-stringify": { - "version": "2.0.7", - "license": "MIT" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "node_modules/fast-shallow-equal": { "version": "1.0.0", @@ -20951,8 +20957,32 @@ } }, "node_modules/formidable": { - "version": "1.2.1", - "license": "MIT" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/formidable/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/forwarded": { "version": "0.1.2", @@ -22037,7 +22067,6 @@ }, "node_modules/get-intrinsic": { "version": "1.1.0", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1", @@ -22050,7 +22079,6 @@ }, "node_modules/get-intrinsic/node_modules/has-symbols": { "version": "1.0.1", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -24509,6 +24537,14 @@ "dev": true, "license": "MIT" }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "engines": { + "node": ">=8" + } + }, "node_modules/hide-powered-by": { "version": "1.1.0", "license": "MIT", @@ -33978,8 +34014,9 @@ } }, "node_modules/object-inspect": { - "version": "1.7.0", - "license": "MIT", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -41415,14 +41452,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexp.prototype.flags/node_modules/object-inspect": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regexpp": { "version": "3.1.0", "dev": true, @@ -42693,115 +42722,18 @@ "license": "MIT" }, "node_modules/side-channel": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/signal-exit": { "version": "3.0.2", "license": "ISC" @@ -44409,39 +44341,45 @@ } }, "node_modules/superagent": { - "version": "5.2.1", - "license": "MIT", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "dependencies": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", "methods": "^1.1.2", - "mime": "^2.4.4", - "qs": "^6.9.1", - "readable-stream": "^3.4.0", - "semver": "^6.3.0" + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" }, "engines": { - "node": ">= 7.0.0" + "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/superagent/node_modules/component-emitter": { - "version": "1.3.0", - "license": "MIT" - }, "node_modules/superagent/node_modules/debug": { - "version": "4.1.1", - "license": "MIT", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/superagent/node_modules/form-data": { - "version": "3.0.0", - "license": "MIT", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -44451,9 +44389,24 @@ "node": ">= 6" } }, + "node_modules/superagent/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/superagent/node_modules/qs": { - "version": "6.9.1", - "license": "BSD-3-Clause", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" }, @@ -44461,25 +44414,25 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "3.5.0", - "license": "MIT", + "node_modules/superagent/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/superagent/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/superagent/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/supports-color": { "version": "2.0.0", "dev": true, @@ -56846,10 +56799,12 @@ "requires": {} }, "akismet-api": { - "version": "5.0.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/akismet-api/-/akismet-api-6.0.0.tgz", + "integrity": "sha512-IqPwdqKOpRXXJg/T2772BB1RoCFfB5kBX1Zeef98T/RkIIFuRqO1kPM4wAjgIdGtvP7YNQ8VYh9kTszpR0637g==", "requires": { "bluebird": "^3.1.1", - "superagent": "^5.1.1" + "superagent": "^8.0.0" } }, "alphanum-sort": { @@ -59480,7 +59435,6 @@ }, "call-bind": { "version": "1.0.2", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -60200,8 +60154,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==" }, "component-type": { "version": "1.2.1" @@ -60440,7 +60395,9 @@ "version": "1.0.6" }, "cookiejar": { - "version": "2.1.2" + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" }, "copy-concurrently": { "version": "1.0.5", @@ -62199,6 +62156,15 @@ "version": "2.0.4", "dev": true }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "dicer": { "version": "0.3.0", "requires": { @@ -63073,10 +63039,6 @@ "object.assign": "^4.1.2" } }, - "object-inspect": { - "version": "1.9.0", - "dev": true - }, "object.assign": { "version": "4.1.2", "dev": true, @@ -63972,7 +63934,9 @@ "version": "2.0.6" }, "fast-safe-stringify": { - "version": "2.0.7" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "fast-shallow-equal": { "version": "1.0.0", @@ -64393,7 +64357,25 @@ "dev": true }, "formidable": { - "version": "1.2.1" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "requires": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "dependencies": { + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + } + } }, "forwarded": { "version": "0.1.2" @@ -65231,7 +65213,6 @@ }, "get-intrinsic": { "version": "1.1.0", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -65239,8 +65220,7 @@ }, "dependencies": { "has-symbols": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" } } }, @@ -67046,6 +67026,11 @@ "version": "1.1.0", "dev": true }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==" + }, "hide-powered-by": { "version": "1.1.0" }, @@ -73403,7 +73388,9 @@ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { - "version": "1.7.0" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.0.1", @@ -78518,10 +78505,6 @@ "requires": { "has-symbols": "^1.0.1" } - }, - "object-inspect": { - "version": "1.7.0", - "dev": true } } }, @@ -79413,65 +79396,13 @@ "dev": true }, "side-channel": { - "version": "1.0.2", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-keys": { - "version": "1.1.1", - "dev": true - } + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "signal-exit": { @@ -80595,51 +80526,68 @@ } }, "superagent": { - "version": "5.2.1", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "requires": { "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", "methods": "^1.1.2", - "mime": "^2.4.4", - "qs": "^6.9.1", - "readable-stream": "^3.4.0", - "semver": "^6.3.0" + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" }, "dependencies": { - "component-emitter": { - "version": "1.3.0" - }, "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "form-data": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, - "qs": { - "version": "6.9.1" + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } }, - "readable-stream": { - "version": "3.5.0", + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "side-channel": "^1.0.4" } }, "semver": { - "version": "6.3.0" + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } }, diff --git a/server/package.json b/server/package.json index 7ca894b53c..4de875ea17 100644 --- a/server/package.json +++ b/server/package.json @@ -67,7 +67,7 @@ "@types/url-regex-safe": "^1.0.0", "abort-controller": "^3.0.0", "address": "^1.2.2", - "akismet-api": "^5.0.0", + "akismet-api": "^6.0.0", "apollo-server-express": "^2.18.1", "apollo-server-plugin-base": "^0.10.1", "apollo-server-plugin-response-cache": "^0.5.5", diff --git a/server/src/core/server/services/comments/pipeline/phases/spam.ts b/server/src/core/server/services/comments/pipeline/phases/spam.ts index f7a71c4052..60679d06cb 100644 --- a/server/src/core/server/services/comments/pipeline/phases/spam.ts +++ b/server/src/core/server/services/comments/pipeline/phases/spam.ts @@ -1,4 +1,4 @@ -import { Client } from "akismet-api"; +import { AkismetClient } from "akismet-api"; import { SpamCommentError } from "coral-server/errors"; import { ACTION_TYPE } from "coral-server/models/action/comment"; @@ -57,7 +57,7 @@ export const spam: IntermediateModerationPhase = async ({ } // Create the Akismet client. - const client = new Client({ + const client = new AkismetClient({ key: integration.key, blog: integration.site, }); @@ -96,8 +96,6 @@ export const spam: IntermediateModerationPhase = async ({ log.trace("checking comment for spam"); const payload: AkismetSpamCheckPayload = { - api_key: integration.key, - blog: integration.site, user_ip: userIP, // REQUIRED referrer, // REQUIRED user_agent: userAgent, // REQUIRED diff --git a/server/src/core/server/services/spam/index.ts b/server/src/core/server/services/spam/index.ts index 9e4b710e3b..1d56d1eb66 100644 --- a/server/src/core/server/services/spam/index.ts +++ b/server/src/core/server/services/spam/index.ts @@ -9,6 +9,8 @@ import { Tenant } from "coral-server/models/tenant"; import { retrieveUser } from "coral-server/models/user"; import { Request } from "coral-server/types/express"; +import { Comment as AkismetComment } from "akismet-api"; + export interface Parameters { apiKey: string; blog: string; @@ -21,42 +23,16 @@ export interface Parameters { recheckReason?: string | undefined; } -export interface AkismetSpamCheckPayload { - api_key: string; - blog: string; - - user_ip: string; - user_agent: string; - referrer: string; - - permalink: string; - comment_type: string; - comment_author: string; - comment_content: string; - is_test: boolean; - comment_date_gmt: string; - +export type AkismetSpamCheckPayload = AkismetComment & { recheck_reason?: string; -} +}; const createBody = (params: Parameters): AkismetSpamCheckPayload => { - const { - comment, - story, - author, - userIP, - userAgent, - referrer, - recheckReason, - apiKey, - blog, - } = params; + const { comment, story, author, userIP, userAgent, referrer, recheckReason } = + params; const latestRevision = getLatestRevision(comment); const body: AkismetSpamCheckPayload = { - api_key: apiKey, - blog, - user_ip: userIP || "", user_agent: userAgent || "", referrer: referrer || "", diff --git a/server/src/types/akismet-api.d.ts b/server/src/types/akismet-api.d.ts deleted file mode 100644 index a6d6a44759..0000000000 --- a/server/src/types/akismet-api.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -declare module "akismet-api" { - export interface ClientOptions { - key: string; - blog: string; - } - - export interface CheckSpamOptions { - user_ip: string; - user_agent: string; - referrer: string; - permalink?: string; - comment_type?: string; - comment_author?: string; - comment_content?: string; - comment_author_url?: string; - comment_author_email?: string; - comment_date_gmt?: string; - comment_post_modified_gmt?: string; - user_role?: string; - is_test?: boolean; - } - - export class Client { - constructor(options: ClientOptions) - - /** - * checkSpam will check the given comment payload for spam. - * - * @param options used to provide the input for checking spam - */ - checkSpam(options: CheckSpamOptions): Promise - } -} \ No newline at end of file From 34f6d74672026e35c3112fdf0e68aa6d891b77bd Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 4 Dec 2023 09:08:43 -0500 Subject: [PATCH 03/66] initial eslint upgrades --- client/package-lock.json | 8098 ++++++++++-------- client/package.json | 18 +- client/src/core/build/createWebpackConfig.ts | 59 +- docs/package-lock.json | 2114 ++--- docs/package.json | 16 +- server/package-lock.json | 8098 ++++++++++-------- server/package.json | 18 +- server/src/core/build/createWebpackConfig.ts | 31 +- 8 files changed, 10358 insertions(+), 8094 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index f91890424f..eb4c180b98 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -203,9 +203,9 @@ "@types/webpack-dev-server": "^3.11.0", "@types/ws": "^7.2.3", "@types/xregexp": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^3.4.0", - "@typescript-eslint/eslint-plugin-tslint": "^3.4.0", - "@typescript-eslint/parser": "^3.4.0", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "address": "^1.2.2", "autoprefixer": "^9.8.6", "babel-core": "^7.0.0-bridge.0", @@ -232,14 +232,14 @@ "css-loader": "^3.4.2", "del": "^6.0.0", "doctoc": "^1.4.0", - "eslint": "^7.3.1", + "eslint": "^8.54.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest-dom": "^4.0.1", - "eslint-plugin-jsdoc": "^28.5.1", - "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-jsdoc": "^42.0.0", + "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "eventemitter2": "^6.4.3", "extract-loader": "^5.1.0", "fake-indexeddb": "^3.1.2", @@ -248,7 +248,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "^4.1.2", + "fork-ts-checker-webpack-plugin": "6.4.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", @@ -358,6 +358,15 @@ }, "../common/dist": {}, "../config/dist": {}, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/toolbox-cache-url": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@ampproject/toolbox-cache-url/-/toolbox-cache-url-2.9.0.tgz", @@ -2467,10 +2476,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.7", - "license": "MIT", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2484,6 +2494,11 @@ "regenerator-runtime": "^0.13.4" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/@babel/template": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", @@ -2836,6 +2851,196 @@ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", "license": "0BSD" }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz", + "integrity": "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==", + "dev": true, + "dependencies": { + "comment-parser": "1.3.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": "^14 || ^16 || ^17 || ^18 || ^19 || ^20" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/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 + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@fluent/bundle": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/@fluent/bundle/-/bundle-0.15.1.tgz", @@ -2981,11 +3186,6 @@ "react": "16.10.2 - 17" } }, - "node_modules/@giphy/react-components/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/@giphy/react-components/node_modules/intersection-observer": { "version": "0.11.0", "dev": true, @@ -5226,6 +5426,68 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, "node_modules/@iarna/toml": { "version": "2.2.5", "license": "ISC" @@ -7130,10 +7392,11 @@ ] }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.3", - "license": "MIT", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -7141,8 +7404,9 @@ } }, "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": { - "version": "2.0.3", - "license": "MIT", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { "node": ">= 8" } @@ -7156,10 +7420,11 @@ } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.4", - "license": "MIT", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -7708,14 +7973,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.0.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0" - } - }, "node_modules/@testing-library/dom/node_modules/chalk": { "version": "4.1.2", "dev": true, @@ -7811,14 +8068,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/aria-query": { - "version": "5.0.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0" - } - }, "node_modules/@testing-library/jest-dom/node_modules/css": { "version": "3.0.0", "dev": true, @@ -8336,11 +8585,6 @@ "@types/estree": "*" } }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/@types/estree": { "version": "0.0.50", "dev": true, @@ -9444,8 +9688,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.3.4", - "license": "MIT" + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" }, "node_modules/@types/serve-static": { "version": "1.13.2", @@ -9675,27 +9920,32 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "3.4.0", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^3.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -9704,34 +9954,68 @@ } }, "node_modules/@typescript-eslint/eslint-plugin-tslint": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz", + "integrity": "sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "3.4.0", - "lodash": "^4.17.15" + "@typescript-eslint/utils": "5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", "tslint": "^5.0.0 || ^6.0.0", "typescript": "*" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.2", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -9739,46 +10023,47 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "3.4.0", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "tslib": "^1.8.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 6" }, "peerDependencies": { - "eslint": "*" + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/parser": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.4.0", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -9786,161 +10071,540 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "3.4.0", + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ms": "2.1.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.0" }, "peerDependenciesMeta": { - "typescript": { + "supports-color": { "optional": true } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.1.1", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/glob": { - "version": "7.1.6", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, - "license": "ISC", "dependencies": { - "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" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.2", + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@virtuoso.dev/react-urx": { - "version": "0.2.13", + "node_modules/@typescript-eslint/type-utils/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { - "@virtuoso.dev/urx": "^0.2.13" + "tslib": "^1.8.1" }, "engines": { - "node": ">=10" + "node": ">= 6" }, "peerDependencies": { - "react": ">=16" + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/@virtuoso.dev/urx": { - "version": "0.2.13", + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "MIT" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 8" + } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "ISC" + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT" + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT" + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@virtuoso.dev/react-urx": { + "version": "0.2.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@virtuoso.dev/urx": "^0.2.13" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@virtuoso.dev/urx": { + "version": "0.2.13", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -10246,10 +10910,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, "node_modules/akismet-api": { "version": "5.0.0", "license": "MIT", @@ -10852,6 +11512,15 @@ "dev": true, "license": "MIT" }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/are-we-there-yet": { "version": "1.1.5", "license": "ISC", @@ -10880,15 +11549,12 @@ } }, "node_modules/aria-query": { - "version": "4.2.2", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "dequal": "^2.0.3" } }, "node_modules/arr-diff": { @@ -10937,6 +11603,18 @@ "node": ">=0.10.0" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-each": { "version": "1.0.1", "dev": true, @@ -10963,15 +11641,22 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.0.3", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-initial": { @@ -11079,6 +11764,75 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "dev": true, @@ -11163,23 +11917,16 @@ } }, "node_modules/ast-types-flow": { - "version": "0.0.7", - "dev": true, - "license": "ISC" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true }, "node_modules/ast-types/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "node_modules/astral-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -11234,10 +11981,28 @@ "node": ">= 0.10" } }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/atob": { "version": "2.1.2", "dev": true, @@ -11347,6 +12112,17 @@ "node": ">=6" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -11397,9 +12173,13 @@ } }, "node_modules/axobject-query": { - "version": "2.2.0", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, - "license": "Apache-2.0" + "dependencies": { + "dequal": "^2.0.3" + } }, "node_modules/babel-code-frame": { "version": "6.26.0", @@ -12003,11 +12783,6 @@ "node": ">=6" } }, - "node_modules/babel-plugin-module-resolver/node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/babel-plugin-module-resolver/node_modules/pkg-up": { "version": "3.1.0", "dev": true, @@ -13366,107 +14141,6 @@ "node": ">=10" } }, - "node_modules/bull/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bull/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bull/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/is-callable": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/is-regex": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/bull/node_modules/object.getownpropertydescriptors": { "version": "2.1.0", "license": "MIT", @@ -13867,12 +14541,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14830,11 +15505,12 @@ } }, "node_modules/comment-parser": { - "version": "0.7.5", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 12.0.0" } }, "node_modules/common-tags": { @@ -17051,9 +17727,10 @@ } }, "node_modules/damerau-levenshtein": { - "version": "1.0.6", - "dev": true, - "license": "BSD-2-Clause" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true }, "node_modules/dashdash": { "version": "1.14.1", @@ -17233,14 +17910,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-equal/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "license": "MIT", @@ -17371,15 +18040,33 @@ "dev": true, "license": "MIT" }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.1.2", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-property": { @@ -17709,6 +18396,15 @@ "version": "0.1.6", "license": "MIT" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/des.js": { "version": "1.0.1", "dev": true, @@ -18316,17 +19012,77 @@ } }, "node_modules/es-abstract": { - "version": "1.12.0", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "node_modules/es-module-lexer": { @@ -18334,16 +19090,42 @@ "dev": true, "license": "MIT" }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, "node_modules/es-to-primitive": { - "version": "1.1.1", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es5-ext": { @@ -18434,52 +19216,55 @@ } }, "node_modules/eslint": { - "version": "7.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.2.0", - "espree": "^7.1.0", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -18518,287 +19303,153 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "28.5.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "comment-parser": "^0.7.5", - "debug": "^4.1.1", - "jsdoctypeparser": "^7.0.0", - "lodash": "^4.17.15", - "regextras": "^0.7.1", - "semver": "^7.3.2", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-42.0.0.tgz", + "integrity": "sha512-qXYr45G8atPKowZbIOdmABukMzu9IMjAlj6j5Fe0iuUItznWSXUDiBj57ejXcbt8bkPrg83333nuz+cqGKFgcQ==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.37.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": ">=10" + "node": "^14 || ^16 || ^17 || ^18 || ^19" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/debug": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.3.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.4.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" + "ms": "2.1.2" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/array-includes": { - "version": "3.1.2", + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/axe-core": { - "version": "4.1.1", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/es-abstract": { - "version": "1.18.0-next.2", + "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "lru-cache": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/is-callable": { - "version": "1.2.2", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/is-regex": { - "version": "1.1.1", + "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/jsx-ast-utils": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.2", - "object.assign": "^4.1.2" + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { "node": ">=4.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object-inspect": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object.assign": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object.assign/node_modules/object-keys": { - "version": "1.1.1", + "node_modules/eslint-plugin-jsx-a11y/node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=4" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/string.prototype.trimend": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/string.prototype.trimstart": { - "version": "1.0.3", + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "*" } }, "node_modules/eslint-plugin-prettier": { @@ -18817,65 +19468,45 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.20.0", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.1", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.2.0", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/array-includes": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, "node_modules/eslint-plugin-react/node_modules/doctrine": { @@ -18889,158 +19520,51 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eslint-plugin-react/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/is-symbol": { - "version": "1.0.3", + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/eslint-plugin-react/node_modules/object.entries": { - "version": "1.1.2", + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" + "node": "*" } }, - "node_modules/eslint-plugin-react/node_modules/object.values": { - "version": "1.1.1", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-react/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "1.17.0", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { @@ -19055,37 +19579,24 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/acorn": { - "version": "7.3.1", + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -19103,6 +19614,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/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 + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.0", "dev": true, @@ -19143,51 +19660,94 @@ } }, "node_modules/eslint/node_modules/debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/espree": { - "version": "7.1.0", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "acorn": "^7.2.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.2.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, - "license": "MIT", "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -19205,29 +19765,31 @@ } }, "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.2.1", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/eslint/node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -19236,55 +19798,104 @@ "node": ">= 0.8.0" } }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "MIT", "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/resolve-from": { + "node_modules/eslint/node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.2", + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, "node_modules/eslint/node_modules/shebang-command": { @@ -19306,10 +19917,14 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.0", + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -19327,8 +19942,9 @@ }, "node_modules/eslint/node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -19337,11 +19953,15 @@ } }, "node_modules/eslint/node_modules/type-fest": { - "version": "0.8.1", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/which": { @@ -19359,13 +19979,13 @@ } }, "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -19375,9 +19995,9 @@ } }, "node_modules/espree/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -19385,14 +20005,6 @@ "node": ">=0.4.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -19406,9 +20018,10 @@ } }, "node_modules/esquery": { - "version": "1.3.1", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -19417,9 +20030,10 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.1.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -20323,6 +20937,11 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "node_modules/fast-diff": { "version": "1.2.0", "dev": true, @@ -20469,14 +21088,15 @@ } }, "node_modules/file-entry-cache": { - "version": "5.0.1", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/file-extension": { @@ -20764,27 +21384,29 @@ } }, "node_modules/flat-cache": { - "version": "2.0.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flat-cache/node_modules/glob": { - "version": "7.1.6", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -20795,15 +21417,46 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/flat-cache/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/flat-cache/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flat/node_modules/is-buffer": { @@ -20815,9 +21468,10 @@ } }, "node_modules/flatted": { - "version": "2.0.2", - "dev": true, - "license": "ISC" + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true }, "node_modules/flatten": { "version": "1.0.3", @@ -20865,6 +21519,14 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", "dev": true, @@ -20884,10 +21546,6 @@ "node": ">=0.10.0" } }, - "node_modules/foreach": { - "version": "2.0.5", - "license": "MIT" - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -20897,47 +21555,295 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "4.1.2", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", + "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", "dev": true, - "license": "MIT", "dependencies": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "engines": { - "node": ">=6.11.5", + "node": ">=10", "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "2.4.2", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" }, + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "5.5.0", + "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, - "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -21014,16 +21920,6 @@ "dev": true, "license": "MIT" }, - "node_modules/found-relay/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "node_modules/found/node_modules/farce": { "version": "0.4.5", "dev": true, @@ -21054,16 +21950,6 @@ "isarray": "0.0.1" } }, - "node_modules/found/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "node_modules/fragment-cache": { "version": "0.2.1", "dev": true, @@ -21143,6 +22029,12 @@ "node": ">= 0.10" } }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -21900,13 +22792,37 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gauge": { "version": "2.7.4", @@ -22044,24 +22960,14 @@ "license": "ISC" }, "node_modules/get-intrinsic": { - "version": "1.1.0", - "dev": true, - "license": "MIT", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22098,6 +23004,21 @@ "node": ">=4" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", @@ -23056,6 +23977,20 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "8.0.2", "dev": true, @@ -23314,6 +24249,17 @@ "node": ">= 6.13.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "9.6.0", "dev": true, @@ -23359,6 +24305,12 @@ "version": "4.2.8", "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/graphql": { "version": "14.6.0", "license": "MIT", @@ -24298,6 +25250,7 @@ }, "node_modules/has": { "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -24317,6 +25270,14 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "license": "MIT", @@ -24332,11 +25293,51 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-unicode": { @@ -24438,6 +25439,17 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "license": "MIT", @@ -25561,112 +26573,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internal-slot/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -25836,10 +26750,49 @@ "node": ">= 0.4" } }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "1.0.1", "dev": true, @@ -25851,6 +26804,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-buffer": { "version": "1.1.6", "license": "MIT" @@ -25867,10 +26835,14 @@ } }, "node_modules/is-callable": { - "version": "1.1.3", - "license": "MIT", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-ci": { @@ -25897,6 +26869,18 @@ "rgba-regex": "^1.0.0" } }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-data-descriptor": { "version": "0.1.4", "dev": true, @@ -25920,10 +26904,17 @@ } }, "node_modules/is-date-object": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-decimal": { @@ -25982,6 +26973,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-finite": { "version": "1.1.0", "dev": true, @@ -26008,6 +27011,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "devOptional": true, @@ -26043,6 +27061,15 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-nan": { "version": "1.3.0", "license": "MIT", @@ -26056,16 +27083,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-nan/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/is-negated-glob": { "version": "1.0.0", "dev": true, @@ -26075,9 +27092,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { "node": ">= 0.4" }, @@ -26096,6 +27113,20 @@ "node": ">=0.10.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "dev": true, @@ -26213,13 +27244,18 @@ "license": "MIT" }, "node_modules/is-regex": { - "version": "1.0.4", - "license": "MIT", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-regexp": { @@ -26263,6 +27299,26 @@ "dev": true, "license": "ISC" }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "1.1.0", "dev": true, @@ -26277,9 +27333,12 @@ "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, "node_modules/is-string": { - "version": "1.0.5", - "dev": true, - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -26299,10 +27358,17 @@ } }, "node_modules/is-symbol": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-there": { @@ -26310,6 +27376,20 @@ "dev": true, "license": "MIT" }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "license": "MIT" @@ -26364,6 +27444,39 @@ "node": ">=0.10.0" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-whitespace-character": { "version": "1.0.2", "dev": true, @@ -26577,6 +27690,19 @@ "version": "1.2.2", "license": "MIT" }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jest": { "version": "26.4.2", "dev": true, @@ -28722,11 +29848,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/jest-resolve/node_modules/read-pkg": { "version": "5.2.0", "dev": true, @@ -30255,6 +31376,15 @@ "node": ">=12.0.0" } }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsdoc/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", @@ -30301,17 +31431,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "node_modules/jsdoctypeparser": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "bin": { - "jsdoctypeparser": "bin/jsdoctypeparser" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -30647,12 +31766,15 @@ } }, "node_modules/jsx-ast-utils": { - "version": "2.2.3", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" @@ -30847,16 +31969,21 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "node_modules/language-subtag-registry": { - "version": "0.3.21", - "dev": true, - "license": "ODC-By-1.0" + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true }, "node_modules/language-tags": { - "version": "1.0.5", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, - "license": "MIT", "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/last-run": { @@ -32706,6 +33833,18 @@ "node": ">=6" } }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/memoize-one": { "version": "5.2.1", "license": "MIT" @@ -33438,6 +34577,12 @@ "dev": true, "license": "MIT" }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/ncp": { "version": "2.0.0", "license": "MIT", @@ -33986,8 +35131,9 @@ } }, "node_modules/object-inspect": { - "version": "1.7.0", - "license": "MIT", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -34001,8 +35147,9 @@ } }, "node_modules/object-keys": { - "version": "1.0.12", - "license": "MIT", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } @@ -34027,16 +35174,20 @@ } }, "node_modules/object.assign": { - "version": "4.1.0", - "license": "MIT", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.defaults": { @@ -34064,97 +35215,30 @@ "node": ">=0.10.0" } }, - "node_modules/object.fromentries": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries/node_modules/es-abstract": { - "version": "1.17.6", + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, - "license": "MIT", "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, - "node_modules/object.fromentries/node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -34162,45 +35246,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.fromentries/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, + "node_modules/object.getownpropertydescriptors": { + "version": "2.0.3", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/object.fromentries/node_modules/is-symbol": { - "version": "1.0.3", + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, - "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.0.3", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/object.map": { "version": "1.0.1", "dev": true, @@ -34247,6 +35316,23 @@ "node": ">=0.10.0" } }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/obuf": { "version": "1.1.2", "dev": true, @@ -34820,9 +35906,10 @@ } }, "node_modules/path-parse": { - "version": "1.0.5", - "dev": true, - "license": "MIT" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-root": { "version": "0.1.1", @@ -39084,14 +40171,6 @@ "version": "2.0.0", "license": "MIT" }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prom-client": { "version": "12.0.0", "license": "Apache-2.0", @@ -39140,107 +40219,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/promise.prototype.finally/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise.prototype.finally/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise.prototype.finally/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/is-callable": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/is-regex": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/prompts": { "version": "2.3.2", "dev": true, @@ -39254,12 +40232,14 @@ } }, "node_modules/prop-types": { - "version": "15.6.2", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, - "license": "MIT", "dependencies": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, "node_modules/proto3-json-serializer": { @@ -39706,6 +40686,25 @@ "version": "2.1.1", "license": "MIT" }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/railroad-diagrams": { "version": "1.0.0", "license": "CC0-1.0" @@ -40587,16 +41586,6 @@ "react-is": "^16.7.0" } }, - "node_modules/react-redux/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "node_modules/react-relay": { "version": "10.0.1", "resolved": "git+ssh://git@github.com/coralproject/patched.git#507b0047b53f47e258528853054c263e77a5b392", @@ -40676,12 +41665,6 @@ "react-dom": "^16.0.0 || ^17.0.0" } }, - "node_modules/react-shadow/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "node_modules/react-shadow/node_modules/react-use": { "version": "15.3.8", "resolved": "https://registry.npmjs.org/react-use/-/react-use-15.3.8.tgz", @@ -40887,11 +41870,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/react-use/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/react-use/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -41269,6 +42247,26 @@ "node": ">=4.0.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.0", "dev": true, @@ -41300,121 +42298,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract": { - "version": "1.17.4", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-callable": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-regex": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -41423,33 +42313,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexp.prototype.flags/node_modules/object-inspect": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regextras": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.14" - } - }, "node_modules/registry-auth-token": { "version": "4.1.1", "dev": true, @@ -42291,8 +43154,26 @@ } }, "node_modules/run-parallel": { - "version": "1.1.9", - "license": "MIT" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } }, "node_modules/run-queue": { "version": "1.0.3", @@ -42313,6 +43194,28 @@ "npm": ">=2.0.0" } }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/safe-buffer": { "version": "5.1.1", "license": "MIT" @@ -42330,6 +43233,19 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", @@ -42598,6 +43514,33 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-harmonic-interval": { "version": "1.0.1", "dev": true, @@ -42701,115 +43644,18 @@ "license": "MIT" }, "node_modules/side-channel": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/signal-exit": { "version": "3.0.2", "license": "ISC" @@ -43679,125 +44525,20 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -43816,125 +44557,14 @@ "node": ">= 0.4" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimend/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimend/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/is-callable": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/is-regex": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimleft": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -43943,150 +44573,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimleft/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimright": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimright/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string.prototype.trimstart": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimstart/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimstart/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/is-callable": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/is-regex": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -44527,6 +45034,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sver-compat": { "version": "1.5.0", "dev": true, @@ -44634,17 +45153,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/svgo/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/svgo/node_modules/domutils": { "version": "1.7.0", "dev": true, @@ -44654,104 +45162,6 @@ "domelementtype": "1" } }, - "node_modules/svgo/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/svgo/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svgo/node_modules/mdn-data": { "version": "2.0.4", "dev": true, @@ -44765,23 +45175,6 @@ "boolbase": "~1.0.0" } }, - "node_modules/svgo/node_modules/object.values": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svgo/node_modules/source-map": { "version": "0.6.1", "dev": true, @@ -44896,70 +45289,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/table": { - "version": "5.4.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", @@ -46373,20 +46702,6 @@ "node": ">=0.6.x" } }, - "node_modules/tsutils": { - "version": "3.17.1", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/tty-browserify": { "version": "0.0.0", "dev": true, @@ -46448,6 +46763,67 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-css-modules": { "version": "0.6.4", "dev": true, @@ -46854,6 +47230,20 @@ "node": ">=0.8.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/unc-path-regex": { "version": "0.1.2", "dev": true, @@ -49045,11 +49435,91 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "dev": true, "license": "ISC" }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.3", "license": "ISC", @@ -49133,14 +49603,6 @@ "node": ">= 6" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "license": "MIT" @@ -49215,17 +49677,6 @@ "version": "1.0.2", "license": "ISC" }, - "node_modules/write": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/write-file-atomic": { "version": "3.0.3", "dev": true, @@ -49520,6 +49971,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/toolbox-cache-url": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@ampproject/toolbox-cache-url/-/toolbox-cache-url-2.9.0.tgz", @@ -51092,9 +51549,18 @@ } }, "@babel/runtime": { - "version": "7.17.7", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } } }, "@babel/runtime-corejs3": { @@ -51364,6 +51830,133 @@ } } }, + "@es-joy/jsdoccomment": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz", + "integrity": "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==", + "dev": true, + "requires": { + "comment-parser": "1.3.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "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 + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "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" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "dev": true + }, "@fluent/bundle": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/@fluent/bundle/-/bundle-0.15.1.tgz", @@ -51472,10 +52065,6 @@ "throttle-debounce": "^3.0.1" }, "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, "intersection-observer": { "version": "0.11.0", "dev": true @@ -53233,6 +53822,49 @@ "@hapi/hoek": "^9.0.0" } }, + "@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, "@iarna/toml": { "version": "2.2.5" }, @@ -54498,14 +55130,18 @@ "optional": true }, "@nodelib/fs.scandir": { - "version": "2.1.3", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "dependencies": { "@nodelib/fs.stat": { - "version": "2.0.3" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" } } }, @@ -54514,9 +55150,11 @@ "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.4", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -54897,10 +55535,6 @@ "color-convert": "^2.0.1" } }, - "aria-query": { - "version": "5.0.0", - "dev": true - }, "chalk": { "version": "4.1.2", "dev": true, @@ -54963,10 +55597,6 @@ "redent": "^3.0.0" }, "dependencies": { - "aria-query": { - "version": "5.0.0", - "dev": true - }, "css": { "version": "3.0.0", "dev": true, @@ -55393,10 +56023,6 @@ "@types/estree": "*" } }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "dev": true - }, "@types/estree": { "version": "0.0.50", "dev": true @@ -56264,7 +56890,9 @@ "dev": true }, "@types/semver": { - "version": "7.3.4" + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" }, "@types/serve-static": { "version": "1.13.2", @@ -56458,96 +57086,388 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.4.0", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" } }, "semver": { - "version": "7.3.2", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "@typescript-eslint/eslint-plugin-tslint": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz", + "integrity": "sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.4.0", - "lodash": "^4.17.15" + "@typescript-eslint/utils": "5.62.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "3.4.0", + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" } }, - "@typescript-eslint/parser": { - "version": "3.4.0", + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.4.0", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } } }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, "@typescript-eslint/typescript-estree": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "glob": { - "version": "7.1.6", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "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" + "path-type": "^4.0.0" } }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "semver": { - "version": "7.3.2", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "@virtuoso.dev/react-urx": { "version": "0.2.13", "dev": true, @@ -56837,11 +57757,6 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" - }, - "dependencies": { - "fast-deep-equal": { - "version": "3.1.3" - } } }, "ajv-errors": { @@ -57261,6 +58176,12 @@ "version": "1.0.0", "dev": true }, + "are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true + }, "are-we-there-yet": { "version": "1.1.5", "requires": { @@ -57282,11 +58203,12 @@ "dev": true }, "aria-query": { - "version": "4.2.2", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "dequal": "^2.0.3" } }, "arr-diff": { @@ -57315,6 +58237,15 @@ "version": "3.1.0", "dev": true }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, "array-each": { "version": "1.0.1", "dev": true @@ -57331,11 +58262,16 @@ "version": "1.1.1" }, "array-includes": { - "version": "3.0.3", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" } }, "array-initial": { @@ -57407,6 +58343,57 @@ "version": "0.3.2", "dev": true }, + "array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "1.0.1", "dev": true @@ -57481,11 +58468,9 @@ } }, "ast-types-flow": { - "version": "0.0.7", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, "async": { @@ -57532,9 +58517,24 @@ "async-done": "^1.2.2" } }, + "asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, "asynckit": { "version": "0.4.0" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "dev": true @@ -57603,6 +58603,11 @@ } } }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -57642,8 +58647,13 @@ } }, "axobject-query": { - "version": "2.2.0", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } }, "babel-code-frame": { "version": "6.26.0", @@ -58092,10 +59102,6 @@ "version": "2.2.0", "dev": true }, - "path-parse": { - "version": "1.0.6", - "dev": true - }, "pkg-up": { "version": "3.1.0", "dev": true, @@ -59155,59 +60161,6 @@ "uuid": "^8.3.0" }, "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.1" - }, - "is-regex": { - "version": "1.1.1", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - }, "object.getownpropertydescriptors": { "version": "2.1.0", "requires": { @@ -59488,11 +60441,13 @@ "dev": true }, "call-bind": { - "version": "1.0.2", - "dev": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "call-me-maybe": { @@ -60197,7 +61152,9 @@ } }, "comment-parser": { - "version": "0.7.5", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true }, "common-tags": { @@ -61740,7 +62697,9 @@ } }, "damerau-levenshtein": { - "version": "1.0.6", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, "dashdash": { @@ -61872,12 +62831,6 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } } }, "deep-extend": { @@ -61970,11 +62923,24 @@ "version": "1.1.3", "dev": true }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-properties": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -62179,6 +63145,12 @@ "deprecated-decorator": { "version": "0.1.6" }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, "des.js": { "version": "1.0.1", "dev": true, @@ -62637,25 +63609,104 @@ } }, "es-abstract": { - "version": "1.12.0", - "requires": { - "es-to-primitive": "^1.1.1", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + } + }, + "es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "requires": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "es-module-lexer": { "version": "0.9.3", "dev": true }, + "es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, "es-to-primitive": { - "version": "1.1.1", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-symbol": "^1.0.2" } }, "es5-ext": { @@ -62722,49 +63773,55 @@ } }, "eslint": { - "version": "7.3.1", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.2.0", - "espree": "^7.1.0", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { - "acorn": { - "version": "7.3.1", + "ansi-regex": { + "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": { @@ -62775,6 +63832,12 @@ "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.0", "dev": true, @@ -62800,37 +63863,62 @@ } }, "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "eslint-visitor-keys": { - "version": "1.3.0", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "espree": { - "version": "7.1.0", + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { - "acorn": "^7.2.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.2.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "glob-parent": { - "version": "5.1.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { - "version": "12.4.0", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -62838,51 +63926,94 @@ "dev": true }, "ignore": { - "version": "4.0.6", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, - "import-fresh": { - "version": "3.2.1", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "argparse": "^2.0.1" } }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "optionator": { - "version": "0.9.1", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-key": { "version": "3.1.1", "dev": true }, "prelude-ls": { "version": "1.2.1", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "dev": true - }, - "semver": { - "version": "7.3.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "shebang-command": { @@ -62896,9 +64027,14 @@ "version": "3.0.0", "dev": true }, - "strip-json-comments": { - "version": "3.1.0", - "dev": true + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } }, "supports-color": { "version": "7.1.0", @@ -62909,13 +64045,17 @@ }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" } }, "type-fest": { - "version": "0.8.1", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "which": { @@ -62944,29 +64084,54 @@ } }, "eslint-plugin-jsdoc": { - "version": "28.5.1", - "dev": true, - "requires": { - "comment-parser": "^0.7.5", - "debug": "^4.1.1", - "jsdoctypeparser": "^7.0.0", - "lodash": "^4.17.15", - "regextras": "^0.7.1", - "semver": "^7.3.2", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-42.0.0.tgz", + "integrity": "sha512-qXYr45G8atPKowZbIOdmABukMzu9IMjAlj6j5Fe0iuUItznWSXUDiBj57ejXcbt8bkPrg83333nuz+cqGKFgcQ==", + "dev": true, + "requires": { + "@es-joy/jsdoccomment": "~0.37.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "dependencies": { "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "semver": { - "version": "7.3.2", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "spdx-expression-parse": { "version": "3.0.1", "dev": true, @@ -62974,151 +64139,58 @@ "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "dev": true, - "requires": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "dependencies": { - "array-includes": { - "version": "3.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - } - }, "axe-core": { - "version": "4.1.1", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "emoji-regex": { - "version": "9.2.0", - "dev": true - }, - "es-abstract": { - "version": "1.18.0-next.2", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.2", - "dev": true - }, - "is-regex": { - "version": "1.1.1", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "jsx-ast-utils": { - "version": "3.2.0", - "dev": true, - "requires": { - "array-includes": "^3.1.2", - "object.assign": "^4.1.2" - } - }, - "object-inspect": { - "version": "1.9.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "object.assign": { - "version": "4.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "string.prototype.trimend": { - "version": "1.0.3", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "brace-expansion": "^1.1.7" } } } @@ -63131,38 +64203,29 @@ } }, "eslint-plugin-react": { - "version": "7.20.0", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "requires": { - "array-includes": "^3.1.1", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "dependencies": { - "array-includes": { - "version": "3.1.1", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "doctrine": { "version": "2.1.0", "dev": true, @@ -63170,103 +64233,44 @@ "esutils": "^2.0.2" } }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object.entries": { - "version": "1.1.2", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" + "brace-expansion": "^1.1.7" } }, - "object.values": { - "version": "1.1.1", + "resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, - "path-parse": { - "version": "1.0.6", + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "resolve": { - "version": "1.17.0", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } } } }, "eslint-plugin-react-hooks": { - "version": "4.2.0", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, "requires": {} }, @@ -63278,36 +64282,25 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "2.1.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, "eslint-visitor-keys": { - "version": "1.1.0", - "dev": true + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" }, "espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" } } }, @@ -63317,14 +64310,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.3.1", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.1.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -63955,6 +64952,11 @@ } } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "fast-diff": { "version": "1.2.0", "dev": true @@ -64075,10 +65077,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-extension": { @@ -64278,28 +65282,58 @@ } }, "flat-cache": { - "version": "2.0.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "dependencies": { "glob": { - "version": "7.1.6", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "rimraf": { - "version": "2.6.3", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -64308,7 +65342,9 @@ } }, "flatted": { - "version": "2.0.2", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "flatten": { @@ -64340,6 +65376,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "dev": true @@ -64351,42 +65395,207 @@ "for-in": "^1.0.1" } }, - "foreach": { - "version": "2.0.5" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "fork-ts-checker-webpack-plugin": { - "version": "4.1.2", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", + "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", "dev": true, "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.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" + } + }, "chalk": { - "version": "2.4.2", + "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "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" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } }, "supports-color": { - "version": "5.5.0", + "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": "^3.0.0" + "has-flag": "^4.0.0" } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -64453,15 +65662,6 @@ "requires": { "isarray": "0.0.1" } - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } } } }, @@ -64479,15 +65679,6 @@ "is-promise": { "version": "4.0.0", "dev": true - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } } } }, @@ -64540,6 +65731,12 @@ "through2": "^2.0.3" } }, + "fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, "fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -65137,11 +66334,25 @@ } }, "function-bind": { - "version": "1.1.1" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "dev": true + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gauge": { "version": "2.7.4", @@ -65242,18 +66453,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.0", - "dev": true, + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "dev": true - } + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-own-enumerable-property-symbols": { @@ -65271,6 +66478,15 @@ "version": "6.0.0", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", @@ -66016,6 +67232,14 @@ "version": "11.7.0", "dev": true }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, "globby": { "version": "8.0.2", "dev": true, @@ -66216,6 +67440,14 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "9.6.0", "dev": true, @@ -66253,6 +67485,12 @@ "graceful-fs": { "version": "4.2.8" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "graphql": { "version": "14.6.0", "requires": { @@ -66910,6 +68148,7 @@ }, "has": { "version": "1.0.3", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -66921,6 +68160,11 @@ "ansi-regex": "^2.0.0" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, "has-flag": { "version": "3.0.0" }, @@ -66928,8 +68172,31 @@ "version": "2.0.0", "dev": true }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, "has-symbols": { - "version": "1.0.0" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } }, "has-unicode": { "version": "2.0.1" @@ -66996,6 +68263,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0" }, @@ -67749,66 +69024,13 @@ } }, "internal-slot": { - "version": "1.0.2", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-keys": { - "version": "1.1.1", - "dev": true - } + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" } }, "internmap": { @@ -67924,9 +69146,36 @@ "version": "1.0.4", "dev": true }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1" }, + "is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "1.0.1", "dev": true, @@ -67934,6 +69183,15 @@ "binary-extensions": "^1.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6" }, @@ -67945,7 +69203,9 @@ } }, "is-callable": { - "version": "1.1.3" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-ci": { "version": "2.0.0", @@ -67966,6 +69226,15 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "dev": true, @@ -67983,7 +69252,12 @@ } }, "is-date-object": { - "version": "1.0.1" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-decimal": { "version": "1.0.2", @@ -68018,6 +69292,15 @@ "is-extglob": { "version": "2.1.1" }, + "is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-finite": { "version": "1.1.0", "dev": true @@ -68029,6 +69312,15 @@ "version": "2.1.0", "dev": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "devOptional": true, @@ -68060,18 +69352,16 @@ } } }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, "is-nan": { "version": "1.3.0", "requires": { "define-properties": "^1.1.3" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - } } }, "is-negated-glob": { @@ -68079,8 +69369,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.1", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-number": { "version": "3.0.0", @@ -68098,6 +69389,14 @@ } } }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "1.0.1", "dev": true @@ -68167,9 +69466,12 @@ "dev": true }, "is-regex": { - "version": "1.0.4", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-regexp": { @@ -68198,6 +69500,20 @@ "version": "1.1.0", "dev": true }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "1.1.0", "dev": true @@ -68208,8 +69524,12 @@ "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, "is-string": { - "version": "1.0.5", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-svg": { "version": "3.0.0", @@ -68219,12 +69539,25 @@ } }, "is-symbol": { - "version": "1.0.1" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } }, "is-there": { "version": "4.5.0", "dev": true }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-typedarray": { "version": "1.0.0" }, @@ -68267,6 +69600,30 @@ "version": "1.0.0", "dev": true }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "is-whitespace-character": { "version": "1.0.2", "dev": true @@ -68414,6 +69771,19 @@ "iterall": { "version": "1.2.2" }, + "iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "jest": { "version": "26.4.2", "dev": true, @@ -69921,10 +71291,6 @@ "version": "4.0.0", "dev": true }, - "path-parse": { - "version": "1.0.6", - "dev": true - }, "read-pkg": { "version": "5.2.0", "dev": true, @@ -70838,8 +72204,10 @@ } } }, - "jsdoctypeparser": { - "version": "7.0.0", + "jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true }, "jsdom": { @@ -71078,11 +72446,15 @@ } }, "jsx-ast-utils": { - "version": "2.2.3", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" } }, "juice": { @@ -71246,14 +72618,18 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "language-subtag-registry": { - "version": "0.3.21", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true }, "language-tags": { - "version": "1.0.5", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "requires": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" } }, "last-run": { @@ -72534,6 +73910,15 @@ } } }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.4" + } + }, "memoize-one": { "version": "5.2.1" }, @@ -73043,6 +74428,12 @@ "version": "1.4.0", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "ncp": { "version": "2.0.0", "optional": true @@ -73415,14 +74806,18 @@ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { - "version": "1.7.0" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.0.1", "dev": true }, "object-keys": { - "version": "1.0.12" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-path": { "version": "0.11.8", @@ -73437,12 +74832,14 @@ } }, "object.assign": { - "version": "4.1.0", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" } }, "object.defaults": { @@ -73464,77 +74861,26 @@ } } }, + "object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "object.fromentries": { - "version": "2.0.2", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.getownpropertydescriptors": { @@ -73544,6 +74890,16 @@ "es-abstract": "^1.5.1" } }, + "object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "requires": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "object.map": { "version": "1.0.1", "dev": true, @@ -73576,6 +74932,17 @@ } } }, + "object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "obuf": { "version": "1.1.2", "dev": true @@ -73973,7 +75340,9 @@ "version": "2.0.1" }, "path-parse": { - "version": "1.0.5", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-root": { @@ -76885,10 +78254,6 @@ "process-nextick-args": { "version": "2.0.0" }, - "progress": { - "version": "2.0.3", - "dev": true - }, "prom-client": { "version": "12.0.0", "requires": { @@ -76918,61 +78283,6 @@ "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.0", "function-bind": "^1.1.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.1" - }, - "is-regex": { - "version": "1.1.1", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - } } }, "prompts": { @@ -76984,11 +78294,14 @@ } }, "prop-types": { - "version": "15.6.2", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, "proto3-json-serializer": { @@ -77314,6 +78627,11 @@ "querystringify": { "version": "2.1.1" }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, "railroad-diagrams": { "version": "1.0.0" }, @@ -77913,15 +79231,6 @@ "requires": { "react-is": "^16.7.0" } - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } } } }, @@ -77982,12 +79291,6 @@ "react-use": "^15.3.3" }, "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "react-use": { "version": "15.3.8", "resolved": "https://registry.npmjs.org/react-use/-/react-use-15.3.8.tgz", @@ -78158,10 +79461,6 @@ "tslib": "^2.1.0" }, "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -78439,6 +79738,20 @@ "referrer-policy": { "version": "1.2.0" }, + "reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, "regenerate": { "version": "1.4.0", "dev": true @@ -78463,88 +79776,15 @@ } }, "regexp.prototype.flags": { - "version": "1.3.0", - "dev": true, + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.4", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-inspect": { - "version": "1.7.0", - "dev": true - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, - "regexpp": { - "version": "3.1.0", - "dev": true - }, - "regextras": { - "version": "0.7.1", - "dev": true - }, "registry-auth-token": { "version": "4.1.1", "dev": true, @@ -79127,7 +80367,12 @@ } }, "run-parallel": { - "version": "1.1.9" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } }, "run-queue": { "version": "1.0.3", @@ -79143,6 +80388,24 @@ "tslib": "^1.9.0" } }, + "safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "safe-buffer": { "version": "5.1.1" }, @@ -79157,6 +80420,16 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safe-stable-stringify": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", @@ -79351,6 +80624,27 @@ "set-blocking": { "version": "2.0.0" }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "set-harmonic-interval": { "version": "1.0.1", "dev": true @@ -79425,65 +80719,13 @@ "dev": true }, "side-channel": { - "version": "1.0.2", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-keys": { - "version": "1.1.1", - "dev": true - } + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "signal-exit": { @@ -80149,78 +81391,20 @@ } }, "string.prototype.matchall": { - "version": "4.0.2", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" } }, "string.prototype.padend": { @@ -80232,162 +81416,34 @@ "function-bind": "^1.0.2" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.0" - }, - "is-regex": { - "version": "1.1.0", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "dev": true, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "dev": true, + "string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.0" - }, - "is-regex": { - "version": "1.1.0", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "stringify-object": { @@ -80680,6 +81736,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "sver-compat": { "version": "1.5.0", "dev": true, @@ -80759,13 +81821,6 @@ } } }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "domutils": { "version": "1.7.0", "dev": true, @@ -80774,60 +81829,6 @@ "domelementtype": "1" } }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "mdn-data": { "version": "2.0.4", "dev": true @@ -80839,16 +81840,6 @@ "boolbase": "~1.0.0" } }, - "object.values": { - "version": "1.1.1", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, "source-map": { "version": "0.6.1", "dev": true @@ -80907,51 +81898,6 @@ } } }, - "table": { - "version": "5.4.6", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", @@ -81900,13 +82846,6 @@ "tsscmp": { "version": "1.0.6" }, - "tsutils": { - "version": "3.17.1", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "tty-browserify": { "version": "0.0.0", "dev": true @@ -81945,6 +82884,49 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typed-css-modules": { "version": "0.6.4", "dev": true, @@ -82212,6 +83194,17 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==" }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, "unc-path-regex": { "version": "0.1.2", "dev": true @@ -83764,10 +84757,74 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, "which-module": { "version": "2.0.0", "dev": true }, + "which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "wide-align": { "version": "1.1.3", "requires": { @@ -83836,10 +84893,6 @@ } } }, - "word-wrap": { - "version": "1.2.3", - "dev": true - }, "wordwrap": { "version": "1.0.0" }, @@ -83895,13 +84948,6 @@ "wrappy": { "version": "1.0.2" }, - "write": { - "version": "1.0.3", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "dev": true, diff --git a/client/package.json b/client/package.json index 29fbbea7a6..a50f8a448c 100644 --- a/client/package.json +++ b/client/package.json @@ -252,9 +252,9 @@ "@types/webpack-dev-server": "^3.11.0", "@types/ws": "^7.2.3", "@types/xregexp": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^3.4.0", - "@typescript-eslint/eslint-plugin-tslint": "^3.4.0", - "@typescript-eslint/parser": "^3.4.0", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "address": "^1.2.2", "autoprefixer": "^9.8.6", "babel-core": "^7.0.0-bridge.0", @@ -281,14 +281,14 @@ "css-loader": "^3.4.2", "del": "^6.0.0", "doctoc": "^1.4.0", - "eslint": "^7.3.1", + "eslint": "^8.54.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest-dom": "^4.0.1", - "eslint-plugin-jsdoc": "^28.5.1", - "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-jsdoc": "^42.0.0", + "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "eventemitter2": "^6.4.3", "extract-loader": "^5.1.0", "fake-indexeddb": "^3.1.2", @@ -297,7 +297,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "^4.1.2", + "fork-ts-checker-webpack-plugin": "6.4.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", diff --git a/client/src/core/build/createWebpackConfig.ts b/client/src/core/build/createWebpackConfig.ts index a0b2fc30f2..05184074c2 100644 --- a/client/src/core/build/createWebpackConfig.ts +++ b/client/src/core/build/createWebpackConfig.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-globals */ -import OptimizeCssnanoPlugin from "@intervolga/optimize-cssnano-plugin"; +// import OptimizeCssnanoPlugin from "@intervolga/optimize-cssnano-plugin"; import bunyan from "bunyan"; import CaseSensitivePathsPlugin from "case-sensitive-paths-webpack-plugin"; import CompressionPlugin from "compression-webpack-plugin"; @@ -11,7 +11,11 @@ import path from "path"; import WatchMissingNodeModulesPlugin from "react-dev-utils/WatchMissingNodeModulesPlugin"; import TerserPlugin from "terser-webpack-plugin"; import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin"; -import webpack, { Configuration, Plugin } from "webpack"; +import webpack, { + Configuration, + DevtoolModuleFilenameTemplateInfo, + Plugin, +} from "webpack"; import WebpackAssetsManifest from "webpack-assets-manifest"; import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer"; @@ -24,7 +28,6 @@ import paths from "./paths"; /** * filterPlugins will filter out null values from the array of plugins, allowing * easy embedded ternaries. - * * @param plugins array of plugins and null values */ const filterPlugins = (plugins: Array): Plugin[] => @@ -91,12 +94,12 @@ export default function createWebpackConfig( /** * ifWatch will only include the nodes if we're in watch mode. */ - const ifWatch = watch ? (...nodes: any[]) => nodes : () => []; + const ifWatch = watch ? (...nodes: Array) => nodes : () => []; /** * ifBuild will only include the nodes if we're in build mode. */ - const ifBuild = !watch ? (...nodes: any[]) => nodes : () => []; + const ifBuild = !watch ? (...nodes: Array) => nodes : () => []; const localesOptions = { pathToLocales: paths.appLocales, @@ -131,20 +134,20 @@ export default function createWebpackConfig( insert: insertLinkTag, }), ...ifBuild( - isProduction && - new OptimizeCssnanoPlugin({ - sourceMap: !disableSourcemaps, - cssnanoOptions: { - preset: [ - "default", - { - discardComments: { - removeAll: true, - }, - }, - ], - }, - }), + // isProduction && + // new OptimizeCssnanoPlugin({ + // sourceMap: !disableSourcemaps, + // cssnanoOptions: { + // preset: [ + // "default", + // { + // discardComments: { + // removeAll: true, + // }, + // }, + // ], + // }, + // }), // Pre-compress all the assets as they will be served as is. new CompressionPlugin({}) ), @@ -247,7 +250,9 @@ export default function createWebpackConfig( // We inferred the "public path" (such as / or /my-project) from homepage. publicPath, // Point sourcemap entries to original disk location (format as URL on Windows) - devtoolModuleFilenameTemplate: (info: any) => + devtoolModuleFilenameTemplate: ( + info: DevtoolModuleFilenameTemplateInfo + ) => path .relative(paths.appSrc, info.absoluteResourcePath) .replace(/\\/g, "/"), @@ -577,13 +582,17 @@ export default function createWebpackConfig( ...ifWatch( // We run eslint in a separate process to have a quicker build. new ForkTsCheckerWebpackPlugin({ - eslint: true, - typescript: require.resolve("typescript"), + eslint: { enabled: true, files: "src/core/client/**/*.{js,ts,tsx}" }, + typescript: { + typescriptPath: require.resolve("typescript"), + configFile: paths.appTsconfig, + diagnosticOptions: { syntactic: true }, + }, async: true, + // diagnosticOptions: { syntactic: true }, // TODO: (cvle) For some reason if incremental build is turned on it does not find lint errors during initial build. - useTypescriptIncrementalApi: false, - checkSyntacticErrors: true, - tsconfig: paths.appTsconfig, + // useTypescriptIncrementalApi: false, + // checkSyntacticErrors: true, }) ), // Makes some environment variables available to the JS code, for example: diff --git a/docs/package-lock.json b/docs/package-lock.json index bf7ba44999..7b41651ab0 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -14,14 +14,14 @@ "@edno/docusaurus2-graphql-doc-generator": "^1.2.2", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", - "eslint": "^7.3.1", + "eslint": "^8.54.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest-dom": "^4.0.1", - "eslint-plugin-jsdoc": "^28.5.1", - "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-jsdoc": "^42.0.0", + "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", "prism-react-renderer": "^1.2.1", "react": "^17.0.1", @@ -30,9 +30,9 @@ }, "devDependencies": { "@docusaurus/types": "^2.0.0-beta.1", - "@typescript-eslint/eslint-plugin": "^3.4.0", - "@typescript-eslint/eslint-plugin-tslint": "^3.4.0", - "@typescript-eslint/parser": "^3.4.0" + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -1820,9 +1820,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", - "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2506,29 +2506,72 @@ "slugify": "^1.5.3" } }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz", + "integrity": "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==", + "dependencies": { + "comment-parser": "1.3.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": "^14 || ^16 || ^17 || ^18 || ^19 || ^20" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dependencies": { "type-fest": "^0.20.2" }, @@ -2539,12 +2582,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 4" + "node": "*" } }, "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { @@ -2558,6 +2615,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@graphql-inspector/core": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/@graphql-inspector/core/-/core-2.6.1.tgz", @@ -2857,22 +2922,45 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" }, "node_modules/@mdx-js/mdx": { "version": "1.6.22", @@ -3000,9 +3088,9 @@ } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3672,12 +3760,6 @@ "@types/estree": "*" } }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, "node_modules/@types/estree": { "version": "0.0.47", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", @@ -3711,9 +3793,9 @@ "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==" }, "node_modules/@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/mdast": { "version": "3.0.3", @@ -3756,6 +3838,12 @@ "@types/node": "*" } }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, "node_modules/@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -3770,28 +3858,32 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", - "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "3.10.1", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^3.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -3800,67 +3892,86 @@ } }, "node_modules/@typescript-eslint/eslint-plugin-tslint": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-3.10.1.tgz", - "integrity": "sha512-DD2sr8Qkoi0TUYlbxLGMivTvMz3i5s8qt7n3/ptWSO3fSQlnf43OeM6tQCujC1MWEKoOwDnyCuMehWwNm3Xi0w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz", + "integrity": "sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "3.10.1", - "lodash": "^4.17.15" + "@typescript-eslint/utils": "5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", "tslint": "^5.0.0 || ^6.0.0", "typescript": "*" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/parser": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", - "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "*" }, "peerDependenciesMeta": { "typescript": { @@ -3869,12 +3980,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3882,22 +3993,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", @@ -3909,22 +4019,66 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", @@ -4090,9 +4244,9 @@ } }, "node_modules/acorn": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.0.tgz", - "integrity": "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -4320,6 +4474,14 @@ "node": ">= 8" } }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "engines": { + "node": ">=14" + } + }, "node_modules/arg": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz", @@ -4416,14 +4578,14 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -4475,13 +4637,13 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -4536,17 +4698,9 @@ } }, "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" }, "node_modules/async": { "version": "2.6.3", @@ -4628,9 +4782,9 @@ } }, "node_modules/axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "engines": { "node": ">=4" } @@ -5716,11 +5870,11 @@ } }, "node_modules/comment-parser": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", - "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "engines": { - "node": ">= 6.0.0" + "node": ">= 12.0.0" } }, "node_modules/commondir": { @@ -6286,9 +6440,9 @@ "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -6382,11 +6536,25 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -6762,45 +6930,6 @@ "node": ">=10.13.0" } }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/enquirer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/enquirer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -6913,14 +7042,14 @@ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/es-iterator-helpers": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz", - "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", "dependencies": { "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", "es-set-tostringtag": "^2.0.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -6929,8 +7058,8 @@ "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.0", - "safe-array-concat": "^1.0.0" + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "node_modules/es-module-lexer": { @@ -7005,56 +7134,54 @@ } }, "node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -7093,46 +7220,58 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "28.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-28.7.0.tgz", - "integrity": "sha512-+iLTot3brWZCq7tm+YmMAHpZHgDPH8JMMETBSrsDXU+IxdkOvqlPoDj2dQOdcImUqaVVhvdIyvrHiuFGtz1cUA==", - "dependencies": { - "comment-parser": "^0.7.5", - "debug": "^4.1.1", - "jsdoctypeparser": "^7.0.0", - "lodash": "^4.17.15", - "regextras": "^0.7.1", - "semver": "^7.3.2", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-42.0.0.tgz", + "integrity": "sha512-qXYr45G8atPKowZbIOdmABukMzu9IMjAlj6j5Fe0iuUItznWSXUDiBj57ejXcbt8bkPrg83333nuz+cqGKFgcQ==", + "dependencies": { + "@es-joy/jsdoccomment": "~0.37.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": ">=10" + "node": "^14 || ^16 || ^17 || ^18 || ^19" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { "node": ">=4.0" @@ -7141,6 +7280,14 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -7157,14 +7304,6 @@ "node": "*" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-prettier": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", @@ -7291,35 +7430,29 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dependencies": { - "@babel/highlight": "^7.10.4" - } + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", @@ -7332,12 +7465,53 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/globals": { @@ -7354,47 +7528,92 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "*" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -7799,19 +8018,18 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" }, "node_modules/fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { @@ -8352,9 +8570,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -8373,11 +8594,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -8591,15 +8807,15 @@ } }, "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { @@ -8655,6 +8871,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, "node_modules/graphql": { "version": "15.5.1", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.1.tgz", @@ -8845,6 +9066,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -9447,9 +9679,9 @@ ] }, "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "engines": { "node": ">= 4" } @@ -10383,15 +10615,15 @@ "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" }, "node_modules/iterator.prototype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", - "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dependencies": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, "node_modules/jest-worker": { @@ -10458,15 +10690,12 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdoctypeparser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-7.0.0.tgz", - "integrity": "sha512-6vWPn5qSy+MbgCVjXsQKVkRywhs+IxFU7Chw72DKsWoGueYp6QX8eTc55+EA0yPGYfhmglb1gfi283asXirfGQ==", - "bin": { - "jsdoctypeparser": "bin/jsdoctypeparser" - }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, "node_modules/jsesc": { @@ -10592,11 +10821,14 @@ "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" }, "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/latest-version": { @@ -10779,11 +11011,6 @@ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -11309,6 +11536,12 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -11530,26 +11763,26 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -12801,14 +13034,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -13396,14 +13621,14 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz", - "integrity": "sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -13494,17 +13719,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", @@ -13521,14 +13735,6 @@ "node": ">=4" } }, - "node_modules/regextras": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", - "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", - "engines": { - "node": ">=0.1.14" - } - }, "node_modules/registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -13907,14 +14113,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-like": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", @@ -14175,12 +14373,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -14290,9 +14488,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -14507,6 +14705,19 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -14655,60 +14866,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/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==" - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, "node_modules/slugify": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.5.3.tgz", @@ -15418,60 +15575,6 @@ "node": ">=8" } }, - "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", @@ -16471,11 +16574,6 @@ "uuid": "bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" - }, "node_modules/valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", @@ -18914,9 +19012,9 @@ } }, "@babel/runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", - "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "requires": { "regenerator-runtime": "^0.14.0" }, @@ -19446,34 +19544,73 @@ "slugify": "^1.5.3" } }, + "@es-joy/jsdoccomment": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz", + "integrity": "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==", + "requires": { + "comment-parser": "1.3.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==" + }, "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, "globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "requires": { "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } }, "strip-json-comments": { "version": "3.1.1", @@ -19482,6 +19619,11 @@ } } }, + "@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==" + }, "@graphql-inspector/core": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/@graphql-inspector/core/-/core-2.6.1.tgz", @@ -19744,19 +19886,34 @@ } }, "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "requires": { - "@humanwhocodes/object-schema": "^1.2.0", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==" }, "@mdx-js/mdx": { "version": "1.6.22", @@ -19853,9 +20010,9 @@ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz", - "integrity": "sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -20344,12 +20501,6 @@ "@types/estree": "*" } }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, "@types/estree": { "version": "0.0.47", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", @@ -20383,9 +20534,9 @@ "integrity": "sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==" }, "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/mdast": { "version": "3.0.3", @@ -20428,6 +20579,12 @@ "@types/node": "*" } }, + "@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -20442,86 +20599,129 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.10.1.tgz", - "integrity": "sha512-PQg0emRtzZFWq6PxBcdxRH3QIQiyFO3WCVpRL3fgj5oQS3CDs3AeAKfv4DxNhzn8ITdNJGJ4D3Qw8eAJf3lXeQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.10.1", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" } }, "@typescript-eslint/eslint-plugin-tslint": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-3.10.1.tgz", - "integrity": "sha512-DD2sr8Qkoi0TUYlbxLGMivTvMz3i5s8qt7n3/ptWSO3fSQlnf43OeM6tQCujC1MWEKoOwDnyCuMehWwNm3Xi0w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz", + "integrity": "sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.10.1", - "lodash": "^4.17.15" + "@typescript-eslint/utils": "5.62.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", - "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" } }, - "@typescript-eslint/parser": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.10.1.tgz", - "integrity": "sha512-Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==", + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.10.1", - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/typescript-estree": "3.10.1", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", - "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", - "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "@typescript-eslint/types": "3.10.1", - "@typescript-eslint/visitor-keys": "3.10.1", - "debug": "^4.1.1", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", - "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "@webassemblyjs/ast": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", @@ -20681,9 +20881,9 @@ } }, "acorn": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.0.tgz", - "integrity": "sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==" + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" }, "acorn-jsx": { "version": "5.3.2", @@ -20849,6 +21049,11 @@ "picomatch": "^2.0.4" } }, + "are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==" + }, "arg": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.0.tgz", @@ -20932,14 +21137,14 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" } }, @@ -20970,13 +21175,13 @@ } }, "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, @@ -21016,14 +21221,9 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" }, "async": { "version": "2.6.3", @@ -21080,9 +21280,9 @@ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==" + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==" }, "axios": { "version": "0.21.1", @@ -21919,9 +22119,9 @@ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" }, "comment-parser": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", - "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==" }, "commondir": { "version": "1.0.1", @@ -22325,9 +22525,9 @@ "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==" }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } @@ -22392,11 +22592,22 @@ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -22674,45 +22885,16 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", - "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "requires": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" } }, "entities": { @@ -22813,14 +22995,14 @@ } }, "es-iterator-helpers": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz", - "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==", + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", "requires": { "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", "es-set-tostringtag": "^2.0.1", "function-bind": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -22829,8 +23011,8 @@ "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.0", - "safe-array-concat": "^1.0.0" + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "es-module-lexer": { @@ -22887,69 +23069,95 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "requires": { - "@babel/highlight": "^7.10.4" - } + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } }, "globals": { "version": "13.21.0", @@ -22959,15 +23167,53 @@ "type-fest": "^0.20.2" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } } } }, @@ -22990,42 +23236,58 @@ } }, "eslint-plugin-jsdoc": { - "version": "28.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-28.7.0.tgz", - "integrity": "sha512-+iLTot3brWZCq7tm+YmMAHpZHgDPH8JMMETBSrsDXU+IxdkOvqlPoDj2dQOdcImUqaVVhvdIyvrHiuFGtz1cUA==", - "requires": { - "comment-parser": "^0.7.5", - "debug": "^4.1.1", - "jsdoctypeparser": "^7.0.0", - "lodash": "^4.17.15", - "regextras": "^0.7.1", - "semver": "^7.3.2", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-42.0.0.tgz", + "integrity": "sha512-qXYr45G8atPKowZbIOdmABukMzu9IMjAlj6j5Fe0iuUItznWSXUDiBj57ejXcbt8bkPrg83333nuz+cqGKFgcQ==", + "requires": { + "@es-joy/jsdoccomment": "~0.37.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + } } }, "eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "requires": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "dependencies": { + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "requires": { + "dequal": "^2.0.3" + } + }, "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -23038,11 +23300,6 @@ "requires": { "brace-expansion": "^1.1.7" } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -23130,34 +23387,19 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" }, "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - } + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -23474,16 +23716,15 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" }, "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", + "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" + "micromatch": "^4.0.4" } }, "fast-json-stable-stringify": { @@ -23900,9 +24141,9 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { "version": "1.1.5", @@ -23915,11 +24156,6 @@ "functions-have-names": "^1.2.2" } }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" - }, "functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -24076,15 +24312,15 @@ } }, "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", "slash": "^3.0.0" } }, @@ -24128,6 +24364,11 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" + }, "graphql": { "version": "15.5.1", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.1.tgz", @@ -24260,6 +24501,14 @@ "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hast-to-hyperscript": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", @@ -24746,9 +24995,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==" }, "immer": { "version": "8.0.1", @@ -25392,15 +25641,15 @@ "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" }, "iterator.prototype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", - "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "requires": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, "jest-worker": { @@ -25454,10 +25703,10 @@ "esprima": "^4.0.0" } }, - "jsdoctypeparser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-7.0.0.tgz", - "integrity": "sha512-6vWPn5qSy+MbgCVjXsQKVkRywhs+IxFU7Chw72DKsWoGueYp6QX8eTc55+EA0yPGYfhmglb1gfi283asXirfGQ==" + "jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==" }, "jsesc": { "version": "2.5.2", @@ -25556,11 +25805,11 @@ "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" }, "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "requires": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" } }, "latest-version": { @@ -25725,11 +25974,6 @@ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=" }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -26121,6 +26365,12 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -26283,23 +26533,23 @@ } }, "object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.getownpropertydescriptors": { @@ -27135,11 +27385,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -27592,14 +27837,14 @@ } }, "reflect.getprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.3.tgz", - "integrity": "sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" } @@ -27668,11 +27913,6 @@ "functions-have-names": "^1.2.3" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - }, "regexpu-core": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", @@ -27686,11 +27926,6 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, - "regextras": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", - "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==" - }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -27985,11 +28220,6 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, "require-like": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", @@ -28168,12 +28398,12 @@ } }, "safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -28266,9 +28496,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -28454,6 +28684,16 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -28564,44 +28804,6 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.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==", - "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==", - "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==" - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - } - } - }, "slugify": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.5.3.tgz", @@ -29162,49 +29364,6 @@ "node-fetch": "^2.6.1" } }, - "table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "tapable": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", @@ -29918,11 +30077,6 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" - }, "valid-url": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", diff --git a/docs/package.json b/docs/package.json index 59beaa2583..5557c570f6 100644 --- a/docs/package.json +++ b/docs/package.json @@ -17,14 +17,14 @@ "@edno/docusaurus2-graphql-doc-generator": "^1.2.2", "@mdx-js/react": "^1.6.21", "@svgr/webpack": "^5.5.0", - "eslint": "^7.3.1", + "eslint": "^8.54.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest-dom": "^4.0.1", - "eslint-plugin-jsdoc": "^28.5.1", - "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-jsdoc": "^42.0.0", + "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "file-loader": "^6.2.0", "prism-react-renderer": "^1.2.1", "react": "^17.0.1", @@ -45,8 +45,8 @@ }, "devDependencies": { "@docusaurus/types": "^2.0.0-beta.1", - "@typescript-eslint/eslint-plugin": "^3.4.0", - "@typescript-eslint/eslint-plugin-tslint": "^3.4.0", - "@typescript-eslint/parser": "^3.4.0" + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0" } } diff --git a/server/package-lock.json b/server/package-lock.json index 1f997418f3..5630e683d0 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -202,9 +202,9 @@ "@types/webpack-dev-server": "^3.11.0", "@types/ws": "^7.2.3", "@types/xregexp": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^3.4.0", - "@typescript-eslint/eslint-plugin-tslint": "^3.4.0", - "@typescript-eslint/parser": "^3.4.0", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "autoprefixer": "^9.8.6", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^26.3.0", @@ -230,14 +230,14 @@ "css-loader": "^3.4.2", "del": "^6.0.0", "doctoc": "^1.4.0", - "eslint": "^7.3.1", + "eslint": "^8.54.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest-dom": "^4.0.1", - "eslint-plugin-jsdoc": "^28.5.1", - "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-jsdoc": "^42.0.0", + "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "eventemitter2": "^6.4.3", "extract-loader": "^5.1.0", "fake-indexeddb": "^3.1.2", @@ -246,7 +246,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "^4.1.2", + "fork-ts-checker-webpack-plugin": "6.4.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", @@ -355,6 +355,15 @@ } }, "../common/dist": {}, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/toolbox-cache-url": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@ampproject/toolbox-cache-url/-/toolbox-cache-url-2.9.0.tgz", @@ -2464,10 +2473,11 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.7", - "license": "MIT", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -2481,6 +2491,11 @@ "regenerator-runtime": "^0.13.4" } }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, "node_modules/@babel/template": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", @@ -2833,6 +2848,196 @@ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", "license": "0BSD" }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz", + "integrity": "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==", + "dev": true, + "dependencies": { + "comment-parser": "1.3.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": "^14 || ^16 || ^17 || ^18 || ^19 || ^20" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/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 + }, + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/@fluent/bundle": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/@fluent/bundle/-/bundle-0.15.1.tgz", @@ -2978,11 +3183,6 @@ "react": "16.10.2 - 17" } }, - "node_modules/@giphy/react-components/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/@giphy/react-components/node_modules/intersection-observer": { "version": "0.11.0", "dev": true, @@ -5223,6 +5423,68 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, "node_modules/@iarna/toml": { "version": "2.2.5", "license": "ISC" @@ -7127,10 +7389,11 @@ ] }, "node_modules/@nodelib/fs.scandir": { - "version": "2.1.3", - "license": "MIT", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dependencies": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { @@ -7138,8 +7401,9 @@ } }, "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": { - "version": "2.0.3", - "license": "MIT", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "engines": { "node": ">= 8" } @@ -7153,10 +7417,11 @@ } }, "node_modules/@nodelib/fs.walk": { - "version": "1.2.4", - "license": "MIT", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dependencies": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { @@ -7705,14 +7970,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.0.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0" - } - }, "node_modules/@testing-library/dom/node_modules/chalk": { "version": "4.1.2", "dev": true, @@ -7808,14 +8065,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/aria-query": { - "version": "5.0.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=6.0" - } - }, "node_modules/@testing-library/jest-dom/node_modules/css": { "version": "3.0.0", "dev": true, @@ -8333,11 +8582,6 @@ "@types/estree": "*" } }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/@types/estree": { "version": "0.0.50", "dev": true, @@ -9441,8 +9685,9 @@ "dev": true }, "node_modules/@types/semver": { - "version": "7.3.4", - "license": "MIT" + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" }, "node_modules/@types/serve-static": { "version": "1.13.2", @@ -9672,27 +9917,32 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "3.4.0", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^3.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -9701,34 +9951,68 @@ } }, "node_modules/@typescript-eslint/eslint-plugin-tslint": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz", + "integrity": "sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "3.4.0", - "lodash": "^4.17.15" + "@typescript-eslint/utils": "5.62.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", "tslint": "^5.0.0 || ^6.0.0", "typescript": "*" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.2", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -9736,46 +10020,47 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "3.4.0", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "tslib": "^1.8.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 6" }, "peerDependencies": { - "eslint": "*" + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/parser": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.4.0", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -9783,161 +10068,540 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "3.4.0", + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "ms": "2.1.2" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=6.0" }, "peerDependenciesMeta": { - "typescript": { + "supports-color": { "optional": true } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.1.1", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/glob": { - "version": "7.1.6", + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, - "license": "ISC", "dependencies": { - "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" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.2", + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "ms": "2.1.2" }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@virtuoso.dev/react-urx": { - "version": "0.2.13", + "node_modules/@typescript-eslint/type-utils/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, - "license": "MIT", "dependencies": { - "@virtuoso.dev/urx": "^0.2.13" + "tslib": "^1.8.1" }, "engines": { - "node": ">=10" + "node": ">= 6" }, "peerDependencies": { - "react": ">=16" + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/@virtuoso.dev/urx": { - "version": "0.2.13", + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "MIT" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT" + "engines": { + "node": ">= 8" + } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "ISC" + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" } }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT" + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", + "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT" + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@virtuoso.dev/react-urx": { + "version": "0.2.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@virtuoso.dev/urx": "^0.2.13" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16" + } + }, + "node_modules/@virtuoso.dev/urx": { + "version": "0.2.13", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -10242,10 +10906,6 @@ "ajv": "^6.9.1" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, "node_modules/akismet-api": { "version": "5.0.0", "license": "MIT", @@ -10848,6 +11508,15 @@ "dev": true, "license": "MIT" }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/are-we-there-yet": { "version": "1.1.5", "license": "ISC", @@ -10876,15 +11545,12 @@ } }, "node_modules/aria-query": { - "version": "4.2.2", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "dequal": "^2.0.3" } }, "node_modules/arr-diff": { @@ -10933,6 +11599,18 @@ "node": ">=0.10.0" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-each": { "version": "1.0.1", "dev": true, @@ -10959,15 +11637,22 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.0.3", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-initial": { @@ -11075,6 +11760,75 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "dev": true, @@ -11159,23 +11913,16 @@ } }, "node_modules/ast-types-flow": { - "version": "0.0.7", - "dev": true, - "license": "ISC" + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true }, "node_modules/ast-types/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, - "node_modules/astral-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -11230,10 +11977,28 @@ "node": ">= 0.10" } }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/atob": { "version": "2.1.2", "dev": true, @@ -11343,6 +12108,17 @@ "node": ">=6" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -11393,9 +12169,13 @@ } }, "node_modules/axobject-query": { - "version": "2.2.0", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, - "license": "Apache-2.0" + "dependencies": { + "dequal": "^2.0.3" + } }, "node_modules/babel-code-frame": { "version": "6.26.0", @@ -11999,11 +12779,6 @@ "node": ">=6" } }, - "node_modules/babel-plugin-module-resolver/node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/babel-plugin-module-resolver/node_modules/pkg-up": { "version": "3.1.0", "dev": true, @@ -13362,107 +14137,6 @@ "node": ">=10" } }, - "node_modules/bull/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bull/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bull/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/is-callable": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/is-regex": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bull/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/bull/node_modules/object.getownpropertydescriptors": { "version": "2.1.0", "license": "MIT", @@ -13863,12 +14537,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14826,11 +15501,12 @@ } }, "node_modules/comment-parser": { - "version": "0.7.5", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 12.0.0" } }, "node_modules/common-tags": { @@ -17043,9 +17719,10 @@ } }, "node_modules/damerau-levenshtein": { - "version": "1.0.6", - "dev": true, - "license": "BSD-2-Clause" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true }, "node_modules/dashdash": { "version": "1.14.1", @@ -17225,14 +17902,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/deep-equal/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "license": "MIT", @@ -17363,15 +18032,33 @@ "dev": true, "license": "MIT" }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.1.2", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-property": { @@ -17701,6 +18388,15 @@ "version": "0.1.6", "license": "MIT" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/des.js": { "version": "1.0.1", "dev": true, @@ -18308,17 +19004,77 @@ } }, "node_modules/es-abstract": { - "version": "1.12.0", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "node_modules/es-module-lexer": { @@ -18326,16 +19082,42 @@ "dev": true, "license": "MIT" }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, "node_modules/es-to-primitive": { - "version": "1.1.1", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es5-ext": { @@ -18426,52 +19208,55 @@ } }, "node_modules/eslint": { - "version": "7.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.2.0", - "espree": "^7.1.0", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -18510,287 +19295,153 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "28.5.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "comment-parser": "^0.7.5", - "debug": "^4.1.1", - "jsdoctypeparser": "^7.0.0", - "lodash": "^4.17.15", - "regextras": "^0.7.1", - "semver": "^7.3.2", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-42.0.0.tgz", + "integrity": "sha512-qXYr45G8atPKowZbIOdmABukMzu9IMjAlj6j5Fe0iuUItznWSXUDiBj57ejXcbt8bkPrg83333nuz+cqGKFgcQ==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.37.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": ">=10" + "node": "^14 || ^16 || ^17 || ^18 || ^19" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" + "eslint": "^7.0.0 || ^8.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/debug": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.3.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.4.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" + "ms": "2.1.2" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/array-includes": { - "version": "3.1.2", + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/axe-core": { - "version": "4.1.1", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/es-abstract": { - "version": "1.18.0-next.2", + "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "lru-cache": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/is-callable": { - "version": "1.2.2", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/is-regex": { - "version": "1.1.1", + "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/jsx-ast-utils": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.2", - "object.assign": "^4.1.2" + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { "node": ">=4.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object-inspect": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object.assign": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/object.assign/node_modules/object-keys": { - "version": "1.1.1", + "node_modules/eslint-plugin-jsx-a11y/node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=4" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/string.prototype.trimend": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/string.prototype.trimstart": { - "version": "1.0.3", + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "*" } }, "node_modules/eslint-plugin-prettier": { @@ -18809,65 +19460,45 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.20.0", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.1.1", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.2.0", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/array-includes": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, "node_modules/eslint-plugin-react/node_modules/doctrine": { @@ -18881,158 +19512,51 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eslint-plugin-react/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/is-symbol": { - "version": "1.0.3", + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/eslint-plugin-react/node_modules/object.entries": { - "version": "1.1.2", + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" + "node": "*" } }, - "node_modules/eslint-plugin-react/node_modules/object.values": { - "version": "1.1.1", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-react/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "1.17.0", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-scope": { @@ -19047,37 +19571,24 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/acorn": { - "version": "7.3.1", + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, "node_modules/eslint/node_modules/ansi-styles": { @@ -19095,6 +19606,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/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 + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.0", "dev": true, @@ -19135,51 +19652,94 @@ } }, "node_modules/eslint/node_modules/debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "Apache-2.0", "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/espree": { - "version": "7.1.0", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "acorn": "^7.2.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.2.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, - "license": "MIT", "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -19197,29 +19757,31 @@ } }, "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/eslint/node_modules/import-fresh": { - "version": "3.2.1", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/eslint/node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -19228,55 +19790,104 @@ "node": ">= 0.8.0" } }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "MIT", "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/path-key": { - "version": "3.1.1", + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/resolve-from": { + "node_modules/eslint/node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/path-key": { + "version": "3.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.2", + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, "node_modules/eslint/node_modules/shebang-command": { @@ -19298,10 +19909,14 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.0", + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -19319,8 +19934,9 @@ }, "node_modules/eslint/node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -19329,11 +19945,15 @@ } }, "node_modules/eslint/node_modules/type-fest": { - "version": "0.8.1", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/which": { @@ -19351,13 +19971,13 @@ } }, "node_modules/espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -19367,9 +19987,9 @@ } }, "node_modules/espree/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -19377,14 +19997,6 @@ "node": ">=0.4.0" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -19398,9 +20010,10 @@ } }, "node_modules/esquery": { - "version": "1.3.1", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -19409,9 +20022,10 @@ } }, "node_modules/esquery/node_modules/estraverse": { - "version": "5.1.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -20315,6 +20929,11 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "node_modules/fast-diff": { "version": "1.2.0", "dev": true, @@ -20461,14 +21080,15 @@ } }, "node_modules/file-entry-cache": { - "version": "5.0.1", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/file-extension": { @@ -20756,27 +21376,29 @@ } }, "node_modules/flat-cache": { - "version": "2.0.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flat-cache/node_modules/glob": { - "version": "7.1.6", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -20787,15 +21409,46 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/flat-cache/node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/flat-cache/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/flat-cache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flat/node_modules/is-buffer": { @@ -20807,9 +21460,10 @@ } }, "node_modules/flatted": { - "version": "2.0.2", - "dev": true, - "license": "ISC" + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true }, "node_modules/flatten": { "version": "1.0.3", @@ -20857,6 +21511,14 @@ } } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", "dev": true, @@ -20876,10 +21538,6 @@ "node": ">=0.10.0" } }, - "node_modules/foreach": { - "version": "2.0.5", - "license": "MIT" - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -20889,47 +21547,295 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "4.1.2", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", + "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", "dev": true, - "license": "MIT", "dependencies": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" }, "engines": { - "node": ">=6.11.5", + "node": ">=10", "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "2.4.2", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" }, + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "engines": { "node": ">=4" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "5.5.0", + "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, - "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -21006,16 +21912,6 @@ "dev": true, "license": "MIT" }, - "node_modules/found-relay/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "node_modules/found/node_modules/farce": { "version": "0.4.5", "dev": true, @@ -21046,16 +21942,6 @@ "isarray": "0.0.1" } }, - "node_modules/found/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "node_modules/fragment-cache": { "version": "0.2.1", "dev": true, @@ -21135,6 +22021,12 @@ "node": ">= 0.10" } }, + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -21892,13 +22784,37 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gauge": { "version": "2.7.4", @@ -22036,24 +22952,14 @@ "license": "ISC" }, "node_modules/get-intrinsic": { - "version": "1.1.0", - "dev": true, - "license": "MIT", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22090,6 +22996,21 @@ "node": ">=4" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", @@ -23048,6 +23969,20 @@ "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "8.0.2", "dev": true, @@ -23306,6 +24241,17 @@ "node": ">= 6.13.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/got": { "version": "9.6.0", "dev": true, @@ -23351,6 +24297,12 @@ "version": "4.2.8", "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/graphql": { "version": "14.6.0", "license": "MIT", @@ -24290,6 +25242,7 @@ }, "node_modules/has": { "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.1" @@ -24309,6 +25262,14 @@ "node": ">=0.10.0" } }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "license": "MIT", @@ -24324,11 +25285,51 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-unicode": { @@ -24430,6 +25431,17 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "license": "MIT", @@ -25553,112 +26565,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internal-slot/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/internal-slot/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } @@ -25828,10 +26742,49 @@ "node": ">= 0.4" } }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "license": "MIT" }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "1.0.1", "dev": true, @@ -25843,6 +26796,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-buffer": { "version": "1.1.6", "license": "MIT" @@ -25859,10 +26827,14 @@ } }, "node_modules/is-callable": { - "version": "1.1.3", - "license": "MIT", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-ci": { @@ -25889,6 +26861,18 @@ "rgba-regex": "^1.0.0" } }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-data-descriptor": { "version": "0.1.4", "dev": true, @@ -25912,10 +26896,17 @@ } }, "node_modules/is-date-object": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-decimal": { @@ -25974,6 +26965,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-finite": { "version": "1.1.0", "dev": true, @@ -26000,6 +27003,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "devOptional": true, @@ -26035,6 +27053,15 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "dev": true }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-nan": { "version": "1.3.0", "license": "MIT", @@ -26048,16 +27075,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-nan/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/is-negated-glob": { "version": "1.0.0", "dev": true, @@ -26067,9 +27084,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { "node": ">= 0.4" }, @@ -26088,6 +27105,20 @@ "node": ">=0.10.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "dev": true, @@ -26205,13 +27236,18 @@ "license": "MIT" }, "node_modules/is-regex": { - "version": "1.0.4", - "license": "MIT", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-regexp": { @@ -26255,6 +27291,26 @@ "dev": true, "license": "ISC" }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "1.1.0", "dev": true, @@ -26269,9 +27325,12 @@ "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, "node_modules/is-string": { - "version": "1.0.5", - "dev": true, - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -26291,10 +27350,17 @@ } }, "node_modules/is-symbol": { - "version": "1.0.1", - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-there": { @@ -26302,6 +27368,20 @@ "dev": true, "license": "MIT" }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "license": "MIT" @@ -26356,6 +27436,39 @@ "node": ">=0.10.0" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-whitespace-character": { "version": "1.0.2", "dev": true, @@ -26569,6 +27682,19 @@ "version": "1.2.2", "license": "MIT" }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jest": { "version": "26.4.2", "dev": true, @@ -28714,11 +29840,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/jest-resolve/node_modules/read-pkg": { "version": "5.2.0", "dev": true, @@ -30247,6 +31368,15 @@ "node": ">=12.0.0" } }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/jsdoc/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", @@ -30293,17 +31423,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "node_modules/jsdoctypeparser": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "bin": { - "jsdoctypeparser": "bin/jsdoctypeparser" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -30639,12 +31758,15 @@ } }, "node_modules/jsx-ast-utils": { - "version": "2.2.3", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "license": "MIT", "dependencies": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" @@ -30839,16 +31961,21 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "node_modules/language-subtag-registry": { - "version": "0.3.21", - "dev": true, - "license": "ODC-By-1.0" + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true }, "node_modules/language-tags": { - "version": "1.0.5", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, - "license": "MIT", "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/last-run": { @@ -32698,6 +33825,18 @@ "node": ">=6" } }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/memoize-one": { "version": "5.2.1", "license": "MIT" @@ -33430,6 +34569,12 @@ "dev": true, "license": "MIT" }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/ncp": { "version": "2.0.0", "license": "MIT", @@ -33978,8 +35123,9 @@ } }, "node_modules/object-inspect": { - "version": "1.7.0", - "license": "MIT", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -33993,8 +35139,9 @@ } }, "node_modules/object-keys": { - "version": "1.0.12", - "license": "MIT", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } @@ -34019,16 +35166,20 @@ } }, "node_modules/object.assign": { - "version": "4.1.0", - "license": "MIT", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.defaults": { @@ -34056,97 +35207,30 @@ "node": ">=0.10.0" } }, - "node_modules/object.fromentries": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries/node_modules/es-abstract": { - "version": "1.17.6", + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, - "license": "MIT", "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, - "node_modules/object.fromentries/node_modules/es-to-primitive": { - "version": "1.2.1", + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -34154,45 +35238,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.fromentries/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, + "node_modules/object.getownpropertydescriptors": { + "version": "2.0.3", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/object.fromentries/node_modules/is-symbol": { - "version": "1.0.3", + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, - "license": "MIT", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.0.3", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/object.map": { "version": "1.0.1", "dev": true, @@ -34239,6 +35308,23 @@ "node": ">=0.10.0" } }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/obuf": { "version": "1.1.2", "dev": true, @@ -34812,9 +35898,10 @@ } }, "node_modules/path-parse": { - "version": "1.0.5", - "dev": true, - "license": "MIT" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-root": { "version": "0.1.1", @@ -39076,14 +40163,6 @@ "version": "2.0.0", "license": "MIT" }, - "node_modules/progress": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prom-client": { "version": "12.0.0", "license": "Apache-2.0", @@ -39132,107 +40211,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/promise.prototype.finally/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise.prototype.finally/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/promise.prototype.finally/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/is-callable": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/is-regex": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/promise.prototype.finally/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/prompts": { "version": "2.3.2", "dev": true, @@ -39246,12 +40224,14 @@ } }, "node_modules/prop-types": { - "version": "15.6.2", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, - "license": "MIT", "dependencies": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, "node_modules/proto3-json-serializer": { @@ -39698,6 +40678,25 @@ "version": "2.1.1", "license": "MIT" }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/railroad-diagrams": { "version": "1.0.0", "license": "CC0-1.0" @@ -40579,16 +41578,6 @@ "react-is": "^16.7.0" } }, - "node_modules/react-redux/node_modules/prop-types": { - "version": "15.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "node_modules/react-relay": { "version": "10.0.1", "resolved": "git+ssh://git@github.com/coralproject/patched.git#507b0047b53f47e258528853054c263e77a5b392", @@ -40668,12 +41657,6 @@ "react-dom": "^16.0.0 || ^17.0.0" } }, - "node_modules/react-shadow/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "node_modules/react-shadow/node_modules/react-use": { "version": "15.3.8", "resolved": "https://registry.npmjs.org/react-use/-/react-use-15.3.8.tgz", @@ -40879,11 +41862,6 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/react-use/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/react-use/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -41261,6 +42239,26 @@ "node": ">=4.0.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.0", "dev": true, @@ -41292,121 +42290,13 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract": { - "version": "1.17.4", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/regexp.prototype.flags/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-callable": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-regex": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -41415,33 +42305,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexp.prototype.flags/node_modules/object-inspect": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regextras": { - "version": "0.7.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.14" - } - }, "node_modules/registry-auth-token": { "version": "4.1.1", "dev": true, @@ -42283,8 +43146,26 @@ } }, "node_modules/run-parallel": { - "version": "1.1.9", - "license": "MIT" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } }, "node_modules/run-queue": { "version": "1.0.3", @@ -42305,6 +43186,28 @@ "npm": ">=2.0.0" } }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, "node_modules/safe-buffer": { "version": "5.1.1", "license": "MIT" @@ -42322,6 +43225,19 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-stable-stringify": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", @@ -42590,6 +43506,33 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-harmonic-interval": { "version": "1.0.1", "dev": true, @@ -42693,115 +43636,18 @@ "license": "MIT" }, "node_modules/side-channel": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/signal-exit": { "version": "3.0.2", "license": "ISC" @@ -43671,125 +44517,20 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.matchall/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -43808,125 +44549,14 @@ "node": ">= 0.4" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimend/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimend/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/is-callable": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/is-regex": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimleft": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -43935,150 +44565,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimleft/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimright": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dependencies": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimright/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string.prototype.trimstart": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/define-properties": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimstart/node_modules/es-abstract": { - "version": "1.17.6", - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trimstart/node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/has-symbols": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/is-callable": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/is-regex": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart/node_modules/is-symbol": { - "version": "1.0.3", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -44519,6 +45026,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/sver-compat": { "version": "1.5.0", "dev": true, @@ -44626,17 +45145,6 @@ "dev": true, "license": "CC0-1.0" }, - "node_modules/svgo/node_modules/define-properties": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/svgo/node_modules/domutils": { "version": "1.7.0", "dev": true, @@ -44646,104 +45154,6 @@ "domelementtype": "1" } }, - "node_modules/svgo/node_modules/es-abstract": { - "version": "1.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/es-abstract/node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/svgo/node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/has-symbols": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/is-callable": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/is-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svgo/node_modules/is-symbol": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svgo/node_modules/mdn-data": { "version": "2.0.4", "dev": true, @@ -44757,23 +45167,6 @@ "boolbase": "~1.0.0" } }, - "node_modules/svgo/node_modules/object.values": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/svgo/node_modules/source-map": { "version": "0.6.1", "dev": true, @@ -44888,70 +45281,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/table": { - "version": "5.4.6", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", @@ -46365,20 +46694,6 @@ "node": ">=0.6.x" } }, - "node_modules/tsutils": { - "version": "3.17.1", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/tty-browserify": { "version": "0.0.0", "dev": true, @@ -46440,6 +46755,67 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-css-modules": { "version": "0.6.4", "dev": true, @@ -46846,6 +47222,20 @@ "node": ">=0.8.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/unc-path-regex": { "version": "0.1.2", "dev": true, @@ -49037,11 +49427,91 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "dev": true, "license": "ISC" }, + "node_modules/which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wide-align": { "version": "1.1.3", "license": "ISC", @@ -49125,14 +49595,6 @@ "node": ">= 6" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "license": "MIT" @@ -49207,17 +49669,6 @@ "version": "1.0.2", "license": "ISC" }, - "node_modules/write": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/write-file-atomic": { "version": "3.0.3", "dev": true, @@ -49512,6 +49963,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@ampproject/toolbox-cache-url": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@ampproject/toolbox-cache-url/-/toolbox-cache-url-2.9.0.tgz", @@ -51084,9 +51541,18 @@ } }, "@babel/runtime": { - "version": "7.17.7", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", + "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + } } }, "@babel/runtime-corejs3": { @@ -51356,6 +51822,133 @@ } } }, + "@es-joy/jsdoccomment": { + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz", + "integrity": "sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==", + "dev": true, + "requires": { + "comment-parser": "1.3.1", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + } + }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "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 + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "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" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "@eslint/js": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "dev": true + }, "@fluent/bundle": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/@fluent/bundle/-/bundle-0.15.1.tgz", @@ -51464,10 +52057,6 @@ "throttle-debounce": "^3.0.1" }, "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, "intersection-observer": { "version": "0.11.0", "dev": true @@ -53225,6 +53814,49 @@ "@hapi/hoek": "^9.0.0" } }, + "@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, "@iarna/toml": { "version": "2.2.5" }, @@ -54490,14 +55122,18 @@ "optional": true }, "@nodelib/fs.scandir": { - "version": "2.1.3", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "requires": { - "@nodelib/fs.stat": "2.0.3", + "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "dependencies": { "@nodelib/fs.stat": { - "version": "2.0.3" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" } } }, @@ -54506,9 +55142,11 @@ "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.4", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "requires": { - "@nodelib/fs.scandir": "2.1.3", + "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, @@ -54889,10 +55527,6 @@ "color-convert": "^2.0.1" } }, - "aria-query": { - "version": "5.0.0", - "dev": true - }, "chalk": { "version": "4.1.2", "dev": true, @@ -54955,10 +55589,6 @@ "redent": "^3.0.0" }, "dependencies": { - "aria-query": { - "version": "5.0.0", - "dev": true - }, "css": { "version": "3.0.0", "dev": true, @@ -55385,10 +56015,6 @@ "@types/estree": "*" } }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "dev": true - }, "@types/estree": { "version": "0.0.50", "dev": true @@ -56256,7 +56882,9 @@ "dev": true }, "@types/semver": { - "version": "7.3.4" + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==" }, "@types/serve-static": { "version": "1.13.2", @@ -56450,96 +57078,388 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.4.0", - "debug": "^4.1.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" } }, "semver": { - "version": "7.3.2", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, "@typescript-eslint/eslint-plugin-tslint": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz", + "integrity": "sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "3.4.0", - "lodash": "^4.17.15" + "@typescript-eslint/utils": "5.62.0" } }, - "@typescript-eslint/experimental-utils": { - "version": "3.4.0", + "@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + } + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" } }, - "@typescript-eslint/parser": { - "version": "3.4.0", + "@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "3.4.0", - "@typescript-eslint/typescript-estree": "3.4.0", - "eslint-visitor-keys": "^1.1.0" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } } }, + "@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true + }, "@typescript-eslint/typescript-estree": { - "version": "3.4.0", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "glob": { - "version": "7.1.6", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "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" + "path-type": "^4.0.0" } }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "semver": { - "version": "7.3.2", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, + "@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "@virtuoso.dev/react-urx": { "version": "0.2.13", "dev": true, @@ -56828,11 +57748,6 @@ "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" - }, - "dependencies": { - "fast-deep-equal": { - "version": "3.1.3" - } } }, "ajv-errors": { @@ -57252,6 +58167,12 @@ "version": "1.0.0", "dev": true }, + "are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true + }, "are-we-there-yet": { "version": "1.1.5", "requires": { @@ -57273,11 +58194,12 @@ "dev": true }, "aria-query": { - "version": "4.2.2", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "dequal": "^2.0.3" } }, "arr-diff": { @@ -57306,6 +58228,15 @@ "version": "3.1.0", "dev": true }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, "array-each": { "version": "1.0.1", "dev": true @@ -57322,11 +58253,16 @@ "version": "1.1.1" }, "array-includes": { - "version": "3.0.3", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" } }, "array-initial": { @@ -57398,6 +58334,57 @@ "version": "0.3.2", "dev": true }, + "array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "1.0.1", "dev": true @@ -57472,11 +58459,9 @@ } }, "ast-types-flow": { - "version": "0.0.7", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, "async": { @@ -57523,9 +58508,24 @@ "async-done": "^1.2.2" } }, + "asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.3" + } + }, "asynckit": { "version": "0.4.0" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "dev": true @@ -57594,6 +58594,11 @@ } } }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -57633,8 +58638,13 @@ } }, "axobject-query": { - "version": "2.2.0", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } }, "babel-code-frame": { "version": "6.26.0", @@ -58083,10 +59093,6 @@ "version": "2.2.0", "dev": true }, - "path-parse": { - "version": "1.0.6", - "dev": true - }, "pkg-up": { "version": "3.1.0", "dev": true, @@ -59146,59 +60152,6 @@ "uuid": "^8.3.0" }, "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.1" - }, - "is-regex": { - "version": "1.1.1", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - }, "object.getownpropertydescriptors": { "version": "2.1.0", "requires": { @@ -59479,11 +60432,13 @@ "dev": true }, "call-bind": { - "version": "1.0.2", - "dev": true, + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" } }, "call-me-maybe": { @@ -60188,7 +61143,9 @@ } }, "comment-parser": { - "version": "0.7.5", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true }, "common-tags": { @@ -61728,7 +62685,9 @@ } }, "damerau-levenshtein": { - "version": "1.0.6", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, "dashdash": { @@ -61860,12 +62819,6 @@ "object-is": "^1.0.1", "object-keys": "^1.1.1", "regexp.prototype.flags": "^1.2.0" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } } }, "deep-extend": { @@ -61958,11 +62911,24 @@ "version": "1.1.3", "dev": true }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, "define-properties": { - "version": "1.1.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { - "foreach": "^2.0.5", - "object-keys": "^1.0.8" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -62167,6 +63133,12 @@ "deprecated-decorator": { "version": "0.1.6" }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, "des.js": { "version": "1.0.1", "dev": true, @@ -62625,25 +63597,104 @@ } }, "es-abstract": { - "version": "1.12.0", - "requires": { - "es-to-primitive": "^1.1.1", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + } + }, + "es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "requires": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "es-module-lexer": { "version": "0.9.3", "dev": true }, + "es-set-tostringtag": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "requires": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, "es-to-primitive": { - "version": "1.1.1", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" + "is-symbol": "^1.0.2" } }, "es5-ext": { @@ -62710,49 +63761,55 @@ } }, "eslint": { - "version": "7.3.1", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.54.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.0", - "eslint-utils": "^2.0.0", - "eslint-visitor-keys": "^1.2.0", - "espree": "^7.1.0", - "esquery": "^1.2.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "dependencies": { - "acorn": { - "version": "7.3.1", + "ansi-regex": { + "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": { @@ -62763,6 +63820,12 @@ "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.0", "dev": true, @@ -62788,37 +63851,62 @@ } }, "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "eslint-visitor-keys": { - "version": "1.3.0", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "espree": { - "version": "7.1.0", + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { - "acorn": "^7.2.0", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.2.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, "glob-parent": { - "version": "5.1.1", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { - "version": "12.4.0", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -62826,51 +63914,94 @@ "dev": true }, "ignore": { - "version": "4.0.6", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true }, - "import-fresh": { - "version": "3.2.1", + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "argparse": "^2.0.1" } }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "optionator": { - "version": "0.9.1", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-key": { "version": "3.1.1", "dev": true }, "prelude-ls": { "version": "1.2.1", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "dev": true - }, - "semver": { - "version": "7.3.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "shebang-command": { @@ -62884,9 +64015,14 @@ "version": "3.0.0", "dev": true }, - "strip-json-comments": { - "version": "3.1.0", - "dev": true + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } }, "supports-color": { "version": "7.1.0", @@ -62897,13 +64033,17 @@ }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" } }, "type-fest": { - "version": "0.8.1", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, "which": { @@ -62932,29 +64072,54 @@ } }, "eslint-plugin-jsdoc": { - "version": "28.5.1", - "dev": true, - "requires": { - "comment-parser": "^0.7.5", - "debug": "^4.1.1", - "jsdoctypeparser": "^7.0.0", - "lodash": "^4.17.15", - "regextras": "^0.7.1", - "semver": "^7.3.2", + "version": "42.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-42.0.0.tgz", + "integrity": "sha512-qXYr45G8atPKowZbIOdmABukMzu9IMjAlj6j5Fe0iuUItznWSXUDiBj57ejXcbt8bkPrg83333nuz+cqGKFgcQ==", + "dev": true, + "requires": { + "@es-joy/jsdoccomment": "~0.37.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.3.8", "spdx-expression-parse": "^3.0.1" }, "dependencies": { "debug": { - "version": "4.1.1", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "semver": { - "version": "7.3.2", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "spdx-expression-parse": { "version": "3.0.1", "dev": true, @@ -62962,151 +64127,58 @@ "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "eslint-plugin-jsx-a11y": { - "version": "6.4.1", - "dev": true, - "requires": { - "@babel/runtime": "^7.11.2", - "aria-query": "^4.2.2", - "array-includes": "^3.1.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.0.2", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.6", - "emoji-regex": "^9.0.0", - "has": "^1.0.3", - "jsx-ast-utils": "^3.1.0", - "language-tags": "^1.0.5" + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "dependencies": { - "array-includes": { - "version": "3.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", - "is-string": "^1.0.5" - } - }, "axe-core": { - "version": "4.1.1", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "emoji-regex": { - "version": "9.2.0", - "dev": true - }, - "es-abstract": { - "version": "1.18.0-next.2", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.2", - "dev": true - }, - "is-regex": { - "version": "1.1.1", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "jsx-ast-utils": { - "version": "3.2.0", - "dev": true, - "requires": { - "array-includes": "^3.1.2", - "object.assign": "^4.1.2" - } - }, - "object-inspect": { - "version": "1.9.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "object.assign": { - "version": "4.1.2", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "string.prototype.trimend": { - "version": "1.0.3", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.3", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "brace-expansion": "^1.1.7" } } } @@ -63119,38 +64191,29 @@ } }, "eslint-plugin-react": { - "version": "7.20.0", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "requires": { - "array-includes": "^3.1.1", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "dependencies": { - "array-includes": { - "version": "3.1.1", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "doctrine": { "version": "2.1.0", "dev": true, @@ -63158,103 +64221,44 @@ "esutils": "^2.0.2" } }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object.entries": { - "version": "1.1.2", + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" + "brace-expansion": "^1.1.7" } }, - "object.values": { - "version": "1.1.1", + "resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, - "path-parse": { - "version": "1.0.6", + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "resolve": { - "version": "1.17.0", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } } } }, "eslint-plugin-react-hooks": { - "version": "4.2.0", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, "requires": {} }, @@ -63266,36 +64270,25 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "2.1.0", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, "eslint-visitor-keys": { - "version": "1.1.0", - "dev": true + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" }, "espree": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", - "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==" } } }, @@ -63305,14 +64298,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.3.1", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.1.0", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true } } @@ -63943,6 +64940,11 @@ } } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "fast-diff": { "version": "1.2.0", "dev": true @@ -64063,10 +65065,12 @@ } }, "file-entry-cache": { - "version": "5.0.1", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-extension": { @@ -64266,28 +65270,58 @@ } }, "flat-cache": { - "version": "2.0.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "dependencies": { "glob": { - "version": "7.1.6", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, "rimraf": { - "version": "2.6.3", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -64296,7 +65330,9 @@ } }, "flatted": { - "version": "2.0.2", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "flatten": { @@ -64328,6 +65364,14 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "dev": true @@ -64339,42 +65383,207 @@ "for-in": "^1.0.1" } }, - "foreach": { - "version": "2.0.5" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "fork-ts-checker-webpack-plugin": { - "version": "4.1.2", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", + "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", "dev": true, "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.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" + } + }, "chalk": { - "version": "2.4.2", + "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "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" + } + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } }, "supports-color": { - "version": "5.5.0", + "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": "^3.0.0" + "has-flag": "^4.0.0" } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, @@ -64441,15 +65650,6 @@ "requires": { "isarray": "0.0.1" } - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } } } }, @@ -64467,15 +65667,6 @@ "is-promise": { "version": "4.0.0", "dev": true - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } } } }, @@ -64528,6 +65719,12 @@ "through2": "^2.0.3" } }, + "fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true + }, "fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -65125,11 +66322,25 @@ } }, "function-bind": { - "version": "1.1.1" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "functional-red-black-tree": { - "version": "1.0.1", - "dev": true + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gauge": { "version": "2.7.4", @@ -65230,18 +66441,14 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.0", - "dev": true, + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.1", - "dev": true - } + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-own-enumerable-property-symbols": { @@ -65259,6 +66466,15 @@ "version": "6.0.0", "dev": true }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-uri": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz", @@ -66004,6 +67220,14 @@ "version": "11.7.0", "dev": true }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "requires": { + "define-properties": "^1.1.3" + } + }, "globby": { "version": "8.0.2", "dev": true, @@ -66204,6 +67428,14 @@ } } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "9.6.0", "dev": true, @@ -66241,6 +67473,12 @@ "graceful-fs": { "version": "4.2.8" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "graphql": { "version": "14.6.0", "requires": { @@ -66898,6 +68136,7 @@ }, "has": { "version": "1.0.3", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -66909,6 +68148,11 @@ "ansi-regex": "^2.0.0" } }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, "has-flag": { "version": "3.0.0" }, @@ -66916,8 +68160,31 @@ "version": "2.0.0", "dev": true }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, "has-symbols": { - "version": "1.0.0" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } }, "has-unicode": { "version": "2.0.1" @@ -66984,6 +68251,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0" }, @@ -67737,66 +69012,13 @@ } }, "internal-slot": { - "version": "1.0.2", - "dev": true, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-keys": { - "version": "1.1.1", - "dev": true - } + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" } }, "internmap": { @@ -67912,9 +69134,36 @@ "version": "1.0.4", "dev": true }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1" }, + "is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "1.0.1", "dev": true, @@ -67922,6 +69171,15 @@ "binary-extensions": "^1.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6" }, @@ -67933,7 +69191,9 @@ } }, "is-callable": { - "version": "1.1.3" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-ci": { "version": "2.0.0", @@ -67954,6 +69214,15 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, "is-data-descriptor": { "version": "0.1.4", "dev": true, @@ -67971,7 +69240,12 @@ } }, "is-date-object": { - "version": "1.0.1" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-decimal": { "version": "1.0.2", @@ -68006,6 +69280,15 @@ "is-extglob": { "version": "2.1.1" }, + "is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-finite": { "version": "1.1.0", "dev": true @@ -68017,6 +69300,15 @@ "version": "2.1.0", "dev": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "devOptional": true, @@ -68048,18 +69340,16 @@ } } }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, "is-nan": { "version": "1.3.0", "requires": { "define-properties": "^1.1.3" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - } } }, "is-negated-glob": { @@ -68067,8 +69357,9 @@ "dev": true }, "is-negative-zero": { - "version": "2.0.1", - "dev": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" }, "is-number": { "version": "3.0.0", @@ -68086,6 +69377,14 @@ } } }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "1.0.1", "dev": true @@ -68155,9 +69454,12 @@ "dev": true }, "is-regex": { - "version": "1.0.4", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "has": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-regexp": { @@ -68186,6 +69488,20 @@ "version": "1.1.0", "dev": true }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-stream": { "version": "1.1.0", "dev": true @@ -68196,8 +69512,12 @@ "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==" }, "is-string": { - "version": "1.0.5", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-svg": { "version": "3.0.0", @@ -68207,12 +69527,25 @@ } }, "is-symbol": { - "version": "1.0.1" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } }, "is-there": { "version": "4.5.0", "dev": true }, + "is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "requires": { + "which-typed-array": "^1.1.11" + } + }, "is-typedarray": { "version": "1.0.0" }, @@ -68255,6 +69588,30 @@ "version": "1.0.0", "dev": true }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "is-whitespace-character": { "version": "1.0.2", "dev": true @@ -68402,6 +69759,19 @@ "iterall": { "version": "1.2.2" }, + "iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "jest": { "version": "26.4.2", "dev": true, @@ -69909,10 +71279,6 @@ "version": "4.0.0", "dev": true }, - "path-parse": { - "version": "1.0.6", - "dev": true - }, "read-pkg": { "version": "5.2.0", "dev": true, @@ -70826,8 +72192,10 @@ } } }, - "jsdoctypeparser": { - "version": "7.0.0", + "jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true }, "jsdom": { @@ -71066,11 +72434,15 @@ } }, "jsx-ast-utils": { - "version": "2.2.3", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "requires": { - "array-includes": "^3.0.3", - "object.assign": "^4.1.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" } }, "juice": { @@ -71234,14 +72606,18 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, "language-subtag-registry": { - "version": "0.3.21", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true }, "language-tags": { - "version": "1.0.5", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "requires": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" } }, "last-run": { @@ -72522,6 +73898,15 @@ } } }, + "memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "requires": { + "fs-monkey": "^1.0.4" + } + }, "memoize-one": { "version": "5.2.1" }, @@ -73031,6 +74416,12 @@ "version": "1.4.0", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "ncp": { "version": "2.0.0", "optional": true @@ -73403,14 +74794,18 @@ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, "object-inspect": { - "version": "1.7.0" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.0.1", "dev": true }, "object-keys": { - "version": "1.0.12" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object-path": { "version": "0.11.8", @@ -73425,12 +74820,14 @@ } }, "object.assign": { - "version": "4.1.0", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" } }, "object.defaults": { @@ -73452,77 +74849,26 @@ } } }, + "object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "object.fromentries": { - "version": "2.0.2", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.getownpropertydescriptors": { @@ -73532,6 +74878,16 @@ "es-abstract": "^1.5.1" } }, + "object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "requires": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "object.map": { "version": "1.0.1", "dev": true, @@ -73564,6 +74920,17 @@ } } }, + "object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "obuf": { "version": "1.1.2", "dev": true @@ -73961,7 +75328,9 @@ "version": "2.0.1" }, "path-parse": { - "version": "1.0.5", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-root": { @@ -76873,10 +78242,6 @@ "process-nextick-args": { "version": "2.0.0" }, - "progress": { - "version": "2.0.3", - "dev": true - }, "prom-client": { "version": "12.0.0", "requires": { @@ -76906,61 +78271,6 @@ "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.0", "function-bind": "^1.1.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.1" - }, - "is-regex": { - "version": "1.1.1", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - } } }, "prompts": { @@ -76972,11 +78282,14 @@ } }, "prop-types": { - "version": "15.6.2", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "requires": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, "proto3-json-serializer": { @@ -77302,6 +78615,11 @@ "querystringify": { "version": "2.1.1" }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, "railroad-diagrams": { "version": "1.0.0" }, @@ -77901,15 +79219,6 @@ "requires": { "react-is": "^16.7.0" } - }, - "prop-types": { - "version": "15.7.2", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } } } }, @@ -77970,12 +79279,6 @@ "react-use": "^15.3.3" }, "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, "react-use": { "version": "15.3.8", "resolved": "https://registry.npmjs.org/react-use/-/react-use-15.3.8.tgz", @@ -78146,10 +79449,6 @@ "tslib": "^2.1.0" }, "dependencies": { - "fast-deep-equal": { - "version": "3.1.3", - "dev": true - }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -78427,6 +79726,20 @@ "referrer-policy": { "version": "1.2.0" }, + "reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, "regenerate": { "version": "1.4.0", "dev": true @@ -78451,88 +79764,15 @@ } }, "regexp.prototype.flags": { - "version": "1.3.0", - "dev": true, + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.4", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-inspect": { - "version": "1.7.0", - "dev": true - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, - "regexpp": { - "version": "3.1.0", - "dev": true - }, - "regextras": { - "version": "0.7.1", - "dev": true - }, "registry-auth-token": { "version": "4.1.1", "dev": true, @@ -79115,7 +80355,12 @@ } }, "run-parallel": { - "version": "1.1.9" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } }, "run-queue": { "version": "1.0.3", @@ -79131,6 +80376,24 @@ "tslib": "^1.9.0" } }, + "safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "safe-buffer": { "version": "5.1.1" }, @@ -79145,6 +80408,16 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safe-stable-stringify": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.1.tgz", @@ -79339,6 +80612,27 @@ "set-blocking": { "version": "2.0.0" }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, "set-harmonic-interval": { "version": "1.0.1", "dev": true @@ -79413,65 +80707,13 @@ "dev": true }, "side-channel": { - "version": "1.0.2", - "dev": true, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "object-keys": { - "version": "1.1.1", - "dev": true - } + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "signal-exit": { @@ -80137,78 +81379,20 @@ } }, "string.prototype.matchall": { - "version": "4.0.2", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" } }, "string.prototype.padend": { @@ -80220,162 +81404,34 @@ "function-bind": "^1.0.2" } }, - "string.prototype.trimend": { - "version": "1.0.1", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.0" - }, - "is-regex": { - "version": "1.1.0", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "dev": true, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "dev": true, + "string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.1", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - }, - "dependencies": { - "define-properties": { - "version": "1.1.3", - "requires": { - "object-keys": "^1.0.12" - } - }, - "es-abstract": { - "version": "1.17.6", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1" - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1" - }, - "is-callable": { - "version": "1.2.0" - }, - "is-regex": { - "version": "1.1.0", - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "requires": { - "has-symbols": "^1.0.1" - } - } + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "stringify-object": { @@ -80668,6 +81724,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "sver-compat": { "version": "1.5.0", "dev": true, @@ -80747,13 +81809,6 @@ } } }, - "define-properties": { - "version": "1.1.3", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, "domutils": { "version": "1.7.0", "dev": true, @@ -80762,60 +81817,6 @@ "domelementtype": "1" } }, - "es-abstract": { - "version": "1.17.6", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - }, - "dependencies": { - "object-keys": { - "version": "1.1.1", - "dev": true - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "dev": true - }, - "is-callable": { - "version": "1.2.0", - "dev": true - }, - "is-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, - "is-symbol": { - "version": "1.0.3", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "mdn-data": { "version": "2.0.4", "dev": true @@ -80827,16 +81828,6 @@ "boolbase": "~1.0.0" } }, - "object.values": { - "version": "1.1.1", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, "source-map": { "version": "0.6.1", "dev": true @@ -80895,51 +81886,6 @@ } } }, - "table": { - "version": "5.4.6", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "3.1.0", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "taffydb": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", @@ -81888,13 +82834,6 @@ "tsscmp": { "version": "1.0.6" }, - "tsutils": { - "version": "3.17.1", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "tty-browserify": { "version": "0.0.0", "dev": true @@ -81933,6 +82872,49 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typed-css-modules": { "version": "0.6.4", "dev": true, @@ -82200,6 +83182,17 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==" }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, "unc-path-regex": { "version": "0.1.2", "dev": true @@ -83752,10 +84745,74 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, "which-module": { "version": "2.0.0", "dev": true }, + "which-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.4", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "wide-align": { "version": "1.1.3", "requires": { @@ -83824,10 +84881,6 @@ } } }, - "word-wrap": { - "version": "1.2.3", - "dev": true - }, "wordwrap": { "version": "1.0.0" }, @@ -83883,13 +84936,6 @@ "wrappy": { "version": "1.0.2" }, - "write": { - "version": "1.0.3", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "dev": true, diff --git a/server/package.json b/server/package.json index 7ca894b53c..727561b6e3 100644 --- a/server/package.json +++ b/server/package.json @@ -245,9 +245,9 @@ "@types/webpack-dev-server": "^3.11.0", "@types/ws": "^7.2.3", "@types/xregexp": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^3.4.0", - "@typescript-eslint/eslint-plugin-tslint": "^3.4.0", - "@typescript-eslint/parser": "^3.4.0", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", "autoprefixer": "^9.8.6", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^26.3.0", @@ -273,14 +273,14 @@ "css-loader": "^3.4.2", "del": "^6.0.0", "doctoc": "^1.4.0", - "eslint": "^7.3.1", + "eslint": "^8.54.0", "eslint-config-prettier": "^6.11.0", "eslint-plugin-jest-dom": "^4.0.1", - "eslint-plugin-jsdoc": "^28.5.1", - "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-jsdoc": "^42.0.0", + "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-prettier": "^3.1.4", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", "eventemitter2": "^6.4.3", "extract-loader": "^5.1.0", "fake-indexeddb": "^3.1.2", @@ -289,7 +289,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "^4.1.2", + "fork-ts-checker-webpack-plugin": "6.4.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", diff --git a/server/src/core/build/createWebpackConfig.ts b/server/src/core/build/createWebpackConfig.ts index a0b2fc30f2..cd434fe5db 100644 --- a/server/src/core/build/createWebpackConfig.ts +++ b/server/src/core/build/createWebpackConfig.ts @@ -11,7 +11,11 @@ import path from "path"; import WatchMissingNodeModulesPlugin from "react-dev-utils/WatchMissingNodeModulesPlugin"; import TerserPlugin from "terser-webpack-plugin"; import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin"; -import webpack, { Configuration, Plugin } from "webpack"; +import webpack, { + Configuration, + DevtoolModuleFilenameTemplateInfo, + Plugin, +} from "webpack"; import WebpackAssetsManifest from "webpack-assets-manifest"; import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer"; @@ -24,7 +28,6 @@ import paths from "./paths"; /** * filterPlugins will filter out null values from the array of plugins, allowing * easy embedded ternaries. - * * @param plugins array of plugins and null values */ const filterPlugins = (plugins: Array): Plugin[] => @@ -37,7 +40,7 @@ const logger = bunyan.createLogger({ }); interface CreateWebpackOptions { - appendPlugins?: any[]; + appendPlugins?: Array; watch?: boolean; } @@ -91,12 +94,12 @@ export default function createWebpackConfig( /** * ifWatch will only include the nodes if we're in watch mode. */ - const ifWatch = watch ? (...nodes: any[]) => nodes : () => []; + const ifWatch = watch ? (...nodes: Array) => nodes : () => []; /** * ifBuild will only include the nodes if we're in build mode. */ - const ifBuild = !watch ? (...nodes: any[]) => nodes : () => []; + const ifBuild = !watch ? (...nodes: Array) => nodes : () => []; const localesOptions = { pathToLocales: paths.appLocales, @@ -247,7 +250,9 @@ export default function createWebpackConfig( // We inferred the "public path" (such as / or /my-project) from homepage. publicPath, // Point sourcemap entries to original disk location (format as URL on Windows) - devtoolModuleFilenameTemplate: (info: any) => + devtoolModuleFilenameTemplate: ( + info: DevtoolModuleFilenameTemplateInfo + ) => path .relative(paths.appSrc, info.absoluteResourcePath) .replace(/\\/g, "/"), @@ -577,13 +582,17 @@ export default function createWebpackConfig( ...ifWatch( // We run eslint in a separate process to have a quicker build. new ForkTsCheckerWebpackPlugin({ - eslint: true, - typescript: require.resolve("typescript"), + eslint: { enabled: true, files: "src/**/*.{js,ts,tsx}" }, + typescript: { + typescriptPath: require.resolve("typescript"), + configFile: paths.appTsconfig, + diagnosticOptions: { syntactic: true }, + }, async: true, + // diagnosticOptions: { syntactic: true }, // TODO: (cvle) For some reason if incremental build is turned on it does not find lint errors during initial build. - useTypescriptIncrementalApi: false, - checkSyntacticErrors: true, - tsconfig: paths.appTsconfig, + // useTypescriptIncrementalApi: false, + // checkSyntacticErrors: true, }) ), // Makes some environment variables available to the JS code, for example: From 1ba3767353fcd0de8e1991c1cb2d0aa1391710e1 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 4 Dec 2023 09:12:45 -0500 Subject: [PATCH 04/66] update webpack config plugin --- client/src/core/build/createWebpackConfig.ts | 31 ++++++++++---------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/client/src/core/build/createWebpackConfig.ts b/client/src/core/build/createWebpackConfig.ts index 05184074c2..2ba3c14504 100644 --- a/client/src/core/build/createWebpackConfig.ts +++ b/client/src/core/build/createWebpackConfig.ts @@ -1,5 +1,5 @@ /* eslint-disable no-restricted-globals */ -// import OptimizeCssnanoPlugin from "@intervolga/optimize-cssnano-plugin"; +import OptimizeCssnanoPlugin from "@intervolga/optimize-cssnano-plugin"; import bunyan from "bunyan"; import CaseSensitivePathsPlugin from "case-sensitive-paths-webpack-plugin"; import CompressionPlugin from "compression-webpack-plugin"; @@ -134,20 +134,21 @@ export default function createWebpackConfig( insert: insertLinkTag, }), ...ifBuild( - // isProduction && - // new OptimizeCssnanoPlugin({ - // sourceMap: !disableSourcemaps, - // cssnanoOptions: { - // preset: [ - // "default", - // { - // discardComments: { - // removeAll: true, - // }, - // }, - // ], - // }, - // }), + isProduction + ? (new OptimizeCssnanoPlugin({ + sourceMap: !disableSourcemaps, + cssnanoOptions: { + preset: [ + "default", + { + discardComments: { + removeAll: true, + }, + }, + ], + }, + }) as Plugin) + : null, // Pre-compress all the assets as they will be served as is. new CompressionPlugin({}) ), From 476843bcd229aacca83ee506bf0335ecc66f6b99 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 4 Dec 2023 09:15:19 -0500 Subject: [PATCH 05/66] update webpack config plugin for server --- server/src/core/build/createWebpackConfig.ts | 29 ++++++++++---------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/server/src/core/build/createWebpackConfig.ts b/server/src/core/build/createWebpackConfig.ts index cd434fe5db..a818ca7bbf 100644 --- a/server/src/core/build/createWebpackConfig.ts +++ b/server/src/core/build/createWebpackConfig.ts @@ -40,7 +40,7 @@ const logger = bunyan.createLogger({ }); interface CreateWebpackOptions { - appendPlugins?: Array; + appendPlugins?: any[]; watch?: boolean; } @@ -134,20 +134,21 @@ export default function createWebpackConfig( insert: insertLinkTag, }), ...ifBuild( - isProduction && - new OptimizeCssnanoPlugin({ - sourceMap: !disableSourcemaps, - cssnanoOptions: { - preset: [ - "default", - { - discardComments: { - removeAll: true, + isProduction + ? (new OptimizeCssnanoPlugin({ + sourceMap: !disableSourcemaps, + cssnanoOptions: { + preset: [ + "default", + { + discardComments: { + removeAll: true, + }, }, - }, - ], - }, - }), + ], + }, + }) as Plugin) + : null, // Pre-compress all the assets as they will be served as is. new CompressionPlugin({}) ), From 27ac2c0ab862d47623f27883c3bffda113b5ac3a Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 5 Dec 2023 15:20:38 -0500 Subject: [PATCH 06/66] lint updates --- .../components/Comment/CommentContent.tsx | 4 +- .../components/ModerateCard/ModerateCard.tsx | 4 +- .../UserStatus/UserStatusSitesList.tsx | 2 +- .../ModerateSearchBarContainer.tsx | 2 - .../core/client/count/injectJSONPCallback.ts | 2 - client/src/core/client/frame/frame.ts | 2 +- .../helpers/getCurrentScriptOrigin.ts | 1 - .../helpers/injectConditionalPolyfills.tsx | 2 +- .../framework/helpers/potentiallyInjectAxe.ts | 7 ++-- .../core/client/framework/lib/auth/helpers.ts | 1 - .../framework/lib/bootstrap/CoralContext.tsx | 5 ++- .../framework/lib/bootstrap/createManaged.tsx | 4 +- .../framework/lib/errors/reporter/reporter.ts | 2 - .../src/core/client/framework/lib/events.ts | 6 +-- .../lib/network/clientIDMiddleware.ts | 1 - .../createManagedSubscriptionClient.ts | 4 +- .../core/client/framework/lib/postMessage.ts | 4 +- .../lib/relay/createFetchContainer.tsx | 5 +-- .../lib/relay/createMutationContainer.tsx | 1 - .../client/framework/lib/relay/mutation.tsx | 5 +-- .../framework/lib/relay/purgeMetadata.ts | 1 - .../framework/lib/relay/subscription.tsx | 7 ++-- .../client/framework/lib/relay/useLoadMore.ts | 1 - .../client/framework/lib/relay/useLocal.tsx | 18 +++++---- .../core/client/framework/lib/validation.tsx | 32 +++++++++++----- .../client/framework/testHelpers/byText.ts | 3 +- .../testHelpers/createSubscriptionHandler.ts | 2 +- .../testHelpers/overwriteQueryResolver.ts | 4 +- .../src/core/client/framework/utils/jsonp.ts | 1 - .../core/client/oembed/injectJSONPCallback.ts | 1 - client/src/core/client/stream/stream.tsx | 9 +++-- .../AddAdditionalComments.tsx | 4 +- .../IllegalContentReportViewContainer.tsx | 9 +++-- .../Comments/Stream/useCommentCountEvent.ts | 1 - .../helpers/getCommentBodyValidators.ts | 1 - .../helpers/getFlattenedReplyAncestorID.ts | 1 - .../helpers/getHTMLCharacterLength.ts | 1 - .../Comments/helpers/getReplyAncestorID.ts | 1 - .../helpers/shouldTriggerSettingsRefresh.ts | 1 - .../helpers/shouldTriggerViewerRefresh.ts | 1 - .../client/stream/test/helpers/waitForRTE.ts | 1 - client/src/core/client/test/expectAndFail.tsx | 10 +++-- .../client/ui/components/v2/Modal/Portal.tsx | 1 - .../src/core/client/ui/hooks/useComboBox.ts | 1 - client/src/core/index.ts | 1 - server/src/core/index.ts | 1 - .../app/authenticators/facebook/facebook.ts | 3 +- .../server/app/helpers/getRequesterOrigin.ts | 1 - .../src/core/server/app/helpers/hostname.ts | 1 - .../core/server/app/helpers/manifestLoader.ts | 2 +- server/src/core/server/app/index.ts | 2 - .../app/middleware/commentEmbedWhitelisted.ts | 6 +-- .../server/app/middleware/corsWhitelisted.ts | 2 - server/src/core/server/app/middleware/csp.ts | 1 - .../src/core/server/app/middleware/error.ts | 2 - server/src/core/server/app/middleware/json.ts | 1 - .../server/app/middleware/passport/index.ts | 6 +-- .../src/core/server/app/middleware/tenant.ts | 3 -- server/src/core/server/app/request/body.ts | 1 - server/src/core/server/app/router/index.ts | 1 - .../server/data/cache/commentActionsCache.ts | 8 ++-- .../core/server/data/cache/commentCache.ts | 36 +++++++++--------- server/src/core/server/events/event.ts | 4 +- .../events/listeners/slack/publishEvent.ts | 2 +- .../server/events/listeners/slack/slack.ts | 1 - .../core/server/graph/directives/helpers.ts | 1 - server/src/core/server/graph/errors.ts | 1 - .../src/core/server/graph/loaders/Comments.ts | 3 -- .../src/core/server/graph/loaders/Stories.ts | 1 - server/src/core/server/graph/loaders/Users.ts | 1 - .../src/core/server/graph/loaders/helpers.ts | 1 - .../src/core/server/graph/mutators/Stories.ts | 4 +- .../src/core/server/graph/mutators/helpers.ts | 1 - server/src/core/server/graph/mutators/util.ts | 1 - .../src/core/server/graph/persisted/mapper.ts | 1 - .../src/core/server/graph/plugins/helpers.ts | 5 --- .../graph/resolvers/ModerationQueues.ts | 5 --- .../src/core/server/graph/resolvers/Queues.ts | 1 - .../graph/resolvers/Subscription/helpers.ts | 4 +- .../src/core/server/graph/resolvers/util.ts | 1 - .../server/helpers/createTesterWithTimeout.ts | 3 +- server/src/core/server/helpers/createTimer.ts | 1 - server/src/core/server/helpers/dataloader.ts | 1 - server/src/core/server/index.ts | 1 - .../src/core/server/models/action/comment.ts | 6 +-- .../src/core/server/models/comment/comment.ts | 27 ++++--------- .../server/models/comment/counts/shared.ts | 3 +- .../src/core/server/models/comment/helpers.ts | 4 -- .../core/server/models/comment/revision.ts | 8 ++-- .../core/server/models/helpers/connection.ts | 4 +- .../src/core/server/models/helpers/query.ts | 4 -- .../core/server/models/migration/migration.ts | 2 +- .../models/seenComments/seenComments.ts | 4 +- .../models/settings/signingSecret/helpers.ts | 5 --- .../settings/signingSecret/signingSecret.ts | 1 - server/src/core/server/models/site/index.ts | 1 - .../src/core/server/models/story/helpers.ts | 1 - server/src/core/server/models/story/story.ts | 10 ++--- .../src/core/server/models/tenant/helpers.ts | 1 - .../src/core/server/models/tenant/tenant.ts | 2 +- .../server/models/tenant/webhookEndpoint.ts | 3 -- server/src/core/server/models/user/helpers.ts | 6 --- server/src/core/server/models/user/user.ts | 24 ------------ server/src/core/server/queue/Task.ts | 1 - .../core/server/queue/tasks/mailer/content.ts | 5 +-- .../server/queue/tasks/mailer/processor.ts | 38 +++++++++++++------ .../server/queue/tasks/notifier/processor.ts | 1 - .../core/server/services/comments/comments.ts | 14 ------- .../pipeline/createServerWordListRegEx.ts | 2 - .../comments/pipeline/phases/external.ts | 4 +- .../services/comments/pipeline/wordList.ts | 24 ++++++------ .../server/services/dsaReports/reports.ts | 6 --- .../core/server/services/errors/reporter.ts | 1 - .../src/core/server/services/giphy/giphy.ts | 1 - server/src/core/server/services/i18n/index.ts | 3 -- server/src/core/server/services/jwt/index.ts | 12 ++---- .../core/server/services/migrate/indexing.ts | 1 - .../core/server/services/migrate/manager.ts | 1 - .../migrations/1579189174931_create_sites.ts | 4 +- .../src/core/server/services/mongodb/index.ts | 6 ++- .../email/categories/category.ts | 2 +- .../services/notifications/email/context.ts | 2 - .../src/core/server/services/oidc/discover.ts | 1 - .../services/perspective/perspective.ts | 1 - .../src/core/server/services/queries/cache.ts | 1 - .../src/core/server/services/redis/index.ts | 5 +-- .../server/services/tenant/cache/adapter.ts | 3 -- .../server/services/tenant/cache/cache.ts | 4 +- .../core/server/services/tenant/cache/json.ts | 6 +-- .../src/core/server/services/tenant/tenant.ts | 1 - .../core/server/services/users/auth/reset.ts | 1 - .../src/core/server/services/users/helpers.ts | 8 +--- .../src/core/server/services/users/users.ts | 37 ++---------------- server/src/core/server/stacks/editComment.ts | 1 - .../server/stacks/helpers/publishChanges.ts | 2 +- server/src/core/server/test/fixtures.ts | 4 +- 136 files changed, 205 insertions(+), 412 deletions(-) diff --git a/client/src/core/client/admin/components/Comment/CommentContent.tsx b/client/src/core/client/admin/components/Comment/CommentContent.tsx index 522756e5e4..79efa89331 100644 --- a/client/src/core/client/admin/components/Comment/CommentContent.tsx +++ b/client/src/core/client/admin/components/Comment/CommentContent.tsx @@ -48,8 +48,8 @@ interface Props { className?: string; children: string | React.ReactElement; highlight?: boolean; - bannedWords?: Readonly[]>; - suspectWords?: Readonly[]>; + bannedWords?: Readonly>>; + suspectWords?: Readonly>>; } const CommentContent: FunctionComponent = ({ diff --git a/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx b/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx index 23769bd620..b029ee1885 100644 --- a/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx +++ b/client/src/core/client/admin/components/ModerateCard/ModerateCard.tsx @@ -97,8 +97,8 @@ interface Props { isQA?: boolean; rating?: number | null; - bannedWords?: Readonly[]>; - suspectWords?: Readonly[]>; + bannedWords?: Readonly>>; + suspectWords?: Readonly>>; isArchived?: boolean; isArchiving?: boolean; dsaFeaturesEnabled: boolean; diff --git a/client/src/core/client/admin/components/UserStatus/UserStatusSitesList.tsx b/client/src/core/client/admin/components/UserStatus/UserStatusSitesList.tsx index acf42c614e..1b27d38f99 100644 --- a/client/src/core/client/admin/components/UserStatus/UserStatusSitesList.tsx +++ b/client/src/core/client/admin/components/UserStatus/UserStatusSitesList.tsx @@ -23,7 +23,7 @@ interface ScopeSite { } export interface Scopes { - sites?: Readonly[]> | null; + sites?: Readonly>> | null; } export interface UserBanStatus { diff --git a/client/src/core/client/admin/routes/Moderate/ModerateSearchBar/ModerateSearchBarContainer.tsx b/client/src/core/client/admin/routes/Moderate/ModerateSearchBar/ModerateSearchBarContainer.tsx index 85980db194..9ad627b1e8 100644 --- a/client/src/core/client/admin/routes/Moderate/ModerateSearchBar/ModerateSearchBarContainer.tsx +++ b/client/src/core/client/admin/routes/Moderate/ModerateSearchBar/ModerateSearchBarContainer.tsx @@ -49,7 +49,6 @@ type SearchBarOptions = PropTypesOf["options"]; /** * useLinkNavHandler returns a handler that navigates to `href` prop and blurs * the TextField. - * * @param router Router from the _found_ library * @returns A handler for ListBoxOption */ @@ -172,7 +171,6 @@ interface SearchParams { } /** * useSearchOptions - * * @param onClickOrEnter A handler that reacts to click or enter for the search options * @param story Current active story */ diff --git a/client/src/core/client/count/injectJSONPCallback.ts b/client/src/core/client/count/injectJSONPCallback.ts index e9313d43cd..764e63e2a2 100644 --- a/client/src/core/client/count/injectJSONPCallback.ts +++ b/client/src/core/client/count/injectJSONPCallback.ts @@ -6,7 +6,6 @@ type GetCountFunction = (opts?: { reset?: boolean }) => void; /** * getPreviousCount will return the previous count if we can find it in storage. - * * @param storyID the ID of the Story that we're referencing */ function getPreviousCount(storyID: string): number | null { @@ -122,7 +121,6 @@ function createCountElementEnhancer({ /** * injectJSONPCallback will register the `CoralCount` on the window. - * * @param getCount a function that when executed will allow you to reset the count */ function injectJSONPCallback(getCount: GetCountFunction) { diff --git a/client/src/core/client/frame/frame.ts b/client/src/core/client/frame/frame.ts index 8e6e01d63f..e0783c99ad 100644 --- a/client/src/core/client/frame/frame.ts +++ b/client/src/core/client/frame/frame.ts @@ -7,7 +7,7 @@ import { PostMessageService } from "coral-framework/lib/postMessage"; import { getContentBoxSize } from "coral-ui/helpers"; async function injectConditionalPolyfills() { - const pending: Promise[] = []; + const pending: Array> = []; const browser = getBrowserInfo(window); // Polyfill Intersection Observer. diff --git a/client/src/core/client/framework/helpers/getCurrentScriptOrigin.ts b/client/src/core/client/framework/helpers/getCurrentScriptOrigin.ts index f47383be03..d19367e80d 100644 --- a/client/src/core/client/framework/helpers/getCurrentScriptOrigin.ts +++ b/client/src/core/client/framework/helpers/getCurrentScriptOrigin.ts @@ -5,7 +5,6 @@ import { ORIGIN_FALLBACK_ID } from "coral-framework/constants"; /** * getCurrentScriptOrigin will try to find the script origin. * For legacy browsers a fallbackIdentifier is required. - * * @param fallbackID id attached to a script tag to get its origin from for legacy browsrs. */ function getCurrentScriptOrigin(fallbackID: string = ORIGIN_FALLBACK_ID) { diff --git a/client/src/core/client/framework/helpers/injectConditionalPolyfills.tsx b/client/src/core/client/framework/helpers/injectConditionalPolyfills.tsx index e9551809df..05c83e3366 100644 --- a/client/src/core/client/framework/helpers/injectConditionalPolyfills.tsx +++ b/client/src/core/client/framework/helpers/injectConditionalPolyfills.tsx @@ -5,7 +5,7 @@ export default async function injectConditionalPolyfills( window: Window, browser: BrowserInfo ) { - const pending: Promise[] = []; + const pending: Array> = []; // Polyfill Intl. let intlPromise = Promise.resolve(); diff --git a/client/src/core/client/framework/helpers/potentiallyInjectAxe.ts b/client/src/core/client/framework/helpers/potentiallyInjectAxe.ts index d421f704d5..ef5d34ff6f 100644 --- a/client/src/core/client/framework/helpers/potentiallyInjectAxe.ts +++ b/client/src/core/client/framework/helpers/potentiallyInjectAxe.ts @@ -17,10 +17,9 @@ function extractQuery(href: string) { /** * Injects react-axe for runtime a11y checks under certain conditions: - * - During development - * - Not on mobile - * - `axe` has been added to the url query. - * + * - During development + * - Not on mobile + * - `axe` has been added to the url query. * @param href url to check for the `axe` property. */ export default async function potentiallyInjectAxe( diff --git a/client/src/core/client/framework/lib/auth/helpers.ts b/client/src/core/client/framework/lib/auth/helpers.ts index 926659e45c..dbfc3ce3bf 100644 --- a/client/src/core/client/framework/lib/auth/helpers.ts +++ b/client/src/core/client/framework/lib/auth/helpers.ts @@ -36,7 +36,6 @@ export function parseAccessTokenClaims( /** * computeExpiresIn will return null if we are already expired, or the time in * milliseconds from now that we are expired. - * * @param expiredAt the epoch timestamp that we're considered expired */ export function computeExpiresIn(expiredAt: number) { diff --git a/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx b/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx index f628d66aee..70cb29fca6 100644 --- a/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx +++ b/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx @@ -95,13 +95,14 @@ export interface CoralContext { /** rootURL to the Coral Server */ rootURL: string; - /** Supports a custom scroll container element if Coral is rendered outside + /** + * Supports a custom scroll container element if Coral is rendered outside * of the render window */ customScrollContainer?: HTMLElement; } -export const CoralReactContext = React.createContext({} as any); +export const CoralReactContext = React.createContext({}); export const useCoralContext = () => React.useContext(CoralReactContext); diff --git a/client/src/core/client/framework/lib/bootstrap/createManaged.tsx b/client/src/core/client/framework/lib/bootstrap/createManaged.tsx index 08f5f993a3..c254c384d4 100644 --- a/client/src/core/client/framework/lib/bootstrap/createManaged.tsx +++ b/client/src/core/client/framework/lib/bootstrap/createManaged.tsx @@ -67,6 +67,7 @@ export type InitLocalState = (dependencies: { export type RefreshAccessTokenPromise = () => Promise; +// eslint-disable-next-line declare let __webpack_public_path__: string; interface CreateContextArguments { /** URL of the Coral server */ @@ -107,7 +108,8 @@ interface CreateContextArguments { /** Static Config from the server necessary to start the client*/ staticConfig?: StaticConfig | null; - /** Supports a custom scroll container element if Coral is rendered outside + /** + * Supports a custom scroll container element if Coral is rendered outside * of the render window */ customScrollContainer?: HTMLElement; diff --git a/client/src/core/client/framework/lib/errors/reporter/reporter.ts b/client/src/core/client/framework/lib/errors/reporter/reporter.ts index c2aad75290..74a2971616 100644 --- a/client/src/core/client/framework/lib/errors/reporter/reporter.ts +++ b/client/src/core/client/framework/lib/errors/reporter/reporter.ts @@ -33,7 +33,6 @@ export interface User { export interface ErrorReporter { /** * report will send a report to the reporter service. - * * @param err the error to report */ report(err: any, scope?: ErrorReporterScope): ErrorReport; @@ -41,7 +40,6 @@ export interface ErrorReporter { /** * setUser should set the user that's currently interacting with the * application. - * * @param user the current logged in user or null for none. */ setUser(user: User | null): void; diff --git a/client/src/core/client/framework/lib/events.ts b/client/src/core/client/framework/lib/events.ts index 76672c084b..25dc1245d9 100644 --- a/client/src/core/client/framework/lib/events.ts +++ b/client/src/core/client/framework/lib/events.ts @@ -64,7 +64,6 @@ export interface ViewerNetworkEvent< /** * createViewerEvent creates a ViewerNetworkEvent object. - * * @param name name of the event */ export function createViewerNetworkEvent< @@ -104,7 +103,6 @@ export function createViewerNetworkEvent< /** * createViewerEvent creates a ViewerEvent object. - * * @param name name of the event */ export function createViewerEvent(name: string): ViewerEvent { @@ -125,7 +123,7 @@ export function useViewerEvent( ): keyof T extends never ? () => void : (data: T) => void { const { eventEmitter } = useCoralContext(); return ((data?: T) => { - viewerEvent.emit(eventEmitter, data as any); + viewerEvent.emit(eventEmitter, data); }) as any; } @@ -144,6 +142,6 @@ export function useViewerNetworkEvent< ) => ViewerNetworkEventStarted { const { eventEmitter } = useCoralContext(); return ((data?: T) => { - return viewerNetworkEvent.begin(eventEmitter, data as any); + return viewerNetworkEvent.begin(eventEmitter, data); }) as any; } diff --git a/client/src/core/client/framework/lib/network/clientIDMiddleware.ts b/client/src/core/client/framework/lib/network/clientIDMiddleware.ts index 64bd7b9e88..46437a666d 100644 --- a/client/src/core/client/framework/lib/network/clientIDMiddleware.ts +++ b/client/src/core/client/framework/lib/network/clientIDMiddleware.ts @@ -4,7 +4,6 @@ import { CLIENT_ID_HEADER } from "coral-common/common/lib/constants"; /** * Sets clientID on the header. - * * @param clientID an identifier for this client. */ const clientIDMiddleware: (clientID: string) => Middleware = diff --git a/client/src/core/client/framework/lib/network/createManagedSubscriptionClient.ts b/client/src/core/client/framework/lib/network/createManagedSubscriptionClient.ts index a0ea911120..ad741601a9 100644 --- a/client/src/core/client/framework/lib/network/createManagedSubscriptionClient.ts +++ b/client/src/core/client/framework/lib/network/createManagedSubscriptionClient.ts @@ -24,6 +24,7 @@ const STALE_CLIENT_TIMEOUT = 10 * 1000; const BATCH_PERIOD = 1000; +// eslint-disable-next-line no-shadow export const enum CONNECTION_STATUS { CONNECTED = "CONNECTED", CONNECTING = "CONNECTING", @@ -122,7 +123,6 @@ function batchLoop(requests: SubscriptionRequest[], timeout: number) { /** * Creates a ManagedSubscriptionClient - * * @param url url of the graphql live server * @param clientID a clientID that is provided to the graphql live server */ @@ -145,7 +145,7 @@ export default function createManagedSubscriptionClient( let subscriptionClient: SubscriptionClient | null = null; let paused = false; let accessToken: string | undefined; - let closeStaleClientTimeout: any = null; + let closeStaleClientTimeout: NodeJS.Timeout | null = null; // Start batching loop that runs every second. batchLoop(requests, BATCH_PERIOD); diff --git a/client/src/core/client/framework/lib/postMessage.ts b/client/src/core/client/framework/lib/postMessage.ts index 1548beba8a..a5b5a283c0 100644 --- a/client/src/core/client/framework/lib/postMessage.ts +++ b/client/src/core/client/framework/lib/postMessage.ts @@ -23,7 +23,6 @@ export class PostMessageService { /** * Send a message over the postMessage API - * * @param name string name of the message * @param value string value of the message * @param target Window target window, e.g. window.opener @@ -47,7 +46,6 @@ export class PostMessageService { /** * Subscribe to messages - * * @param name string Name of the message * @param handler PostMessageHandler */ @@ -63,7 +61,7 @@ export class PostMessageService { if (event.data.name !== name) { return; } - handler(event.data.value, event.data.name); + handler(event.data.value, event.data.name as string); }; // Attach the listener to the target. this.window.addEventListener("message", listener); diff --git a/client/src/core/client/framework/lib/relay/createFetchContainer.tsx b/client/src/core/client/framework/lib/relay/createFetchContainer.tsx index fc42fbf3a6..5bbf8430b8 100644 --- a/client/src/core/client/framework/lib/relay/createFetchContainer.tsx +++ b/client/src/core/client/framework/lib/relay/createFetchContainer.tsx @@ -14,7 +14,6 @@ import { CoralContext, withContext } from "../bootstrap"; * injects a property with the name specified in `propName` * and the signature (input: I) => Promise. Calling * this will start a one off query. - * * @deprecated use `createFetch` instead */ function createFetchContainer( @@ -36,9 +35,9 @@ function createFetchContainer( private fetch = (variables: V) => { return fetch( - this.props.context.relayEnvironment, + this.props.context.relayEnvironment as Environment, variables, - this.props.context + this.props.context as CoralContext ); }; diff --git a/client/src/core/client/framework/lib/relay/createMutationContainer.tsx b/client/src/core/client/framework/lib/relay/createMutationContainer.tsx index acb5d04fa3..0454265538 100644 --- a/client/src/core/client/framework/lib/relay/createMutationContainer.tsx +++ b/client/src/core/client/framework/lib/relay/createMutationContainer.tsx @@ -15,7 +15,6 @@ import { CoralContext, withContext } from "../bootstrap"; * and the signature (input: I) => Promise. Calling * this will call the specified `commit` callback with * the Relay `environment` provided by the context. - * * @deprecated use `createMutation` instead */ function createMutationContainer( diff --git a/client/src/core/client/framework/lib/relay/mutation.tsx b/client/src/core/client/framework/lib/relay/mutation.tsx index eda097075c..c5c52b84f5 100644 --- a/client/src/core/client/framework/lib/relay/mutation.tsx +++ b/client/src/core/client/framework/lib/relay/mutation.tsx @@ -67,11 +67,11 @@ export function useMutation( ): MutationProp { const context = useCoralContext(); return useCallback>( - ((input: I) => { + (input: I) => { // TODO: (cvle) Naming of these events are deprecated. context.eventEmitter.emit(`mutation.${mutation.name}`, input); return mutation.commit(context.relayEnvironment, input, context); - }) as any, + }, [context] ); } @@ -79,7 +79,6 @@ export function useMutation( /** * withMutation creates a HOC that injects the mutation as * a property. - * * @deprecated use `useMutation` instead */ export function withMutation( diff --git a/client/src/core/client/framework/lib/relay/purgeMetadata.ts b/client/src/core/client/framework/lib/relay/purgeMetadata.ts index b1a0e70d7a..210fa551c6 100644 --- a/client/src/core/client/framework/lib/relay/purgeMetadata.ts +++ b/client/src/core/client/framework/lib/relay/purgeMetadata.ts @@ -2,7 +2,6 @@ import startsWith from "coral-common/common/lib/utils/startsWith"; /** * Purges relay metadata from response e.g. information about fragments. - * * @param data Relay response data */ export default function purgeMetadata(data: T): T { diff --git a/client/src/core/client/framework/lib/relay/subscription.tsx b/client/src/core/client/framework/lib/relay/subscription.tsx index b62c88366c..d456a75b5f 100644 --- a/client/src/core/client/framework/lib/relay/subscription.tsx +++ b/client/src/core/client/framework/lib/relay/subscription.tsx @@ -93,7 +93,7 @@ export function useSubscription( const context = useCoralContext(); // eslint-disable-next-line react-hooks/exhaustive-deps return useCallback>( - ((variables: V) => { + (variables: V) => { // TODO: (cvle) Do we need to keep this one around? Was replaced by `subscription.${name}.subscribe`,`subscription.${name}.unsubscribe`, `subscription.${name}.data` context.eventEmitter.emit(`subscription.${subscription.name}`, variables); return subscription.subscribe( @@ -101,7 +101,7 @@ export function useSubscription( variables, context ); - }) as any, + }, [context, subscription] ); } @@ -109,10 +109,9 @@ export function useSubscription( /** * withSubscription creates a HOC that injects the subscription as * a property. - * * @deprecated use `useFetch` instead */ -export function withSubscription( +export function withSubscription( subscription: Subscription ): InferableComponentEnhancer<{ [P in N]: SubscriptionProp; diff --git a/client/src/core/client/framework/lib/relay/useLoadMore.ts b/client/src/core/client/framework/lib/relay/useLoadMore.ts index dbf69c418b..5f94976dd1 100644 --- a/client/src/core/client/framework/lib/relay/useLoadMore.ts +++ b/client/src/core/client/framework/lib/relay/useLoadMore.ts @@ -4,7 +4,6 @@ import { RelayPaginationProp } from "react-relay"; /** * useLoadMore is a react hook that returns a `loadMore` callback * and a `isLoadingMore` boolean. - * * @param relay {RelayPaginationProp} * @param count {number} */ diff --git a/client/src/core/client/framework/lib/relay/useLocal.tsx b/client/src/core/client/framework/lib/relay/useLocal.tsx index 8d3d46c0e5..99ef695a1d 100644 --- a/client/src/core/client/framework/lib/relay/useLocal.tsx +++ b/client/src/core/client/framework/lib/relay/useLocal.tsx @@ -32,7 +32,6 @@ function isAdvancedUpdater(t: LocalUpdater): t is AdvancedUpdater { /** * applySimplified takes selections defined in a fragment, an object * containing data changes and smartly applies it to the record proxy. - * * @param record Record Proxy poing to Local Record * @param selections Selections of the fragment * @param data Data you want to set @@ -42,6 +41,7 @@ function applySimplified( selections: ReadonlyArray, data: any ) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const keys = Object.keys(data); keys.forEach((k) => { const field = selections.find((s) => s.alias === k || s.name === k); @@ -50,11 +50,14 @@ function applySimplified( } switch (field.kind) { case "ScalarField": + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument record.setValue(data[k], field.name); return; case "LinkedField": applySimplified( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument record.getOrCreateLinkedRecord(field.name, field.concreteType), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument field.selections, data[k] ); @@ -74,12 +77,11 @@ function applySimplified( * Example: * ``` * const [local, setLocal] = useLocal(graphql` - * fragment ProfileLocal on Local { - * profileTab - * } + * fragment ProfileLocal on Local { + * profileTab + * } * `); * ``` - * * @param fragmentSpec graphql fragment */ function useLocal( @@ -96,10 +98,10 @@ function useLocal( return relayEnvironment.lookup(selector); }, [selector, relayEnvironment]); - const [local, setLocal] = useState(() => snapshot.data as any); + const [local, setLocal] = useState(() => snapshot.data); useEffectWhenChanged(() => { - setLocal(snapshot.data as any); + setLocal(snapshot.data); }, [snapshot]); const localUpdate = useCallback( @@ -123,7 +125,7 @@ function useLocal( useEffect(() => { const subscription = relayEnvironment.subscribe(snapshot, (update) => - setLocal(update.data as any) + setLocal(update.data) ); return () => { subscription.dispose(); diff --git a/client/src/core/client/framework/lib/validation.tsx b/client/src/core/client/framework/lib/validation.tsx index 4be26164e6..fcf9aed1eb 100644 --- a/client/src/core/client/framework/lib/validation.tsx +++ b/client/src/core/client/framework/lib/validation.tsx @@ -88,7 +88,7 @@ export const requiredTrue = createValidator( * validateEmail is a Validator that checks that the value is an email. */ export const validateEmail = createValidator( - (v) => !v || EMAIL_REGEX.test(v), + (v) => !v || !(typeof v === "string") || EMAIL_REGEX.test(v), INVALID_EMAIL() ); @@ -97,7 +97,7 @@ export const validateEmail = createValidator( * at the beginning and including at least one dot. */ export const validateEmailDomain = createValidator( - (v) => !v || EMAIL_DOMAIN_REGEX.test(v), + (v) => !v || !(typeof v === "string") || EMAIL_DOMAIN_REGEX.test(v), INVALID_EMAIL_DOMAIN() ); @@ -105,7 +105,7 @@ export const validateEmailDomain = createValidator( * validateUsernameCharacters is a Validator that checks that the username only contains valid characters. */ export const validateUsernameCharacters = createValidator( - (v) => !v || USERNAME_REGEX.test(v), + (v) => !v || !(typeof v === "string") || USERNAME_REGEX.test(v), INVALID_CHARACTERS() ); @@ -131,7 +131,7 @@ export const validateImageURL = createValidator( * validateShareURL checks that a URL is valid and includes a valid commentID query param */ export const validateShareURL = (v: any) => { - if (!v) { + if (!v || !(typeof v === "string")) { return false; } const shareURLArr = v.split("?commentID="); @@ -147,7 +147,7 @@ export const validateShareURL = (v: any) => { * validateURL is a Validator that checks that the URL only contains valid characters. */ export const validateURL = createValidator( - (v) => !v || URL_REGEX.test(v), + (v) => !v || !(typeof v === "string") || URL_REGEX.test(v), INVALID_URL() ); @@ -265,7 +265,11 @@ export const validateUsernameEquals = createValidator( * validateWholeNumber is a Validator that checks for a valid whole number. */ export const validateWholeNumber = createValidator( - (v) => !v || v === 0 || Number.isInteger(parseFloat(v)), + (v) => + !v || + v === 0 || + !(typeof v === "string") || + Number.isInteger(parseFloat(v)), NOT_A_WHOLE_NUMBER() ); @@ -274,7 +278,10 @@ export const validateWholeNumber = createValidator( */ export const validateWholeNumberGreaterThan = (x: number) => createValidator( - (v) => v === null || (Number.isInteger(parseFloat(v)) && v > x), + (v) => + v === null || + !(typeof v === "string") || + (Number.isInteger(parseFloat(v)) && parseFloat(v) > x), NOT_A_WHOLE_NUMBER_GREATER_THAN(x) ); @@ -283,7 +290,10 @@ export const validateWholeNumberGreaterThan = (x: number) => */ export const validateWholeNumberGreaterThanOrEqual = (x: number) => createValidator( - (v) => v === null || (Number.isInteger(parseFloat(v)) && v >= x), + (v) => + v === null || + !(typeof v === "string") || + (Number.isInteger(parseFloat(v)) && parseFloat(v) >= x), NOT_A_WHOLE_NUMBER_GREATER_THAN_OR_EQUAL(x) ); @@ -295,7 +305,10 @@ export const validateWholeNumberBetween = (min: number, max: number) => (v) => !v || v === 0 || - (Number.isInteger(parseFloat(v)) && v >= min && v <= max), + !(typeof v === "string") || + (Number.isInteger(parseFloat(v)) && + parseFloat(v) >= min && + parseFloat(v) <= max), NOT_A_WHOLE_NUMBER_BETWEEN(min, max) ); @@ -345,7 +358,6 @@ export type Condition = (value: T, values: V) => boolean; /** * composeSomeConditions will return true when some of the conditions return * true, false if all return false. - * * @param conditions conditions to use */ export function composeSomeConditions( diff --git a/client/src/core/client/framework/testHelpers/byText.ts b/client/src/core/client/framework/testHelpers/byText.ts index 82864a56e9..b7a04eda5e 100644 --- a/client/src/core/client/framework/testHelpers/byText.ts +++ b/client/src/core/client/framework/testHelpers/byText.ts @@ -7,7 +7,6 @@ import matchText, { TextMatchOptions, TextMatchPattern } from "./matchText"; /** * Turns list of children of a dom element into a string. * This will also handle React Fragments. - * * @param children list of children */ const childrenToString = (children: ReactTestInstance["children"]) => { @@ -34,7 +33,7 @@ const matcher = if (typeof i.type !== "string") { return false; } - const content = i.props.dangerouslySetInnerHTML + const content: string = i.props.dangerouslySetInnerHTML ? i.props.dangerouslySetInnerHTML.__html : childrenToString(i.children); return matchText(pattern, content, options); diff --git a/client/src/core/client/framework/testHelpers/createSubscriptionHandler.ts b/client/src/core/client/framework/testHelpers/createSubscriptionHandler.ts index 252c25228d..dda602a53c 100644 --- a/client/src/core/client/framework/testHelpers/createSubscriptionHandler.ts +++ b/client/src/core/client/framework/testHelpers/createSubscriptionHandler.ts @@ -39,7 +39,6 @@ export interface SubscriptionHandlerReadOnly { * dispatch will look for subscriptions of the field `field` and * calls the `callback` for each of them. If `callback` returns data, * it'll be dispatched to that subscription. - * * @param field name of subscription field to look for. * @param callback callback is called for every subscription on this field. */ @@ -68,6 +67,7 @@ export default function createSubscriptionHandler(): SubscriptionHandler { dispatch: (field, callback) => { subscriptions.forEach((s) => { if (s.field === field) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const data = callback(s.variables); if (data) { s.dispatch(data); diff --git a/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts b/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts index 6b67c5b63e..bc72087cf3 100644 --- a/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts +++ b/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts @@ -25,11 +25,10 @@ type OverwriteQueryResolverTemplate = { * and creates a resolver function of each of its field. The returned * value of the resolvers will bet the value returned by the overwrite * or if undefined, the original value. - * * @param original original resolver object * @param overwrite overwrite resolver object or value */ -function overwriteRecursive(original: any, overwrite: any) { +function overwriteRecursive(original: any, overwrite: unknown) { let ret = original; Object.keys(overwrite).forEach((k) => { ret = { @@ -72,7 +71,6 @@ function overwriteRecursive(original: any, overwrite: any) { * but allows you to return `void` which would then fallback to the original resolver. * * Given a `ResolverType` from the Schema it'll provide types as well!. - * * @param callback resolver callback */ export function createQueryResolverOverwrite>( diff --git a/client/src/core/client/framework/utils/jsonp.ts b/client/src/core/client/framework/utils/jsonp.ts index 6004c1295a..df575050a6 100644 --- a/client/src/core/client/framework/utils/jsonp.ts +++ b/client/src/core/client/framework/utils/jsonp.ts @@ -1,7 +1,6 @@ /* eslint-disable no-restricted-globals */ /** * Initiate a jsonp request. - * * @param endpoint jsonp endpoint * @param callback name of global callback to receive response * @param args args to send along the jsonp request. diff --git a/client/src/core/client/oembed/injectJSONPCallback.ts b/client/src/core/client/oembed/injectJSONPCallback.ts index 9f32d63e7f..ecb4adce14 100644 --- a/client/src/core/client/oembed/injectJSONPCallback.ts +++ b/client/src/core/client/oembed/injectJSONPCallback.ts @@ -60,7 +60,6 @@ function createCommentEmbedElementEnhancer({ /** * injectJSONPCallback will register the `CoralCommentEmbed` on the window. - * * @param getCommentEmbed a function that when executed will allow you to grab the comment embed */ function injectJSONPCallback(getCommentEmbed: GetCommentEmbedFunction) { diff --git a/client/src/core/client/stream/stream.tsx b/client/src/core/client/stream/stream.tsx index b60b942348..828132fbae 100644 --- a/client/src/core/client/stream/stream.tsx +++ b/client/src/core/client/stream/stream.tsx @@ -79,7 +79,7 @@ const hideStyle: React.CSSProperties = { /** * Insert link tag is called by css loaders like style-loader or mini-css-extract plugin. * See webpack config. - **/ + */ export function insertLinkTag(linkTag: HTMLLinkElement) { // Inject link tag into Index Component injectLinkTag(linkTag); @@ -87,7 +87,7 @@ export function insertLinkTag(linkTag: HTMLLinkElement) { /** * Create and attach CoralStream to Element. - **/ + */ export async function attach(options: AttachOptions) { // Detect and extract the storyID and storyURL from the current page so we can // add it to the managed provider. @@ -245,13 +245,14 @@ export async function attach(options: AttachOptions) { ); }; - // eslint-disable-next-line no-restricted-globals + // eslint-disable-next-line no-restricted-globals, react/no-deprecated ReactDOM.render(, options.element); } /** * Remove will unmount Coral Stream. - **/ + */ export async function remove(element: HTMLElement) { + // eslint-disable-next-line react/no-deprecated ReactDOM.unmountComponentAtNode(element); } diff --git a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AddAdditionalComments.tsx b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AddAdditionalComments.tsx index 20ca7a7a99..b7b65bd831 100644 --- a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AddAdditionalComments.tsx +++ b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AddAdditionalComments.tsx @@ -26,7 +26,7 @@ import styles from "./AddAdditionalComments.css"; import AdditionalCommentQuery from "./AdditionalCommentQuery"; interface Props { - additionalComments: { id: string; url: string }[] | null; + additionalComments: Array<{ id: string; url: string }> | null; comment: CommentData | null; onAddAdditionalComment: (id: string, url: string) => void; onDeleteAdditionalComment: (id: string) => void; @@ -58,7 +58,7 @@ const AddAdditionalComments: FunctionComponent = ({ }, [additionalComments]); const onAddCommentURL = useCallback(() => { - const newAdditionalComment = + const newAdditionalComment: string = form?.getFieldState("additionalComment")?.value; if (newAdditionalComment) { if (!isValidShareURL(newAdditionalComment)) { diff --git a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx index e3d8842cb4..f65d52601f 100644 --- a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx @@ -70,11 +70,12 @@ const IllegalContentReportViewContainer: FunctionComponent = (props) => { const createDSAReport = useMutation(CreateDSAReportMutation); const { renderWindow, customScrollContainer } = useCoralContext(); const root = useShadowRootOrDocument(); - const [additionalComments, setAdditionalComments] = useState< - null | { id: string; url: string }[] - >(null); + const [additionalComments, setAdditionalComments] = useState>(null); const [submissionStatus, setSubmissionStatus] = useState< - { id: string; status: string; error?: any; url: string }[] + Array<{ id: string; status: string; error?: any; url: string }> >([]); const [isSubmitted, setIsSubmitted] = useState(false); const submissionID = useUUID(); diff --git a/client/src/core/client/stream/tabs/Comments/Stream/useCommentCountEvent.ts b/client/src/core/client/stream/tabs/Comments/Stream/useCommentCountEvent.ts index 018f7c1209..a109d47f9c 100644 --- a/client/src/core/client/stream/tabs/Comments/Stream/useCommentCountEvent.ts +++ b/client/src/core/client/stream/tabs/Comments/Stream/useCommentCountEvent.ts @@ -38,7 +38,6 @@ function getText( /** * useCommentCountEvent is a React hook that will * emit `commentCount` events. - * * @param storyID story id of the comment count * @param storyURL story url of the comment count * @param commentCount number of total published comments diff --git a/client/src/core/client/stream/tabs/Comments/helpers/getCommentBodyValidators.ts b/client/src/core/client/stream/tabs/Comments/helpers/getCommentBodyValidators.ts index 72cacf9b0a..99928bae08 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/getCommentBodyValidators.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/getCommentBodyValidators.ts @@ -33,7 +33,6 @@ function getLengthValidators(min: number | null, max: number | null) { /** * getCommentBodyValidators will return validators based on given min & max parameters. - * * @param min minimum length or null * @param max maximum length or null */ diff --git a/client/src/core/client/stream/tabs/Comments/helpers/getFlattenedReplyAncestorID.ts b/client/src/core/client/stream/tabs/Comments/helpers/getFlattenedReplyAncestorID.ts index 3f2c0ab0f8..5b0ef6cea2 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/getFlattenedReplyAncestorID.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/getFlattenedReplyAncestorID.ts @@ -4,7 +4,6 @@ import { MAX_REPLY_INDENT_DEPTH } from "coral-stream/constants"; /** * Find the common ancestor id to flatten replies to. - * * @param comment RecordProxy of comment * @param depth Depth of comment as returned by `determineDepthTillAncestor` */ diff --git a/client/src/core/client/stream/tabs/Comments/helpers/getHTMLCharacterLength.ts b/client/src/core/client/stream/tabs/Comments/helpers/getHTMLCharacterLength.ts index 33feb59c09..f99a94ba1b 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/getHTMLCharacterLength.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/getHTMLCharacterLength.ts @@ -2,7 +2,6 @@ import getHTMLPlainText from "coral-common/common/lib/helpers/getHTMLPlainText"; /** * getHTMLCharacterLength will return current character length. - * * @param html the html which length should be determined */ export default function getHTMLCharacterLength(html: string | undefined) { diff --git a/client/src/core/client/stream/tabs/Comments/helpers/getReplyAncestorID.ts b/client/src/core/client/stream/tabs/Comments/helpers/getReplyAncestorID.ts index cd11796d35..26b799a817 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/getReplyAncestorID.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/getReplyAncestorID.ts @@ -2,7 +2,6 @@ import { RecordProxy } from "relay-runtime"; /** * Find the ancestor id of the reply. - * * @param comment RecordProxy of comment * @param depth Depth of comment as returned by `determineDepthTillAncestor` */ diff --git a/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerSettingsRefresh.ts b/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerSettingsRefresh.ts index 02a4f15bfd..e58fd585df 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerSettingsRefresh.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerSettingsRefresh.ts @@ -12,7 +12,6 @@ const triggers = [ * error codes signify that the settings on the client currently * mismatches with the newest settings on the server, and thus * e.g. validations fail. - * * @param code the error code to check for */ export default function shouldTriggerSettingsRefresh(code: ERROR_CODES) { diff --git a/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerViewerRefresh.ts b/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerViewerRefresh.ts index 3abc06380b..592c8c979c 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerViewerRefresh.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/shouldTriggerViewerRefresh.ts @@ -12,7 +12,6 @@ const triggers = [ * error codes signify that the settings on the client currently * mismatches with the newest settings on the server, and thus * e.g. validations fail. - * * @param code the error code to check for */ export default function shouldTriggerViewerRefresh(code: ERROR_CODES) { diff --git a/client/src/core/client/stream/test/helpers/waitForRTE.ts b/client/src/core/client/stream/test/helpers/waitForRTE.ts index 51353f35be..5816922208 100644 --- a/client/src/core/client/stream/test/helpers/waitForRTE.ts +++ b/client/src/core/client/stream/test/helpers/waitForRTE.ts @@ -10,7 +10,6 @@ import { /** * waitForRTE returns an promise that resolves to the instance of `RTE`. - * * @param instance The instance to look within * @param label The label of the RTE * @returns Promise of RTE TestInstance diff --git a/client/src/core/client/test/expectAndFail.tsx b/client/src/core/client/test/expectAndFail.tsx index 36dac28765..3f0abdb150 100644 --- a/client/src/core/client/test/expectAndFail.tsx +++ b/client/src/core/client/test/expectAndFail.tsx @@ -7,18 +7,18 @@ /** * isPromise detects whether given object is a promise or not. */ -const isPromise = (obj: any): obj is PromiseLike => +const isPromise = (obj: any): obj is PromiseLike => !!obj && (typeof obj === "object" || typeof obj === "function") && typeof obj.then === "function"; /** * Wrap a jest matcher so if the expectation fails, it also fails the test. - * * @param func the jest matcher that will be wrapped. */ const wrapMatcher = (func: any) => { const wrappedMatcher: any = {}; + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const keys = Object.keys(func); keys.forEach((k) => { if (typeof func[k] === "function") { @@ -28,6 +28,7 @@ const wrapMatcher = (func: any) => { if (isPromise(result)) { return result.then(undefined, (e) => { // Remove this function from stacktrace. + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument Error.captureStackTrace(e, wrappedMatcher[k]); fail(e); throw e; @@ -36,6 +37,7 @@ const wrapMatcher = (func: any) => { return result; } catch (e) { // Remove this function from stacktrace. + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument Error.captureStackTrace(e, wrappedMatcher[k]); fail(e); throw e; @@ -49,8 +51,8 @@ const wrapMatcher = (func: any) => { return wrappedMatcher; }; -const expectAndFail = (...args: any[]) => { - const matcher = (global as any).expect(...args); +const expectAndFail = (...args: unknown[]) => { + const matcher = (global as unknown).expect(...args); return wrapMatcher(matcher); }; diff --git a/client/src/core/client/ui/components/v2/Modal/Portal.tsx b/client/src/core/client/ui/components/v2/Modal/Portal.tsx index 51ceafa731..ee4b6790eb 100644 --- a/client/src/core/client/ui/components/v2/Modal/Portal.tsx +++ b/client/src/core/client/ui/components/v2/Modal/Portal.tsx @@ -13,7 +13,6 @@ function appendDivNode(window: Window) { /** * useDOMNode is a React hook that returns a DOM node * to be used as a portal for the modal. - * * @param open whether the modal is open or not. */ function useDOMNode(open: boolean) { diff --git a/client/src/core/client/ui/hooks/useComboBox.ts b/client/src/core/client/ui/hooks/useComboBox.ts index 899c7c0e00..bb2bbfe7bb 100644 --- a/client/src/core/client/ui/hooks/useComboBox.ts +++ b/client/src/core/client/ui/hooks/useComboBox.ts @@ -41,7 +41,6 @@ export interface ListBoxOption { * a managed list of `ListBoxOption`, the active descendant and event handlers * for the textfield. You can find the managed props of the elements in * the type `ListBoxOptionElements`. - * * @param id unique identifier for accessibility purposes * @param opts options to show in the listbox */ diff --git a/client/src/core/index.ts b/client/src/core/index.ts index eaf8d86345..2d04c0a279 100644 --- a/client/src/core/index.ts +++ b/client/src/core/index.ts @@ -2,7 +2,6 @@ import Server, { ServerOptions } from "coral-server/index"; /** * Create a Coral Server. - * * @param options ServerOptions that will be used to configure Coral. */ export default function createCoral(options: ServerOptions = {}): Server { diff --git a/server/src/core/index.ts b/server/src/core/index.ts index 49e027b345..9767bce1d8 100644 --- a/server/src/core/index.ts +++ b/server/src/core/index.ts @@ -2,7 +2,6 @@ import Server, { ServerOptions } from "./server"; /** * Create a Coral Server. - * * @param options ServerOptions that will be used to configure Coral. */ export default function createCoral(options: ServerOptions = {}): Server { diff --git a/server/src/core/server/app/authenticators/facebook/facebook.ts b/server/src/core/server/app/authenticators/facebook/facebook.ts index 3c990631d3..396a90d4d5 100644 --- a/server/src/core/server/app/authenticators/facebook/facebook.ts +++ b/server/src/core/server/app/authenticators/facebook/facebook.ts @@ -77,7 +77,6 @@ export class FacebookAuthenticator extends OAuth2Authenticator { * getProof will generate a proof that we have the client secret. For more * information, see: * https://developers.facebook.com/docs/reference/api/securing-graph-api/ - * * @param accessToken the access token aquired during the auth flow */ private getProof(accessToken: string) { @@ -172,7 +171,7 @@ export class FacebookAuthenticator extends OAuth2Authenticator { return this.success(state, user, req, res); } catch (err) { - return this.fail(state, err, req, res); + return this.fail(state, err as Error, req, res); } }; } diff --git a/server/src/core/server/app/helpers/getRequesterOrigin.ts b/server/src/core/server/app/helpers/getRequesterOrigin.ts index 3ded269956..99018b6621 100644 --- a/server/src/core/server/app/helpers/getRequesterOrigin.ts +++ b/server/src/core/server/app/helpers/getRequesterOrigin.ts @@ -3,7 +3,6 @@ import { getOrigin } from "../url"; /** * getRequesterOrigin will get the origin of the requester from the request. - * * @param req the request to get the origin from */ function getRequesterOrigin(req: Request): string | null { diff --git a/server/src/core/server/app/helpers/hostname.ts b/server/src/core/server/app/helpers/hostname.ts index ff0c59cd25..45da7727f0 100644 --- a/server/src/core/server/app/helpers/hostname.ts +++ b/server/src/core/server/app/helpers/hostname.ts @@ -4,7 +4,6 @@ import { IncomingMessage } from "http"; * Duplicates the functionality from expressjs: * * https://github.com/expressjs/express/blob/b8e50568af9c73ef1ade434e92c60d389868361d/lib/request.js#L416-L450 - * * @param req incoming request */ export function getHostname(req: IncomingMessage) { diff --git a/server/src/core/server/app/helpers/manifestLoader.ts b/server/src/core/server/app/helpers/manifestLoader.ts index de2864fb0f..c377aa7197 100644 --- a/server/src/core/server/app/helpers/manifestLoader.ts +++ b/server/src/core/server/app/helpers/manifestLoader.ts @@ -16,7 +16,7 @@ import Entrypoints, { Entrypoint, RawEntrypoint } from "./entrypoints"; * TODO: (cvle) Unsure if we need this. Does `webpack-assets-manifest` always * eventually create a valid manifest? Needs more investigation. Setting it to * a high number for now. - **/ + */ const INVALID_MANIFEST_MAX_RETRIES = 9999; export interface Asset { diff --git a/server/src/core/server/app/index.ts b/server/src/core/server/app/index.ts index 59ce745fd0..4ff29f8bd4 100644 --- a/server/src/core/server/app/index.ts +++ b/server/src/core/server/app/index.ts @@ -91,7 +91,6 @@ const NON_FINGERPRINTED_FILES = ["count.js", "embed.js", "commentEmbed.js"]; /** * isFingerprintedPath will return true if the path provided is a fingerprinted * one. - * * @param requestPath the path to test if it's a fingerprinted path * @returns true if the path is a fingerprinted one, false if not. */ @@ -188,7 +187,6 @@ export async function createApp(options: AppOptions): Promise { /** * listenAndServe will start the given express application. - * * @param app the express application to start * @param port the port to listen on */ diff --git a/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts b/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts index 0f6fd29f1f..aaf3587351 100644 --- a/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts +++ b/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts @@ -12,11 +12,12 @@ export const commentEmbedWhitelisted = ({ mongo }: Pick, oembedAPI = false): RequestHandler => async (req, res, next) => { // First try to get the commentID from the query params - let { commentID } = req.query; + let commentID: string | undefined = req.query.commentID; // For the Oembed endpoint, will need to get commentID from the url if (!commentID) { - const urlToParse = new URL(req.query.url); + const url: string | undefined = req.query.url; + const urlToParse = new URL(url); commentID = urlToParse.searchParams.get("commentID"); } @@ -57,7 +58,6 @@ export const commentEmbedWhitelisted = /** * Creates the options for the "cors" middleware which whitelists * site origins for the single comment embed. - * * @param mongo the database connection * @returns CorsOptionsDelegate */ diff --git a/server/src/core/server/app/middleware/corsWhitelisted.ts b/server/src/core/server/app/middleware/corsWhitelisted.ts index dae737c3d3..0e0dd304bb 100644 --- a/server/src/core/server/app/middleware/corsWhitelisted.ts +++ b/server/src/core/server/app/middleware/corsWhitelisted.ts @@ -7,7 +7,6 @@ import { Request } from "coral-server/types/express"; /** * Creates the options for the "cors" middleware which whitelists * site origins. - * * @param mongo the database connection * @returns CorsOptionsDelegate */ @@ -36,7 +35,6 @@ export function createCorsOptionsDelegate( /** * corsWhitelisted is a middleware that provides cors with whitelisted site origins. - * * @param mongo the database connection. * @returns RequestHandler */ diff --git a/server/src/core/server/app/middleware/csp.ts b/server/src/core/server/app/middleware/csp.ts index 7a03534875..5d58591da4 100644 --- a/server/src/core/server/app/middleware/csp.ts +++ b/server/src/core/server/app/middleware/csp.ts @@ -109,7 +109,6 @@ async function retrieveOriginsFromRequest( /** * getRequesterOrigin will get the origin of the requester from the request. - * * @param req the request to get the origin from */ function getRequesterOrigin(req: Request): string | null { diff --git a/server/src/core/server/app/middleware/error.ts b/server/src/core/server/app/middleware/error.ts index 81c474ea40..245511d10e 100644 --- a/server/src/core/server/app/middleware/error.ts +++ b/server/src/core/server/app/middleware/error.ts @@ -16,7 +16,6 @@ import { extractLoggerMetadata } from "./logging"; /** * wrapError ensures that the error being propagated is a CoralError. - * * @param err the error to be wrapped */ const wrapError = (err: Error) => @@ -27,7 +26,6 @@ const wrapError = (err: Error) => /** * serializeError will return a serialized error that can be returned via the * API response. - * * @param err the CoralError that should be serialized * @param req the request * @param bundles the translation bundles diff --git a/server/src/core/server/app/middleware/json.ts b/server/src/core/server/app/middleware/json.ts index af76a01122..2ce8a8d99b 100644 --- a/server/src/core/server/app/middleware/json.ts +++ b/server/src/core/server/app/middleware/json.ts @@ -2,7 +2,6 @@ import bodyParser from "body-parser"; /** * jsonMiddleware is middleware that will parse the incoming JSON payloads. - * * @param limit the amount of bytes to allow for POST requests */ export const jsonMiddleware = (limit: number) => bodyParser.json({ limit }); diff --git a/server/src/core/server/app/middleware/passport/index.ts b/server/src/core/server/app/middleware/passport/index.ts index 3eb1889d63..b49198f70e 100644 --- a/server/src/core/server/app/middleware/passport/index.ts +++ b/server/src/core/server/app/middleware/passport/index.ts @@ -2,7 +2,7 @@ import { NextFunction, Response } from "express"; import { Redis } from "ioredis"; import Joi from "joi"; import jwt from "jsonwebtoken"; -import passport, { Authenticator } from "passport"; +import passport, { AuthenticateOptions, Authenticator } from "passport"; import { AppOptions } from "coral-server/app"; import { JWTStrategy } from "coral-server/app/middleware/passport/strategies/jwt"; @@ -120,7 +120,6 @@ export async function handleSuccessfulLogin( /** * wrapAuthn will wrap a authenticators authenticate method with one that * will return a valid login token for a valid login by a compatible strategy. - * * @param authenticator the base authenticator instance * @param signingConfig used to sign the tokens that are issued. * @param name the name of the authenticator to use @@ -131,7 +130,7 @@ export const wrapAuthn = authenticator: passport.Authenticator, signingConfig: JWTSigningConfig, name: string, - options?: any + options?: AuthenticateOptions ): RequestHandler => (req, res, next) => authenticator.authenticate( @@ -157,7 +156,6 @@ export const wrapAuthn = /** * authenticate will wrap the authenticator to forward any error to the error * handler from ExpressJS. - * * @param authenticator the authenticator to use */ export const authenticate = diff --git a/server/src/core/server/app/middleware/tenant.ts b/server/src/core/server/app/middleware/tenant.ts index b831ef82a0..45b880ee34 100644 --- a/server/src/core/server/app/middleware/tenant.ts +++ b/server/src/core/server/app/middleware/tenant.ts @@ -25,7 +25,6 @@ interface RequestQuery { /** * parseQueryFromRequest will parse the query from the request, either from the * actual query on the url, or the referer header if made on a trusted origin. - * * @param tenant the tenant associated with this request * @param req the request in question */ @@ -82,7 +81,6 @@ function parseQueryFromRequest( /** * retrieveSiteFromQuery will get the site from the passed query. - * * @param mongo the database connection * @param tenant the tenant associated with this request * @param query the query that was parsed for this request @@ -122,7 +120,6 @@ async function retrieveSiteFromQuery( /** * retrieveSiteFromRequest will retrieve the site from the request in question. - * * @param mongo the database connection * @param tenant the tenant associated with this request * @param req the request in question diff --git a/server/src/core/server/app/request/body.ts b/server/src/core/server/app/request/body.ts index 51dd3203f7..82675ee1ee 100644 --- a/server/src/core/server/app/request/body.ts +++ b/server/src/core/server/app/request/body.ts @@ -5,7 +5,6 @@ import { ValidationError } from "coral-server/errors"; /** * validate will strip unknown fields and perform validation against it. It will * throw any error encountered. - * * @param schema the Joi schema to validate against * @param body the body to parse and strip of unknown fields */ diff --git a/server/src/core/server/app/router/index.ts b/server/src/core/server/app/router/index.ts index 6a18a26c65..9c1f2c7879 100644 --- a/server/src/core/server/app/router/index.ts +++ b/server/src/core/server/app/router/index.ts @@ -67,7 +67,6 @@ export async function createRouter(app: AppOptions, options: RouterOptions) { /** * attachGraphiQL will attach the GraphiQL routes to the router. - * * @param router the router to attach the GraphiQL routes to * @param app the application to read the configuration from */ diff --git a/server/src/core/server/data/cache/commentActionsCache.ts b/server/src/core/server/data/cache/commentActionsCache.ts index 62ac41c637..f33bf3606c 100644 --- a/server/src/core/server/data/cache/commentActionsCache.ts +++ b/server/src/core/server/data/cache/commentActionsCache.ts @@ -65,7 +65,7 @@ export class CommentActionsCache implements IDataCache { const storyMembersKey = this.computeStoryMembersKey(tenantID, storyID); cmd.expire(storyMembersKey, this.expirySeconds); - const commentActions: Readonly[] = []; + const commentActions: Array> = []; while (await cursor.hasNext()) { const commentAction = await cursor.next(); if (!commentAction) { @@ -106,7 +106,7 @@ export class CommentActionsCache implements IDataCache { const cmd = this.redis.multi(); - const commentActions: Readonly[] = []; + const commentActions: Array> = []; const storyMemberKeys: string[] = []; while (await cursor.hasNext()) { const commentAction = await cursor.next(); @@ -208,7 +208,7 @@ export class CommentActionsCache implements IDataCache { return { id, key: this.computeDataKey(tenantID, id) }; }); - const commentActions: Readonly[] = []; + const commentActions: Array> = []; const notFoundLocallyKeys: string[] = []; for (const entry of keys) { const commentAction = this.commentActionsByKey.get(entry.key); @@ -296,7 +296,7 @@ export class CommentActionsCache implements IDataCache { } private deserializeObject(data: string): Readonly { - const parsed = JSON.parse(data); + const parsed: CommentAction = JSON.parse(data); return { ...parsed, createdAt: new Date(parsed.createdAt), diff --git a/server/src/core/server/data/cache/commentCache.ts b/server/src/core/server/data/cache/commentCache.ts index 5215ea1854..4c8514ca0d 100644 --- a/server/src/core/server/data/cache/commentCache.ts +++ b/server/src/core/server/data/cache/commentCache.ts @@ -116,7 +116,7 @@ export class CommentCache implements IDataCache { tenantID: string, storyID: string, isArchived: boolean - ): Promise[]> { + ): Promise>> { const collection = isArchived && this.mongo.archive ? this.mongo.archivedComments() @@ -135,7 +135,7 @@ export class CommentCache implements IDataCache { private async retrieveCommentsFromRedisForStory( tenantID: string, storyID: string - ): Promise[]> { + ): Promise>> { const key = this.computeStoryAllCommentsKey(tenantID, storyID); const start1 = Date.now(); @@ -224,7 +224,7 @@ export class CommentCache implements IDataCache { private async createRelationalCommentKeysLocally( tenantID: string, storyID: string, - comments: Readonly[] + comments: Array> ) { for (const comment of comments) { const dataKey = this.computeDataKey(tenantID, storyID, comment.id); @@ -246,7 +246,7 @@ export class CommentCache implements IDataCache { private async createRelationalCommentKeysInRedis( tenantID: string, storyID: string, - comments: Readonly[], + comments: Array>, now: Date ) { const cmd = this.redis.multi(); @@ -341,7 +341,7 @@ export class CommentCache implements IDataCache { storyID: string, parentID?: string | null, isArchived?: boolean - ): Promise[]> { + ): Promise>> { const filter = parentID ? { tenantID, @@ -369,7 +369,7 @@ export class CommentCache implements IDataCache { return []; } - let results: Readonly[] = []; + let results: Array> = []; const keys = ids.map((id) => this.computeDataKey(tenantID, storyID, id)); if (keys.length === 0) { return []; @@ -430,7 +430,7 @@ export class CommentCache implements IDataCache { tenantID: string, storyID: string, isArchived: boolean - ): Promise[]> { + ): Promise>> { const lockKey = this.computeLockKey(tenantID, storyID); const hasCommentsInRedis = await this.redis.exists(lockKey); @@ -478,7 +478,7 @@ export class CommentCache implements IDataCache { tenantID: string, storyID: string, parentID: string | null | undefined, - comments: Readonly[], + comments: Array>, orderBy: GQLCOMMENT_SORT ) { let start = Date.now(); @@ -492,7 +492,7 @@ export class CommentCache implements IDataCache { ); start = Date.now(); - const sortedComments: Readonly[] = []; + const sortedComments: Array> = []; let index = orderBy === GQLCOMMENT_SORT.CREATED_AT_ASC ? 0 : orderedIDs.length - 1; const incr = orderBy === GQLCOMMENT_SORT.CREATED_AT_ASC ? 1 : -1; @@ -590,7 +590,7 @@ export class CommentCache implements IDataCache { parentID: string, isArchived: boolean ) { - const result: Readonly[] = []; + const result: Array> = []; const replies = await this.retrieveReplies( tenantID, @@ -621,7 +621,7 @@ export class CommentCache implements IDataCache { parent: Readonly, isArchived: boolean, orderBy: GQLCOMMENT_SORT = GQLCOMMENT_SORT.CREATED_AT_ASC - ): Promise[]> { + ): Promise>> { const repliesConnection = await this.replies( parent.tenantID, parent.storyID, @@ -629,9 +629,9 @@ export class CommentCache implements IDataCache { isArchived, orderBy ); - const replies = repliesConnection.nodes as Readonly[]; + const replies = repliesConnection.nodes as Array>; - const results: Readonly[] = []; + const results: Array> = []; for (const reply of replies) { results.push(reply); const children = await this.allChildCommentsRecursive( @@ -661,9 +661,9 @@ export class CommentCache implements IDataCache { isArchived, orderBy ); - const replies = repliesConnection.nodes as Readonly[]; + const replies = repliesConnection.nodes as Array>; - const results: Readonly[] = []; + const results: Array> = []; for (const reply of replies) { results.push(reply); const children = await this.allChildCommentsRecursive( @@ -834,7 +834,7 @@ export class CommentCache implements IDataCache { await cmd.exec(); } - private createConnection(comments: Readonly[]) { + private createConnection(comments: Array>) { const edges: any[] = []; const nodes: any[] = []; @@ -859,7 +859,7 @@ export class CommentCache implements IDataCache { } private sortComments( - comments: Readonly[], + comments: Array>, orderBy: GQLCOMMENT_SORT ) { return comments.sort((a, b) => { @@ -889,7 +889,7 @@ export class CommentCache implements IDataCache { } private deserializeObject(data: string): Readonly { - const parsed = JSON.parse(data); + const parsed: Comment = JSON.parse(data); return { ...parsed, createdAt: new Date(parsed.createdAt), diff --git a/server/src/core/server/events/event.ts b/server/src/core/server/events/event.ts index c2bf8a59bb..85178f711b 100644 --- a/server/src/core/server/events/event.ts +++ b/server/src/core/server/events/event.ts @@ -54,7 +54,9 @@ export function createCoralEvent( { eventType: event.type, eventID: event.id }, "publishing event" ); - const promises: Promise[] = [Promise.resolve(broker.emit(event))]; + const promises: Array> = [ + Promise.resolve(broker.emit(event)), + ]; if (options.forward) { promises.push(...options.forward.map((f) => f.publish(broker, data))); } diff --git a/server/src/core/server/events/listeners/slack/publishEvent.ts b/server/src/core/server/events/listeners/slack/publishEvent.ts index 02f5b3c042..02e740cf84 100644 --- a/server/src/core/server/events/listeners/slack/publishEvent.ts +++ b/server/src/core/server/events/listeners/slack/publishEvent.ts @@ -38,7 +38,7 @@ export default class SlackPublishEvent { this.author = author; } - private getTriggers(): (Trigger | null)[] { + private getTriggers(): Array { if ( this.actionType && this.actionType === "created" && diff --git a/server/src/core/server/events/listeners/slack/slack.ts b/server/src/core/server/events/listeners/slack/slack.ts index 49df363adc..086063664d 100644 --- a/server/src/core/server/events/listeners/slack/slack.ts +++ b/server/src/core/server/events/listeners/slack/slack.ts @@ -36,7 +36,6 @@ export class SlackCoralEventListener /** * postMessage will prepare and send the incoming Slack webhook. - * * @param hookURL url to the Slack webhook that we should send the message to * @param content the content for the message */ diff --git a/server/src/core/server/graph/directives/helpers.ts b/server/src/core/server/graph/directives/helpers.ts index 2c8ee3ea81..fdf365d541 100644 --- a/server/src/core/server/graph/directives/helpers.ts +++ b/server/src/core/server/graph/directives/helpers.ts @@ -3,7 +3,6 @@ import { GraphQLResolveInfo, ResponsePath } from "graphql"; /** * calculateLocationKey will reduce the resolve information to determine the * path to where the key that is being accessed. - * * @param info the info from the graph request */ export function calculateLocationKey( diff --git a/server/src/core/server/graph/errors.ts b/server/src/core/server/graph/errors.ts index 759db0c2ed..8447fc34f6 100644 --- a/server/src/core/server/graph/errors.ts +++ b/server/src/core/server/graph/errors.ts @@ -5,7 +5,6 @@ import { CoralError } from "coral-server/errors"; * mapFieldsetToErrorCodes will wait for any errors to occur with the request, * and then associate the appropriate field that caused the error to the error * itself so it can link context in the UI. - * * @param promise the promise to await on for any errors to occur * @param errorMap the map of error codes to associate with a given fieldSet */ diff --git a/server/src/core/server/graph/loaders/Comments.ts b/server/src/core/server/graph/loaders/Comments.ts index 66e743aba8..95761ffb99 100644 --- a/server/src/core/server/graph/loaders/Comments.ts +++ b/server/src/core/server/graph/loaders/Comments.ts @@ -127,7 +127,6 @@ const flattenFilter = ( /** * primeCommentsFromConnection will prime a given context with the comments * retrieved via a connection. - * * @param ctx graph context to use to prime the loaders. */ const primeCommentsFromConnection = @@ -146,7 +145,6 @@ const primeCommentsFromConnection = /** * mapVisibleComment will provide a mapping function that will mark as null each * comment that should not be visible to the target User. - * * @param user the User to determine the visibility status with based on * permissions */ @@ -178,7 +176,6 @@ interface ActionPresenceArgs { /** * mapVisibleComments will map each comment an array to an array of Comment and * null. - * * @param user the User to determine the visibility status with based on * permissions */ diff --git a/server/src/core/server/graph/loaders/Stories.ts b/server/src/core/server/graph/loaders/Stories.ts index dedaad83f9..dc1cb9bc84 100644 --- a/server/src/core/server/graph/loaders/Stories.ts +++ b/server/src/core/server/graph/loaders/Stories.ts @@ -148,7 +148,6 @@ const queryFilter = (query?: string): StoryConnectionInput["filter"] => { /** * primeStoriesFromConnection will prime a given context with the stories * retrieved via a connection. - * * @param ctx graph context to use to prime the loaders. */ const primeStoriesFromConnection = diff --git a/server/src/core/server/graph/loaders/Users.ts b/server/src/core/server/graph/loaders/Users.ts index e3e1337dec..4fdbd28b27 100644 --- a/server/src/core/server/graph/loaders/Users.ts +++ b/server/src/core/server/graph/loaders/Users.ts @@ -83,7 +83,6 @@ const statusFilter = ( /** * primeUsersFromConnection will prime a given context with the users retrieved * via a connection. - * * @param ctx graph context to use to prime the loaders. */ const primeUsersFromConnection = diff --git a/server/src/core/server/graph/loaders/helpers.ts b/server/src/core/server/graph/loaders/helpers.ts index bac0d41f2d..9ba8466d89 100644 --- a/server/src/core/server/graph/loaders/helpers.ts +++ b/server/src/core/server/graph/loaders/helpers.ts @@ -11,7 +11,6 @@ import { GQLFEATURE_FLAG } from "../schema/__generated__/types"; * object as they are not nilable on the database model. If we didn't do this, * then any time that the property is nil, we'd be querying for comments that * can't possibly exist! - * * @param props properties that if nil should be removed from the return object */ export const requiredPropertyFilter = ( diff --git a/server/src/core/server/graph/mutators/Stories.ts b/server/src/core/server/graph/mutators/Stories.ts index adbd2a0595..e47712c65f 100644 --- a/server/src/core/server/graph/mutators/Stories.ts +++ b/server/src/core/server/graph/mutators/Stories.ts @@ -136,7 +136,7 @@ export const Stories = (ctx: GraphContext) => ({ return removeExpert(ctx.mongo, ctx.tenant, input.storyID, input.userID); }, archiveStories: async (input: GQLArchiveStoriesInput) => { - const stories: Readonly[] = []; + const stories: Array> = []; for (const storyID of input.storyIDs) { const markResult = await markStoryForArchiving( @@ -166,7 +166,7 @@ export const Stories = (ctx: GraphContext) => ({ return stories; }, unarchiveStories: async (input: GQLUnarchiveStoriesInput) => { - const stories: Readonly[] = []; + const stories: Array> = []; for (const storyID of input.storyIDs) { const result = await markStoryForUnarchiving( diff --git a/server/src/core/server/graph/mutators/helpers.ts b/server/src/core/server/graph/mutators/helpers.ts index c363004781..55aa674511 100644 --- a/server/src/core/server/graph/mutators/helpers.ts +++ b/server/src/core/server/graph/mutators/helpers.ts @@ -52,7 +52,6 @@ type ResourceModerationScopes = /** * validateUserModerationScopes will validate if the user has access to * moderating the resource indicated by the resource scopes. - * * @param ctx the graph context for this request * @param user the user being evaluated * @param scope scope keys for the documents referencing moderation scopes diff --git a/server/src/core/server/graph/mutators/util.ts b/server/src/core/server/graph/mutators/util.ts index c75345a47e..189a90d335 100644 --- a/server/src/core/server/graph/mutators/util.ts +++ b/server/src/core/server/graph/mutators/util.ts @@ -1,7 +1,6 @@ /** * validateMaximumLength will limit the value of an optional string to the * specified amount, otherwise will throw an error. - * * @param maxLength maximum length to limit a value to * @param value the value that should be limited */ diff --git a/server/src/core/server/graph/persisted/mapper.ts b/server/src/core/server/graph/persisted/mapper.ts index ce5e65b20b..da4ee3be58 100644 --- a/server/src/core/server/graph/persisted/mapper.ts +++ b/server/src/core/server/graph/persisted/mapper.ts @@ -14,7 +14,6 @@ interface Cache { * getPersistedQuery will try to get the persisted query referenced by the * payload and return it if one exists. If a persisted query is referenced, but * non is available, it will throw an error. - * * @param cache the cache to pull the query from * @param payload the payload that references the query that should be read */ diff --git a/server/src/core/server/graph/plugins/helpers.ts b/server/src/core/server/graph/plugins/helpers.ts index e5f6c41543..12f850ed6f 100644 --- a/server/src/core/server/graph/plugins/helpers.ts +++ b/server/src/core/server/graph/plugins/helpers.ts @@ -24,7 +24,6 @@ export interface OperationMetadata { /** * getOperationMetadata will extract the operation metadata from the document * node. - * * @param doc the document node that can be used to extract operation metadata * from */ @@ -60,7 +59,6 @@ interface PersistedQueryOperationMetadata extends OperationMetadata { /** * getPersistedQueryMetadata will remap the persisted query to the operation * metadata. - * * @param persisted persisted query to remap to operation metadata */ export const getPersistedQueryMetadata = ({ @@ -80,7 +78,6 @@ export const getPersistedQueryMetadata = ({ /** * getOriginalError tries to return the original error from a * formatted GraphQL error. - * * @param err A GraphQL Formatted Error */ export const getOriginalError = (err: GraphQLFormattedError) => { @@ -118,7 +115,6 @@ function hoistCoralErrorExtensions( /** * getWrappedOriginalError will pull out the original error if available. - * * @param err the error to have their original error extracted from. * @param ctx the Context to extract the environment state. */ @@ -157,7 +153,6 @@ export function getWrappedOriginalError( /** * enrichAndLogError will enrich and then log out the error. - * * @param ctx the GraphQL context for the request * @param err the error that occurred */ diff --git a/server/src/core/server/graph/resolvers/ModerationQueues.ts b/server/src/core/server/graph/resolvers/ModerationQueues.ts index e126f0a0c9..b3af7e078b 100644 --- a/server/src/core/server/graph/resolvers/ModerationQueues.ts +++ b/server/src/core/server/graph/resolvers/ModerationQueues.ts @@ -47,7 +47,6 @@ const mergeModerationInputFilters = /** * siteModerationInputResolver can be used to retrieve the moderationQueue for * a specific site. - * * @param site the site that will be used to base the comment moderation * queues on */ @@ -67,7 +66,6 @@ export const siteModerationInputResolver = async ( /** * storyModerationInputResolver can be used to retrieve the moderationQueue for * a specific Story. - * * @param story the story that will be used to base the comment moderation * queues on */ @@ -88,7 +86,6 @@ export const storyModerationInputResolver = ( /** * sectionModerationInputResolver can be used to retrieve the moderationQueue for * a specific Story. - * * @param section the section that will be used to base the comment moderation * queues on */ @@ -107,7 +104,6 @@ export const sectionModerationInputResolver = async ( /** * sharedModerationInputResolver implements the resolver function style which * allows it to be used in a type resolver. - * * @param source the source of the type, not used * @param args the args of the type, not used * @param ctx the GraphContext that will be used to get the shared counts @@ -127,7 +123,6 @@ export const sharedModerationInputResolver = async ( * moderationQueuesResolver implements the resolver that resolves to the * shared moderation queues or if `storyID` is provided to the story moderation * queues. - * * @param source the source of the payload, not used * @param args the args of the payload containing potentially a Story ID * @param ctx the GraphContext for which we can use to retrieve the shared data diff --git a/server/src/core/server/graph/resolvers/Queues.ts b/server/src/core/server/graph/resolvers/Queues.ts index a08a48e8e0..538cea0187 100644 --- a/server/src/core/server/graph/resolvers/Queues.ts +++ b/server/src/core/server/graph/resolvers/Queues.ts @@ -5,7 +5,6 @@ import { QueueInput } from "./Queue"; /** * get produces a resolver that maps the context to a QueueInput. - * * @param fn the function to map the ctx to the queue. */ const get = diff --git a/server/src/core/server/graph/resolvers/Subscription/helpers.ts b/server/src/core/server/graph/resolvers/Subscription/helpers.ts index d177f31ba1..c2ff82f532 100644 --- a/server/src/core/server/graph/resolvers/Subscription/helpers.ts +++ b/server/src/core/server/graph/resolvers/Subscription/helpers.ts @@ -49,7 +49,6 @@ export function createSubscriptionChannelName( * responses to ensure that mutations issued by one user is not sent back as a * subscription to the same requesting User, as they already implement the * update via the mutation response. - * * @param source the source for the document passed down, we don't actually need * it here. * @param args the arguments for the specific subscription operation, we don't @@ -77,7 +76,8 @@ function composeFilters( filters.every((filter) => filter(source, args, ctx, info)); } -export interface CreateIteratorInput { +// eslint-disable-next-line @typescript-eslint/no-unused-vars +export interface CreateIteratorInput { filter: FilterFn; } diff --git a/server/src/core/server/graph/resolvers/util.ts b/server/src/core/server/graph/resolvers/util.ts index 0f607fee2a..12cb87d24b 100644 --- a/server/src/core/server/graph/resolvers/util.ts +++ b/server/src/core/server/graph/resolvers/util.ts @@ -10,7 +10,6 @@ import { setCacheHint } from "../setCacheHint"; /** * getRequestedFields returns the fields in an array that are being queried for. - * * @param info query information */ export function getRequestedFields(info: GraphQLResolveInfo) { diff --git a/server/src/core/server/helpers/createTesterWithTimeout.ts b/server/src/core/server/helpers/createTesterWithTimeout.ts index def4b32464..48693c921e 100644 --- a/server/src/core/server/helpers/createTesterWithTimeout.ts +++ b/server/src/core/server/helpers/createTesterWithTimeout.ts @@ -24,7 +24,6 @@ function sumPriorLengths(items: string[], index: number): number { /** * createTesterWithTimeout will create a tester that after the timeout, will * return null instead of a boolean. - * * @param regexp the regular expression to wrap * @param timeout the timeout to use */ @@ -36,7 +35,7 @@ export default function createTesterWithTimeout( const script = new vm.Script("testString.split(regexp)"); // Create a null context object to isolate it with primitives. - const sandbox = Object.create(null); + const sandbox: unknown = Object.create(null); sandbox.regexp = regexp; sandbox.testString = ""; diff --git a/server/src/core/server/helpers/createTimer.ts b/server/src/core/server/helpers/createTimer.ts index 72296661f6..1868a28c8c 100644 --- a/server/src/core/server/helpers/createTimer.ts +++ b/server/src/core/server/helpers/createTimer.ts @@ -1,7 +1,6 @@ /** * createTimer will create a new timer that can be called again to get the * milliseconds since the timer was created. - * */ const createTimer = () => { const start = Date.now(); diff --git a/server/src/core/server/helpers/dataloader.ts b/server/src/core/server/helpers/dataloader.ts index bcd6150d6d..b0b7ea63d8 100644 --- a/server/src/core/server/helpers/dataloader.ts +++ b/server/src/core/server/helpers/dataloader.ts @@ -1,7 +1,6 @@ /** * Maps an array of errors, null, and values to an array of null and values * where the errors are mapped to null. - * * @param values values that could contain errors */ export function mapErrorsToNull( diff --git a/server/src/core/server/index.ts b/server/src/core/server/index.ts index f1b99a9f0c..e218ba96e5 100644 --- a/server/src/core/server/index.ts +++ b/server/src/core/server/index.ts @@ -407,7 +407,6 @@ class Server { /** * start orchestrates the application by starting it and returning a promise * when the server has started. - * * @param parent the optional express application to bind the server to. */ public async start({ parent }: ServerStartOptions) { diff --git a/server/src/core/server/models/action/comment.ts b/server/src/core/server/models/action/comment.ts index df520c2693..9eb52098f0 100644 --- a/server/src/core/server/models/action/comment.ts +++ b/server/src/core/server/models/action/comment.ts @@ -27,6 +27,7 @@ import { GQLReactionActionCounts, } from "coral-server/graph/schema/__generated__/types"; +// eslint-disable-next-line no-shadow export enum ACTION_TYPE { /** * REACTION corresponds to a reaction to a comment from a user. @@ -379,7 +380,7 @@ export async function retrieveManyUserActionPresence( commentIDs: string[], isArchived = false ): Promise { - let actions: Readonly[] = []; + let actions: Array> = []; const cacheAvailable = await commentActionsCache.available(tenantID); if (cacheAvailable) { @@ -499,7 +500,6 @@ export const ACTION_COUNT_JOIN_CHAR = "__"; /** * encodeActionCounts will take a list of actions, and generate action counts * from it. - * * @param actions list of actions to generate the action counts from */ export function encodeActionCounts( @@ -523,7 +523,6 @@ export function encodeActionCounts( /** * invertEncodedActionCounts will allow inverting of the action count object. - * * @param actionCounts the encoded action counts to invert */ export function invertEncodedActionCounts( @@ -693,7 +692,6 @@ export function countTotalActionCounts( /** * decodeActionCounts will take the encoded action counts and decode them into * a useable format. - * * @param encodedActionCounts the action counts to decode */ export function decodeActionCounts( diff --git a/server/src/core/server/models/comment/comment.ts b/server/src/core/server/models/comment/comment.ts index b953b32e6a..b4e73adb52 100644 --- a/server/src/core/server/models/comment/comment.ts +++ b/server/src/core/server/models/comment/comment.ts @@ -314,7 +314,6 @@ export interface EditComment { /** * editComment will edit a comment if it's within the time allotment. - * * @param mongo MongoDB database handle * @param tenantID ID for the Tenant where the Comment exists * @param input input for editing the comment @@ -461,7 +460,6 @@ function cursorGetterFactory( /** * retrieveRepliesConnection returns a Connection for a given comments * replies. - * * @param mongo database connection * @param tenantID the tenant id * @param storyID the id of the story the comment belongs to @@ -490,7 +488,6 @@ export const retrieveCommentRepliesConnection = ( /** * retrieveChildrenForParentConnection returns a Connection for * a given comment's child comments - * * @param mongo database connection * @param tenantID the tenant id * @param storyID the id of the story the comment belongs to @@ -517,7 +514,6 @@ export async function retrieveChildrenForParentConnection( /** * retrieveCommentParentsConnection will return a comment connection used to * represent the parents of a given comment. - * * @param mongo the database connection to use when retrieving comments * @param tenantID the tenant id for where the comment exists * @param comment the comment to retrieve parents of @@ -588,7 +584,6 @@ export async function retrieveCommentParentsConnection( /** * retrieveStoryConnection returns a Connection for a given Stories * comments. - * * @param mongo database connection * @param tenantID the Tenant id * @param storyID the Story id for the comment to retrieve @@ -611,7 +606,6 @@ export const retrieveCommentStoryConnection = ( /** * retrieveCommentUserConnection returns a Connection for a given User's * comments. - * * @param mongo database connection * @param tenantID the Tenant's ID * @param userID the User id for the comment to retrieve @@ -634,7 +628,6 @@ export const retrieveCommentUserConnection = ( /** * retrieveAllCommentUserConnection returns a Connection for a given User's * comments regardless of comment status. - * * @param mongo database connection * @param tenantID the Tenant's ID * @param userID the User id for the comment to retrieve @@ -657,7 +650,6 @@ export const retrieveAllCommentsUserConnection = ( /** * retrieveCommentsBySitesUserConnection returns a Connection for a given User's * comments regardless of comment status, filtered by siteIDs. - * * @param mongo database connection * @param tenantID the Tenant's ID * @param userID the User id for the comment to retrieve @@ -683,7 +675,6 @@ export const retrieveCommentsBySitesUserConnection = ( /** * retrieveRejectedCommentUserConnection returns a Connection for a given User's * rejected comments. - * * @param mongo database connection * @param tenantID the Tenant's ID * @param userID the User id for the comment to retrieve @@ -711,7 +702,6 @@ export const retrieveRejectedCommentUserConnection = ( /** * retrievePublishedCommentConnection will retrieve a connection that contains * comments that are published. - * * @param mongo database connection * @param tenantID the Tenant's ID * @param input connection configuration @@ -731,7 +721,6 @@ export const retrievePublishedCommentConnection = ( /** * retrieveStatusCommentConnection will retrieve a connection that contains * comments with specific statuses. - * * @param mongo database connection * @param tenantID the Tenant's ID * @param statuses the statuses to filter @@ -770,7 +759,6 @@ export async function retrieveCommentConnection( /** * retrieveConnection returns a Connection for the given input and * Query. - * * @param input connection configuration * @param query the Query for the set of nodes that should have the connection * configuration applied @@ -833,7 +821,6 @@ export interface UpdateCommentStatus { /** * updateCommentEmbeddedAt will update with the date at which the comment * was first embedded. - * * @param mongo the database handle * @param tenantID the id of the Tenant * @param id the id of the Comment being embedded @@ -915,7 +902,6 @@ export async function updateCommentStatus( /** * updateCommentActionCounts will update the given comment's action counts. - * * @param mongo the database handle * @param tenantID the id of the Tenant * @param id the id of the Comment being updated @@ -1401,7 +1387,6 @@ export async function retrieveRecentStatusCounts( /** * retrieveOngoingDiscussions will return the id's of stories where the user has * participated in ordered by most recent where the comment's are published. - * * @param mongo the database handle * @param tenantID the ID of the Tenant for which to get story id's for * @param authorID the User's ID for the discussions we want to find @@ -1645,11 +1630,13 @@ export async function retrieveManyStoryRatings( liveStoryIDs ); - let archivedResults: Readonly<{ - _id: string; - average: number; - count: number; - }>[] = []; + let archivedResults: Array< + Readonly<{ + _id: string; + average: number; + count: number; + }> + > = []; if (mongo.archive) { archivedResults = await retrieveManyRatingsFromCollection( mongo.archivedComments(), diff --git a/server/src/core/server/models/comment/counts/shared.ts b/server/src/core/server/models/comment/counts/shared.ts index e328e12cfe..9d34da590f 100644 --- a/server/src/core/server/models/comment/counts/shared.ts +++ b/server/src/core/server/models/comment/counts/shared.ts @@ -44,7 +44,6 @@ interface SharedModerationQueueCountsMatch { /** * recalculateSharedModerationQueueQueueCounts will reset the counts stored for * this Tenant. - * * @param mongo mongodb database handle * @param redis redis database handle * @param tenantID the tenant ID that we are resetting the counts for @@ -111,6 +110,7 @@ export async function recalculateSharedModerationQueueQueueCounts( // twice. await redis .pipeline() + // eslint-disable @typescript-eslint/no-unsafe-argument .hmset(key, ...flatten(Object.entries(queueCounts))) .set(freshKey, now.getTime(), "EX", COUNT_FRESHNESS_EXPIRY_SECONDS) .exec(); @@ -146,7 +146,6 @@ function fillAndConvertStringToNumber< /** * retrieveSharedModerationQueueQueuesCounts will retrieve the count of comments * in each moderation queue for this Tenant. - * * @param mongo mongodb database handle * @param redis redis database handle * @param tenantID the ID of the Tenant that we are getting the shared diff --git a/server/src/core/server/models/comment/helpers.ts b/server/src/core/server/models/comment/helpers.ts index 0bb08c859e..4b561a4b2c 100644 --- a/server/src/core/server/models/comment/helpers.ts +++ b/server/src/core/server/models/comment/helpers.ts @@ -13,7 +13,6 @@ import { Revision } from "./revision"; /** * hasAncestors will check to see if a given comment has any ancestors. - * * @param comment the comment to check the ancestors on */ export function hasAncestors( @@ -25,7 +24,6 @@ export function hasAncestors( /** * hasPublishedStatus will check to see if the comment has a visibility status * where readers could see it. - * * @param comment the comment to check the status on */ export function hasPublishedStatus(comment: Pick): boolean { @@ -38,7 +36,6 @@ export function hasModeratorStatus(comment: Pick): boolean { /** * getLatestRevision will get the latest revision from a Comment. - * * @param comment the comment that contains the revisions */ export function getLatestRevision( @@ -67,7 +64,6 @@ export function hasTag(comment: Pick, tag: GQLTAG) { /** * getDepth will return the depth of the comment. - * * @param comment the comment to check for depth */ export function getDepth( diff --git a/server/src/core/server/models/comment/revision.ts b/server/src/core/server/models/comment/revision.ts index 769477dd13..821466ef7e 100644 --- a/server/src/core/server/models/comment/revision.ts +++ b/server/src/core/server/models/comment/revision.ts @@ -68,18 +68,18 @@ export interface RevisionMetadata { * externalModeration is any details about if and when this comment revision * was analyzed by an external moderation phase. */ - externalModeration?: { + externalModeration?: Array<{ name: string; analyzedAt: Date; result: { status?: GQLCOMMENT_STATUS; tags?: GQLTAG[]; - actions?: { + actions?: Array<{ type?: ACTION_TYPE; reason?: FLAG_REASON; - }[]; + }>; }; - }[]; + }>; } export interface GiphyMedia { diff --git a/server/src/core/server/models/helpers/connection.ts b/server/src/core/server/models/helpers/connection.ts index bf7973a10e..4c0811e1c5 100644 --- a/server/src/core/server/models/helpers/connection.ts +++ b/server/src/core/server/models/helpers/connection.ts @@ -50,7 +50,6 @@ export interface OrderedConnectionInput extends ConnectionInput { /** * createConnection will create a base Connection that can be used to satisfy * the Connection interface. - * * @param connection the base connection to optionally merge with the default base * connection details. */ @@ -129,7 +128,6 @@ export function doesNotContainNull(items: Array): items is T[] { * connection. This will add `1` to the length of elements being retrieved to * determine if there is another page of results to be loaded. The additional * node requested will be trimmed from the connection output. - * * @param query the query to use when retrieving the documents. * @param input the pagination arguments * @param transformer the node transformer which converts a node to a custor @@ -171,7 +169,7 @@ export async function resolveConnection( } export function createEmptyConnection() { - const edges: Edge[] = []; + const edges: Array> = []; const nodes: T[] = []; const pageInfo: PageInfo = { diff --git a/server/src/core/server/models/helpers/query.ts b/server/src/core/server/models/helpers/query.ts index a87537807b..6dedecf7b8 100644 --- a/server/src/core/server/models/helpers/query.ts +++ b/server/src/core/server/models/helpers/query.ts @@ -31,7 +31,6 @@ export default class Query { /** * where will merge the given filter into the existing query. - * * @param filter the filter to merge into the existing query */ public where(filter: FilterQuery): Query { @@ -46,7 +45,6 @@ export default class Query { /** * after will skip the indicated number of documents. - * * @param skip the number of documents to skip */ public after(skip: number): Query { @@ -56,7 +54,6 @@ export default class Query { /** * first will limit to the indicated number of documents. - * * @param limit the number of documents to limit the result to */ public first(limit: number): Query { @@ -66,7 +63,6 @@ export default class Query { /** * orderBy will apply sorting to the query filter when executed. - * * @param sort the sorting option for the documents */ public orderBy(sort: object): Query { diff --git a/server/src/core/server/models/migration/migration.ts b/server/src/core/server/models/migration/migration.ts index 57fb8247f9..726ad50e94 100644 --- a/server/src/core/server/models/migration/migration.ts +++ b/server/src/core/server/models/migration/migration.ts @@ -1,5 +1,6 @@ import { MongoContext } from "coral-server/data/context"; +// eslint-disable-next-line no-shadow export enum MIGRATION_STATE { STARTED = "STARTED", FAILED = "FAILED", @@ -46,7 +47,6 @@ export async function startMigration( /** * updateMigrationState will update the state of a migration record to reflect * the new state as well as un-setting the client ID from the records. - * * @param mongo the database to interact on * @param id the migration version to update * @param state the state to switch the record to diff --git a/server/src/core/server/models/seenComments/seenComments.ts b/server/src/core/server/models/seenComments/seenComments.ts index 78956852e8..6cfed6fdb4 100644 --- a/server/src/core/server/models/seenComments/seenComments.ts +++ b/server/src/core/server/models/seenComments/seenComments.ts @@ -37,7 +37,6 @@ export interface SeenComments extends TenantResource { /** * Find the lookup table for seen comments tied to a user for a specific story. - * * @param mongo is the mongo context where the seen comments lookups are stored. * @param tenantID is the tenant ID we are currently loading a story/user for. * @param findSeenCommentsInput is the storyID and userID to find seen comments list for. @@ -70,7 +69,6 @@ export function reduceCommentIDs(commentIDs: string[], now: Date) { /** * Marks multiple comments as seen for a user. - * * @param mongo is the mongo context used to mark the comments as seen. * @param cache is the data cache used to load cached comments from redis. * @param tenantID is the tenant to filter by for this marking operation. @@ -140,7 +138,7 @@ export async function markSeenCommentsBulk( seenComments: SeenCommentsCollection, now: Date ) { - const operations: any[] = []; + const operations: object[] = []; const keys = seenComments.keys(); for (const { userID, storyID } of keys) { diff --git a/server/src/core/server/models/settings/signingSecret/helpers.ts b/server/src/core/server/models/settings/signingSecret/helpers.ts index e16ff32b31..935aaa20e8 100644 --- a/server/src/core/server/models/settings/signingSecret/helpers.ts +++ b/server/src/core/server/models/settings/signingSecret/helpers.ts @@ -25,7 +25,6 @@ export function generateSigningSecret( /** * isSecretExpired is a function that given a secret and the current date will * return whether the secret has expired. - * * @param secret the secret to test * @param now the current date */ @@ -40,7 +39,6 @@ function isSigningSecretExpired({ inactiveAt }: SigningSecret, now: Date) { /** * filterExpiredSecrets is a filter function that can be used to filter only * secrets that are inactive or expired. - * * @param now the current date */ export function filterExpiredSigningSecrets(now: Date) { @@ -58,7 +56,6 @@ export function filterFreshSigningSecrets() { /** * filterActiveSecrets is a filter function that can be used to filter only * secrets that are active. - * * @param now the current date */ export function filterActiveSigningSecrets(now: Date) { @@ -68,7 +65,6 @@ export function filterActiveSigningSecrets(now: Date) { /** * generateSignature will generate a signature used to assist clients to * validate that the request came from Coral. - * * @param key the secret used to sign the body with * @param data the data to sign */ @@ -79,7 +75,6 @@ function generateSignature(key: string, data: string) { /** * generateSignatures will return a header value that can be used to verify the * integrity and authenticity of a payload sent from Coral. - * * @param signingSecrets the secrets that should be used to sign the data with * @param data the data to sign * @param now the current date diff --git a/server/src/core/server/models/settings/signingSecret/signingSecret.ts b/server/src/core/server/models/settings/signingSecret/signingSecret.ts index 5c0ed9982d..06f44b1789 100644 --- a/server/src/core/server/models/settings/signingSecret/signingSecret.ts +++ b/server/src/core/server/models/settings/signingSecret/signingSecret.ts @@ -93,7 +93,6 @@ interface RotateSigningSecretOptions { /** * getSecretKIDsToDeprecate will return all the keys that should be deprecated * from the first phase of the rolling process. - * * @param signingSecrets the keys returned by the query operation */ const getSecretKIDsToDeprecate = (signingSecrets: SigningSecret[]) => diff --git a/server/src/core/server/models/site/index.ts b/server/src/core/server/models/site/index.ts index c4cb9a512e..97f18cd8f5 100644 --- a/server/src/core/server/models/site/index.ts +++ b/server/src/core/server/models/site/index.ts @@ -38,7 +38,6 @@ export function getURLOrigins(urls: ReadonlyArray) { /** * create will create a new Site. - * * @param mongo the MongoDB connection used to create the Site. * @param input the customizable parts of the Site available during creation */ diff --git a/server/src/core/server/models/story/helpers.ts b/server/src/core/server/models/story/helpers.ts index 8b4a00718c..f220817081 100644 --- a/server/src/core/server/models/story/helpers.ts +++ b/server/src/core/server/models/story/helpers.ts @@ -13,7 +13,6 @@ import { Story } from "./story"; /** * getURLWithCommentID returns the url with the comment id. - * * @param storyURL url of the story * @param commentID id of the comment */ diff --git a/server/src/core/server/models/story/story.ts b/server/src/core/server/models/story/story.ts index d84305ab9b..1fbf54d179 100644 --- a/server/src/core/server/models/story/story.ts +++ b/server/src/core/server/models/story/story.ts @@ -147,7 +147,7 @@ export async function upsertStory( if (!result.ok || !result.value) { throw new UnableToUpdateStoryURL( - result.lastErrorObject, + result.lastErrorObject as MongoError, id, existingStory.url, url @@ -560,6 +560,7 @@ export async function removeStories( }); } +// eslint-disable-next-line no-shadow export enum STORY_SORT { CREATED_AT_DESC = "CREATED_AT_DESC", TEXT_SCORE = "TEXT_SCORE", @@ -667,7 +668,6 @@ export async function updateStoryLastCommentedAt( /** * updateStoryCounts will update the comment counts for the story indicated. - * * @param mongo mongodb database handle * @param tenantID ID of the Tenant where the Story is on * @param id the ID of the Story that we are updating counts on @@ -764,7 +764,6 @@ export async function setStoryMode( /** * retrieveStorySections will return the sections used by stories in the * database for a given Tenant sorted alphabetically. - * * @param mongo the database connection to use to retrieve the data * @param tenantID the ID of the Tenant that we're retrieving data */ @@ -785,7 +784,6 @@ export async function retrieveStorySections( * This is used when we are locking a story to put it into an archiving state. * We currently use this for the markStoryForArchiving and the * retrieveStoryToBeArchived functions to avoid duplication of the $set logic. - * * @param now the time we are archiving at * @returns the $set param for marking a story as currently in an archiving * state. @@ -913,7 +911,7 @@ export async function retrieveStoriesToBeArchived( olderThan: Date, now: Date, count: number -): Promise[]> { +): Promise>> { const start = Date.now(); const cursor = mongo @@ -923,7 +921,7 @@ export async function retrieveStoriesToBeArchived( }) .sort({ createdAt: -1 }); - const results: Readonly[] = []; + const results: Array> = []; let scanned = 0; while (await cursor.hasNext()) { diff --git a/server/src/core/server/models/tenant/helpers.ts b/server/src/core/server/models/tenant/helpers.ts index e8063d8d96..e4cca46fbc 100644 --- a/server/src/core/server/models/tenant/helpers.ts +++ b/server/src/core/server/models/tenant/helpers.ts @@ -37,7 +37,6 @@ export const getDefaultBadgeConfiguration = ( /** * hasFeatureFlag will check to see if the Tenant has a particular feature flag * enabled. - * * @param tenant the Tenant to test for a feature flag * @param flag the FEATURE_FLAG to check for */ diff --git a/server/src/core/server/models/tenant/tenant.ts b/server/src/core/server/models/tenant/tenant.ts index 8191e47795..c7f21d139d 100644 --- a/server/src/core/server/models/tenant/tenant.ts +++ b/server/src/core/server/models/tenant/tenant.ts @@ -38,6 +38,7 @@ import { /** * LEGACY_FEATURE_FLAGS are feature flags, that are no longer used. */ +// eslint-disable-next-line no-shadow export enum LEGACY_FEATURE_FLAGS { ENABLE_AMP = "ENABLE_AMP", FLATTEN_REPLIES = "FLATTEN_REPLIES", @@ -139,7 +140,6 @@ export interface TenantComputedProperties { } /** * create will create a new Tenant. - * * @param mongo the MongoDB connection used to create the tenant. * @param i18n i18n instance * @param input the customizable parts of the Tenant available during creation diff --git a/server/src/core/server/models/tenant/webhookEndpoint.ts b/server/src/core/server/models/tenant/webhookEndpoint.ts index 607f9991b5..59cadd7b34 100644 --- a/server/src/core/server/models/tenant/webhookEndpoint.ts +++ b/server/src/core/server/models/tenant/webhookEndpoint.ts @@ -203,7 +203,6 @@ function lastUsedAtTenantSSOSigningSecret(id: string): string { /** * updateLastUsedAtTenantSSOSigningSecret will update the time stamp that the * SSO key was last used at. - * * @param redis the Redis connection to use to update the timestamp on * @param id the ID of the Tenant * @param kid the kid of the token that was used @@ -223,7 +222,6 @@ export async function updateLastUsedAtTenantSSOSigningSecret( } /** - * * @param redis the Redis connection to use to remove the last used on. * @param id the ID of the Tenant * @param kid the kid of the token that is being deleted @@ -239,7 +237,6 @@ export async function deleteLastUsedAtTenantSSOSigningSecret( /** * retrieveLastUsedAtTenantSSOSigningSecrets will get the dates that the * requested sso keys were last used on. - * * @param redis the Redis connection to use to update the timestamp on * @param id the ID of the Tenant * @param kids the kids of the tokens that we want to know when they were last used diff --git a/server/src/core/server/models/user/helpers.ts b/server/src/core/server/models/user/helpers.ts index 5790720ac3..90088bf762 100644 --- a/server/src/core/server/models/user/helpers.ts +++ b/server/src/core/server/models/user/helpers.ts @@ -34,7 +34,6 @@ export function hasModeratorRole(user: Pick) { /** * isSiteBanned is used to determine if the user is banned on the specific site. - * * @param user the user to test if they are banned on a site * @param siteID id of the site to check to see if the user is banned on */ @@ -48,7 +47,6 @@ export function isSiteBanned( /** * canModerateUnscoped will check if a given user is unscoped (without any * restrictions) on their moderation capacity. - * * @param user the user being checked for moderation scopes */ export function canModerateUnscoped( @@ -80,7 +78,6 @@ export interface ModerationScopeResource { /** * canModerate checks against the moderation scopes to determine if the current * user can moderate the given scope. - * * @param user the user to check moderation scopes on * @param scopes the scopes to check against */ @@ -146,7 +143,6 @@ export function needsSSOUpdate( /** * getLocalProfile will get the LocalProfile from the User if it exists. - * * @param user the User to pull the LocalProfile out of */ export function getLocalProfile( @@ -168,7 +164,6 @@ export function getLocalProfile( /** * hasLocalProfile will return true if the User has a LocalProfile, optionally * checking the email on it as well. - * * @param user the User to pull the LocalProfile out of * @param withEmail when specified, will ensure that the LocalProfile has the * specific email provided @@ -188,7 +183,6 @@ export function hasLocalProfile( /** * hasSSOProfile will return true if the User has an SSOProfile and false * if they do not. - * * @param user the User to pull the SSOProfile out of */ export function hasSSOProfile(user: Pick): boolean { diff --git a/server/src/core/server/models/user/user.ts b/server/src/core/server/models/user/user.ts index 4488781bee..0731ea09db 100644 --- a/server/src/core/server/models/user/user.ts +++ b/server/src/core/server/models/user/user.ts @@ -643,7 +643,6 @@ export interface FindOrCreateUserInput { /** * findOrCreateUserInput converts the FindOrCreateUserInput input into aUse. - * * @param tenantID ID of the Tenant to create the user for * @param input the input for creating a User * @param now the current date @@ -877,7 +876,6 @@ export async function retrieveUserWithEmail( /** * updateUserRole updates a given User's role. - * * @param mongo mongodb database to interact with * @param tenantID Tenant ID where the User resides * @param id ID of the User that we are updating @@ -1260,7 +1258,6 @@ export async function updateUserFromSSO( /** * setUserUsername will set the username of the User if the username hasn't * already been used before. - * * @param mongo the database handle * @param tenantID the ID to the Tenant * @param id the ID of the User where we are setting the username on @@ -1311,7 +1308,6 @@ export async function setUserUsername( /** * updateUsername will set the username of the User. - * * @param mongo the database handle * @param tenantID the ID to the Tenant * @param id the ID of the User where we are setting the username on @@ -1366,7 +1362,6 @@ export async function updateUserUsername( /** * setUserEmail will set the email address of the User if they don't already * have one associated with them, and it hasn't been used before. - * * @param mongo the database handle * @param tenantID the ID to the Tenant * @param id the ID of the User where we are setting the email address on @@ -1430,7 +1425,6 @@ export async function setUserEmail( /** * updateUserEmail will update a given User's email address to the one provided. - * * @param mongo the database that we are interacting with * @param tenantID the Tenant ID of the Tenant where the User exists * @param id the User ID that we are updating @@ -1487,7 +1481,6 @@ export async function updateUserEmail( /** * updateUserBio will update the bio associated with a User. If the bio * is not provided, it will be unset. - * * @param mongo the database that we are interacting with * @param tenantID the Tenant ID of the Tenant where the User exists * @param id the User ID that we are updating @@ -1534,7 +1527,6 @@ export async function updateUserBio( /** * updateUserAvatar will update the avatar associated with a User. If the avatar * is not provided, it will be unset. - * * @param mongo the database that we are interacting with * @param tenantID the Tenant ID of the Tenant where the User exists * @param id the User ID that we are updating @@ -1582,7 +1574,6 @@ export async function updateUserAvatar( * setUserLocalProfile will set the local profile for a User if they don't * already have one associated with them and the profile doesn't exist on any * other User already. - * * @param mongo the database handle * @param tenantID the ID to the Tenant * @param id the ID of the User where we are setting the local profile on @@ -1826,7 +1817,6 @@ async function retrieveConnection( /** * premodUser will set a user to mandatory premod. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user being banned @@ -1891,7 +1881,6 @@ export async function premodUser( /** * removeUserPremod will lift a user premod requirement - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user having their ban lifted @@ -2005,7 +1994,6 @@ export async function siteBanUser( /** * banUser will ban a specific user from interacting with the site. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user being banned @@ -2120,7 +2108,6 @@ export async function removeUserSiteBan( /** * removeUserBan will lift a user ban from a User allowing them to interact with * the site again. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user having their ban lifted @@ -2194,7 +2181,6 @@ export async function removeUserBan( /** * suspendUser will suspend a user for a specific time range from interacting * with the site. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user being suspended @@ -2277,7 +2263,6 @@ export async function suspendUser( /** * removeUserSuspensions will lift any active suspensions. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the User having their suspension lifted @@ -2398,7 +2383,6 @@ export async function warnUser( /** * removeUserWarning will remove a warning from a User allowing them to interact with * the site again. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user having their warning removed @@ -2468,7 +2452,6 @@ export async function removeUserWarning( /** * acknowledgeWarning will remove a warning from a User allowing them to interact with * the site again. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user having their warning removed @@ -2578,7 +2561,6 @@ export async function sendModMessageUser( /** * acknowledgeOwnModMessage will acknowledge a moderation message that was * sent to the user. - * * @param mongo the mongo database handle * @param tenantID the Tenant's ID where the User exists * @param id the ID of the user having their warning removed @@ -2776,7 +2758,6 @@ export function consolidateUserStatus( /** * createOrRetrieveUserPasswordResetID will create/retrieve a password reset ID * on the User. - * * @param mongo MongoDB instance to interact with * @param tenantID Tenant ID that the User exists on * @param id ID of the User that we are creating a reset ID with @@ -3206,7 +3187,6 @@ export async function updateUserMediaSettings( /** * insertUserNotificationDigests will push the notification contexts onto the * User so that notifications can now be queued. - * * @param mongo the database to put the notification digests into * @param tenantID the ID of the Tenant that this User exists on * @param id the ID of the User to insert the digests onto @@ -3261,7 +3241,6 @@ export async function insertUserNotificationDigests( /** * pullUserNotificationDigests will pull notification digests for a given User * so it can be added to the mailer queue. - * * @param mongo the database to pull digests from * @param tenantID the tenant ID to pull digests for * @param frequency the frequency that we're scanning for to limit the digest @@ -3291,7 +3270,6 @@ export async function pullUserNotificationDigests( /** * retrieveUserScheduledForDeletion will return a user that is scheduled for * deletion as well as create a reschedule date in the future. - * * @param mongo the database to pull scheduled users to delete from * @param tenantID the tenant ID to pull users that have been scheduled for * deletion on @@ -3331,7 +3309,6 @@ export async function retrieveLockedUserScheduledForDeletion( /** * createModeratorNote will add a note to a users account - * * @param mongo the database to put the notification digests into * @param tenantID the ID of the Tenant that this User exists on * @param id the ID of the User who is the subject of the note @@ -3375,7 +3352,6 @@ export async function createModeratorNote( /** * deleteModeratorNote will remove a note from a user profile - * * @param mongo the database to put the notification digests into * @param tenantID the ID of the Tenant that this User exists on * @param userID the ID of the user diff --git a/server/src/core/server/queue/Task.ts b/server/src/core/server/queue/Task.ts index 90e517c319..bcf56f6b40 100644 --- a/server/src/core/server/queue/Task.ts +++ b/server/src/core/server/queue/Task.ts @@ -73,7 +73,6 @@ export default class Task { /** * Add will add the job to the queue to get processed. It's not needed to * handle the job after it has been created. - * * @param data the data for the job to add. */ public async add(data: T): Promise | undefined> { diff --git a/server/src/core/server/queue/tasks/mailer/content.ts b/server/src/core/server/queue/tasks/mailer/content.ts index 21a0218a50..da26e23ad3 100644 --- a/server/src/core/server/queue/tasks/mailer/content.ts +++ b/server/src/core/server/queue/tasks/mailer/content.ts @@ -21,7 +21,6 @@ export interface MailerContentOptions { /** * render will render the nunjucks template using the provided environment. - * * @param env the nunjucks rendering environment * @param template the template to render */ @@ -67,7 +66,6 @@ export default class MailerContent { /** * getEnvironment will get the environment from the cache if it exists, or * create it, and add it to the cache otherwise. - * * @param tenant the Tenant to generate the environment for */ private getEnvironment(tenant: Pick): nunjucks.Environment { @@ -88,10 +86,9 @@ export default class MailerContent { /** * generateHTML will generate the HTML for a template and optionally cache * the compiled template based on the configured environment. - * * @param tenant the tenant * @param template the HTML email template - **/ + */ public async generateHTML( tenant: Tenant, template: EmailTemplate diff --git a/server/src/core/server/queue/tasks/mailer/processor.ts b/server/src/core/server/queue/tasks/mailer/processor.ts index a2c42fb21a..a0052d277b 100644 --- a/server/src/core/server/queue/tasks/mailer/processor.ts +++ b/server/src/core/server/queue/tasks/mailer/processor.ts @@ -79,7 +79,6 @@ function send(client: SMTPClient, message: Message): Promise { /** * juiceHTML will juice the HTML to inline the CSS and minify it. - * * @param input html string to juice */ export function juiceHTML(input: string) { @@ -108,7 +107,6 @@ function createMessageTranslator(i18n: I18n) { /** * translateMessage will translate the message to the specified locale as well * a juice the contents. - * * @param tenant the tenant * @param templateName the name of the template to base the translations off of * @param locale the locale to translate the email content into @@ -147,7 +145,7 @@ function createMessageTranslator(i18n: I18n) { } // Configure the purification. - const purify = createDOMPurify(dom.window as any); + const purify = createDOMPurify(dom.window as unknown); // Strip the l10n attributes from the email HTML. purify.sanitize(dom.window.document.documentElement, { @@ -238,11 +236,15 @@ export const createJobProcessor = ( const translateMessage = createMessageTranslator(i18n); return async (job) => { - const { value: data, error: err } = MailerDataSchema.validate(job.data, { - stripUnknown: true, - presence: "required", - abortEarly: false, - }); + const { + value: data, + error: err, + }: { value: MailerData; error?: Joi.ValidationError } = + MailerDataSchema.validate(job.data, { + stripUnknown: true, + presence: "required", + abortEarly: false, + }); if (err) { logger.error( { @@ -310,7 +312,10 @@ export const createJobProcessor = ( data ); } catch (e) { - throw new WrappedInternalError(e, "could not translate the message"); + throw new WrappedInternalError( + e as Error, + "could not translate the message" + ); } log.trace( @@ -356,7 +361,10 @@ export const createJobProcessor = ( // Create the transport based on the smtp uri. transport = new SMTPClient(opts); } catch (e) { - throw new WrappedInternalError(e, "could not create email transport"); + throw new WrappedInternalError( + e as Error, + "could not create email transport" + ); } // Set the transport back into the cache. @@ -385,10 +393,16 @@ export const createJobProcessor = ( log.warn({ err: e }, "reset smtp transport due to a send error"); if (isLastAttempt(job)) { - throw new WrappedInternalError(e, "could not send email, not retrying"); + throw new WrappedInternalError( + e as Error, + "could not send email, not retrying" + ); } - throw new WrappedInternalError(e, "could not send email, will retry"); + throw new WrappedInternalError( + e as Error, + "could not send email, will retry" + ); } // Increment the sent email counter. diff --git a/server/src/core/server/queue/tasks/notifier/processor.ts b/server/src/core/server/queue/tasks/notifier/processor.ts index 57b1afd647..1e9278f560 100644 --- a/server/src/core/server/queue/tasks/notifier/processor.ts +++ b/server/src/core/server/queue/tasks/notifier/processor.ts @@ -49,7 +49,6 @@ export interface CategoryNotification { * createJobProcessor creates the processor that is used to process the * possible notifications and queueing them up in the mailer if they need to be * sent. - * * @param options options for the processor */ export const createJobProcessor = diff --git a/server/src/core/server/services/comments/comments.ts b/server/src/core/server/services/comments/comments.ts index 93cd27a62a..4863bd8ec8 100644 --- a/server/src/core/server/services/comments/comments.ts +++ b/server/src/core/server/services/comments/comments.ts @@ -42,7 +42,6 @@ export function getCollection( /** * getCommentEditableUntilDate will return the date that the given comment is * still editable until. - * * @param tenant the tenant that contains settings related editing * @param createdAt the date that is the base, defaulting to the current time */ @@ -57,7 +56,6 @@ export function getCommentEditableUntilDate( /** * addTag will add a tag to the comment. - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param commentID is the comment we are adding a tag to. @@ -105,7 +103,6 @@ export async function addTag( /** * removeTag will remove a specific tag type from a comment. - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param commentID is the comment identifier we are removing the tag from. @@ -139,7 +136,6 @@ export async function removeTag( * retrieves a comment from the mongo context. If archiving is enabled and it * cannot find the comment within the live comments, it will try and find it in * the archived comments. - * * @param mongo is the mongo context. * @param tenantID is the filtering tenant for this comment. * @param id is the identifier of the comment we want to retrieve. @@ -180,7 +176,6 @@ export async function retrieveComment( /** * retrieves many comments from mongo. This will search both live and archived * comments if the archive database is available. - * * @param mongo is the mongo context used to retrieve comments from. * @param tenantID is the filtering tenant for this comment set. * @param ids are the ids of the comments we want to retrieve. @@ -219,7 +214,6 @@ export async function retrieveManyComments( /** * retrieves a comment connection for the provided input. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param input is the filtered input to determine which comments to @@ -240,7 +234,6 @@ export async function retrieveCommentConnection( /** * retrieves a comment connection for the provided input specific to a user. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param input is the filtered input to determine which comments to @@ -267,7 +260,6 @@ export function retrieveCommentUserConnection( /** * retrieves a comment connection for all comments associated with a user. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param userID is the filtering user id for this connection. @@ -296,7 +288,6 @@ export function retrieveAllCommentsUserConnection( /** * retrieveCommentsBySitesUserConnection retrieves a comment connection for * comments associated with a user filtered by site. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param userID is the filtering user id for this connection. @@ -327,7 +318,6 @@ export function retrieveCommentsBySitesUserConnection( /** * retrieves a comment connection for the rejected comments of a user. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param input is the filtered input to determine which comments to @@ -356,7 +346,6 @@ export function retrieveRejectedCommentUserConnection( /** * retrieves a comment connection for a specific story. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param storyID is the story we are retrieving comments for. @@ -386,7 +375,6 @@ export async function retrieveCommentStoryConnection( /** * retrieves a comment connection for the replies to a certain comment. - * * @param mongo is the mongo context used to retrieve the comments. * @param tenantID is the filtering tenant id for this connection. * @param storyID is the story we are retrieving comments for. @@ -417,7 +405,6 @@ export function retrieveCommentRepliesConnection( /** * retrieves the parent comments for a comment. - * * @param mongo is the mongo context we retrieve comments from. * @param tenantID is the filtering tenant for these comments. * @param comment is the comment we want to find parents for. @@ -445,7 +432,6 @@ export function retrieveCommentParentsConnection( /** * retrieves all child comments for a comment. - * * @param mongo is the mongo context we retrieve comments from. * @param tenantID is the filtering tenant for these comments. * @param comment is the comment we want to find all child comments for. diff --git a/server/src/core/server/services/comments/pipeline/createServerWordListRegEx.ts b/server/src/core/server/services/comments/pipeline/createServerWordListRegEx.ts index 4257e73968..2a6782002e 100644 --- a/server/src/core/server/services/comments/pipeline/createServerWordListRegEx.ts +++ b/server/src/core/server/services/comments/pipeline/createServerWordListRegEx.ts @@ -23,7 +23,6 @@ export const WordListRules: DeepPartial> = { /** * Escape string for special regular expression characters. - * * @param str the string to escape from regex characters */ export function escapeRegExp(str: string) { @@ -34,7 +33,6 @@ export function escapeRegExp(str: string) { /** * generateRegExp will generate the tester that can be used to test strings * for matches on phrases. - * * @param lang the language to possibly swap word list rules * @param phrases the phrases to use for creating the expression */ diff --git a/server/src/core/server/services/comments/pipeline/phases/external.ts b/server/src/core/server/services/comments/pipeline/phases/external.ts index 93f7c8b272..41e6dce79f 100644 --- a/server/src/core/server/services/comments/pipeline/phases/external.ts +++ b/server/src/core/server/services/comments/pipeline/phases/external.ts @@ -129,7 +129,6 @@ const ExternalModerationResponseSchema = Joi.object().keys({ /** * validate will validate the `ExternalModerationResponse`. - * * @param body the input body that is being coerced into an `ExternalModerationResponse`. */ export function validateResponse(body: object): ExternalModerationResponse { @@ -154,7 +153,6 @@ const fetch = createFetch({ name: "Moderation" }); /** * processPhase will execute the request for moderation for this particular * phase. - * * @param ctx the context for the moderation request. * @param phase the current phase associated with this request. */ @@ -231,7 +229,7 @@ async function processPhase( } // Try to parse the response as JSON. - const body = JSON.parse(text); + const body: object = JSON.parse(text); // Remove the expired secrets in the next tick so that it does not affect // the sending performance of this job, and errors do not impact the diff --git a/server/src/core/server/services/comments/pipeline/wordList.ts b/server/src/core/server/services/comments/pipeline/wordList.ts index cba68230cf..bd914dfd74 100644 --- a/server/src/core/server/services/comments/pipeline/wordList.ts +++ b/server/src/core/server/services/comments/pipeline/wordList.ts @@ -31,15 +31,18 @@ export class WordList { * collection system. */ private readonly cache = new WeakMap(); - private readonly sanitizer = createSanitize(new JSDOM("", {}).window as any, { - // We need normalized text nodes to mark nodes for suspect/banned words. - normalize: true, - // Allow all RTE features to be displayed. - features: ALL_FEATURES, - config: { - FORBID_TAGS: WORDLIST_FORBID_TAGS, - }, - }); + private readonly sanitizer = createSanitize( + new JSDOM("", {}).window as unknown, + { + // We need normalized text nodes to mark nodes for suspect/banned words. + normalize: true, + // Allow all RTE features to be displayed. + features: ALL_FEATURES, + config: { + FORBID_TAGS: WORDLIST_FORBID_TAGS, + }, + } + ); private generate(locale: LanguageCode, list: string[], timeout: number) { // If a word list has no entries, then we can make a simple tester. @@ -57,7 +60,6 @@ export class WordList { /** * create will create the List's. - * * @param options options used to generate Lists */ private create(options: Options, timeout: number): Lists { @@ -70,7 +72,6 @@ export class WordList { /** * lists will create/return a cached set of testers for the provided word * lists. - * * @param options the options object that is also used as the cache key */ private lists(options: Options, cache: boolean, timeout: number): Lists { @@ -100,7 +101,6 @@ export class WordList { /** * test will test the string against the selected list. The generated lists * are cached and re-used on subsequent calls. - * * @param options the options object that is also used as the cache key * @param listName the list to test against * @param timeout the length of time that the test should wait for before diff --git a/server/src/core/server/services/dsaReports/reports.ts b/server/src/core/server/services/dsaReports/reports.ts index 064a2ebacc..504682fa21 100644 --- a/server/src/core/server/services/dsaReports/reports.ts +++ b/server/src/core/server/services/dsaReports/reports.ts @@ -39,7 +39,6 @@ export interface CreateDSAReportInput { /** * createDSAReport creates a new DSAReport - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param input is the input used for creating the DSAReport @@ -65,7 +64,6 @@ export interface AddDSAReportNoteInput { /** * addDSAReportNote adds a note to the history of a DSAReport - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param input is the input used for adding the note @@ -90,7 +88,6 @@ export interface AddDSAReportShareInput { /** * addDSAReportNote adds a share item to the history of a DSAReport - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param input is the input used for adding the share item @@ -115,7 +112,6 @@ export interface DeleteDSAReportNoteInput { /** * deleteDSAReportNote deletes a note from the history of a DSAReport - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param input is the input used for deleting the note @@ -141,7 +137,6 @@ export interface ChangeDSAReportStatusInput { /** * changeDSAReportStatus changes the status of a DSAReport * and also adds the status change to its history - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param input is the input used for changing the status @@ -171,7 +166,6 @@ export interface MakeDSAReportDecisionInput { /** * makeDSAReportDecison makes an illegal vs legal decision for a DSAReport * and also adds the decision to its history - * * @param mongo is the mongo context. * @param tenant is the filtering tenant for this operation. * @param input is the input used for making the decision diff --git a/server/src/core/server/services/errors/reporter.ts b/server/src/core/server/services/errors/reporter.ts index 7ed5c37eb2..9fe0c17a97 100644 --- a/server/src/core/server/services/errors/reporter.ts +++ b/server/src/core/server/services/errors/reporter.ts @@ -20,7 +20,6 @@ export abstract class ErrorReporter { /** * shouldReport will return if a particular error should be reported to the * reporter. - * * @param err the error to test if it should be reported or not. */ public shouldReport(err: any): boolean { diff --git a/server/src/core/server/services/giphy/giphy.ts b/server/src/core/server/services/giphy/giphy.ts index e6577920ea..daea517168 100644 --- a/server/src/core/server/services/giphy/giphy.ts +++ b/server/src/core/server/services/giphy/giphy.ts @@ -74,7 +74,6 @@ export function ratingIsAllowed(rating: string, tenant: Tenant) { /** * convertLanguage returns the language code for the related Perspective API * model in the ISO 631-1 format. - * * @param locale the language on the tenant in the BCP 47 format. */ function convertLanguage(locale: LanguageCode): GiphyLanguage { diff --git a/server/src/core/server/services/i18n/index.ts b/server/src/core/server/services/i18n/index.ts index b0fedf2fa2..84d25b5a91 100644 --- a/server/src/core/server/services/i18n/index.ts +++ b/server/src/core/server/services/i18n/index.ts @@ -11,7 +11,6 @@ import logger from "coral-server/logger"; /** * isLanguageCode will return true if the string is a `LanguageCode`. - * * @param locale the string that is being tested if it's a `LanguageCode` */ function isLanguageCode(locale: string): locale is LanguageCode { @@ -77,7 +76,6 @@ export class I18n { /** * getBundle will return a bundle keyed on the language. - * * @param lang the locale to get the bundle for */ public getBundle(lang: LanguageCode): FluentBundle { @@ -107,7 +105,6 @@ export class I18n { /** * translate will attempt a translation but fallback to the defaultValue if it * can't be translated. - * * @param bundle the bundle to use for translations * @param defaultValue the default value if the message or translation isn't * available diff --git a/server/src/core/server/services/jwt/index.ts b/server/src/core/server/services/jwt/index.ts index e48cb0fdce..44affa74a9 100644 --- a/server/src/core/server/services/jwt/index.ts +++ b/server/src/core/server/services/jwt/index.ts @@ -160,6 +160,7 @@ export const StandardClaimsSchema = Joi.object().keys({ iat: Joi.number(), }); +// eslint-disable-next-line no-shadow export enum AsymmetricSigningAlgorithm { RS256 = "RS256", RS384 = "RS384", @@ -169,6 +170,7 @@ export enum AsymmetricSigningAlgorithm { ES512 = "ES512", } +// eslint-disable-next-line no-shadow export enum SymmetricSigningAlgorithm { HS256 = "HS256", HS384 = "HS384", @@ -300,7 +302,6 @@ export async function signString( /** * isExpressRequest will check to see if this is a Request or an * IncomingMessage. - * * @param req a request to test if it is an Express Request or not. */ export function isExpressRequest( @@ -342,7 +343,6 @@ export function isExpressRequest( // } /** - * * @param req the request to extract the JWT from * @param excludeQuery when true, does not pull from the query params */ @@ -366,7 +366,6 @@ function extractJWTFromRequestHeaders( /** * extractJWTFromRequest will extract the token from the request if it can find * it. It will try to extract the token from the headers. - * * @param req the request to extract the JWT from * @param excludeQuery when true, does not pull from the query params */ @@ -386,7 +385,6 @@ function generateJTIRevokedKey(jti: string) { /** * revokeJWT will place the token into a blacklist until it expires. - * * @param redis the Redis instance to revoke the JWT with * @param jti the JTI claim of the JWT token being revoked * @param exp time that the token expired at @@ -414,7 +412,6 @@ export async function revokeJWT( /** * isJWTRevoked will check to see if the given token referenced by the JWT has * been revoked or not. - * * @param redis the Redis instance to check to see if the token was revoked * @param jti the JTI claim of the JWT token being tested */ @@ -430,7 +427,6 @@ export async function isJWTRevoked(redis: Redis, jti: string) { /** * checkJWTRevoked will test the JWT's JTI to see if it's revoked, if it is, it * will throw an error. - * * @param redis the Redis instance to check to see if the token was revoked * @param jti the JTI claim of the JWT token being tested */ @@ -457,7 +453,7 @@ export function verifyJWT( tokenString, "token validation error", undefined, - err + err as Error ); } } @@ -470,7 +466,7 @@ export function decodeJWT(tokenString: string) { tokenString, "token validation error", undefined, - err + err as Error ); } } diff --git a/server/src/core/server/services/migrate/indexing.ts b/server/src/core/server/services/migrate/indexing.ts index 09c674ce4d..00570d9331 100644 --- a/server/src/core/server/services/migrate/indexing.ts +++ b/server/src/core/server/services/migrate/indexing.ts @@ -67,7 +67,6 @@ export function createConnectionOrderVariants( /** * createIndexVariant will create a variant on the specified `indexSpec` that * will include the new variation. - * * @param variantSpec the spec that makes this variant different */ const createIndexVariant = (variantSpec: IndexSpecification) => diff --git a/server/src/core/server/services/migrate/manager.ts b/server/src/core/server/services/migrate/manager.ts index 09ed1649aa..f5cd9d3d7b 100644 --- a/server/src/core/server/services/migrate/manager.ts +++ b/server/src/core/server/services/migrate/manager.ts @@ -106,7 +106,6 @@ export default class Manager { /** * pending will return the pending migrations that need to be completed. - * * @param mongo the database handle to use to get the migrations */ private async pending(mongo: MongoContext): Promise { diff --git a/server/src/core/server/services/migrate/migrations/1579189174931_create_sites.ts b/server/src/core/server/services/migrate/migrations/1579189174931_create_sites.ts index 6c35c050d7..75801e0134 100644 --- a/server/src/core/server/services/migrate/migrations/1579189174931_create_sites.ts +++ b/server/src/core/server/services/migrate/migrations/1579189174931_create_sites.ts @@ -135,11 +135,11 @@ export default class extends Migration { // Recalculate the action counts for the stories. const cursor = mongo.commentActions().aggregate<{ _id: string; - actions: { + actions: Array<{ actionType: ACTION_TYPE; reason?: FLAG_REASON; sum: number; - }[]; + }>; }>([ // Find all actions related to this Tenant. { $match: { tenantID: tenant.id } }, diff --git a/server/src/core/server/services/mongodb/index.ts b/server/src/core/server/services/mongodb/index.ts index fb5d8e8c21..faadd1bd97 100644 --- a/server/src/core/server/services/mongodb/index.ts +++ b/server/src/core/server/services/mongodb/index.ts @@ -10,7 +10,10 @@ async function createMongoClient(mongoURI: string): Promise { ignoreUndefined: true, }); } catch (err) { - throw new WrappedInternalError(err, "could not connect to mongodb"); + throw new WrappedInternalError( + err as Error, + "could not connect to mongodb" + ); } } @@ -31,7 +34,6 @@ function attachHandlers(db: Db) { /** * create will connect to the MongoDB instance identified in the configuration. - * * @param config application configuration. */ export async function createMongoDB(mongoURI: string): Promise { diff --git a/server/src/core/server/services/notifications/email/categories/category.ts b/server/src/core/server/services/notifications/email/categories/category.ts index 0b6e23fd03..f318a9d111 100644 --- a/server/src/core/server/services/notifications/email/categories/category.ts +++ b/server/src/core/server/services/notifications/email/categories/category.ts @@ -27,7 +27,7 @@ export interface NotificationCategory { * events is the subscription event that when fired, will trigger this * notification processor to be called. */ - events: T["type"][]; + events: Array; /** * digestOrder, when provided, allows the custom ordering of notifications in diff --git a/server/src/core/server/services/notifications/email/context.ts b/server/src/core/server/services/notifications/email/context.ts index 6857d3cc70..d7245b434f 100644 --- a/server/src/core/server/services/notifications/email/context.ts +++ b/server/src/core/server/services/notifications/email/context.ts @@ -98,7 +98,6 @@ export default class NotificationContext { /** * generateUnsubscribeURL will generate a unsubscribe token. - * * @param user the user to generate the unsubscribe token for */ public async generateUnsubscribeURL(user: Pick) { @@ -133,7 +132,6 @@ export default class NotificationContext { * digest will return an `asyncIterator` that can be used to iterate over all * the users on a Tenant that have digests available configured with the given * frequency. - * * @param frequency the frequency to get the digests for */ public digest(frequency: GQLDIGEST_FREQUENCY) { diff --git a/server/src/core/server/services/oidc/discover.ts b/server/src/core/server/services/oidc/discover.ts index 085679bf66..548686b12c 100644 --- a/server/src/core/server/services/oidc/discover.ts +++ b/server/src/core/server/services/oidc/discover.ts @@ -33,7 +33,6 @@ const fetch = createFetch({ name: "OIDC" }); /** * discover will discover the configuration for the issuer. - * * @param issuer the Issuer URL that should be used to determine the * configuration */ diff --git a/server/src/core/server/services/perspective/perspective.ts b/server/src/core/server/services/perspective/perspective.ts index 8eed732081..8801f01537 100644 --- a/server/src/core/server/services/perspective/perspective.ts +++ b/server/src/core/server/services/perspective/perspective.ts @@ -21,7 +21,6 @@ type PerspectiveLanguage = "en" | "es" | "fr" | "de" | "pt"; /** * convertLanguage returns the language code for the related Perspective API * model in the ISO 631-1 format. - * * @param locale the language on the tenant in the BCP 47 format. */ function convertLanguage(locale: LanguageCode): PerspectiveLanguage { diff --git a/server/src/core/server/services/queries/cache.ts b/server/src/core/server/services/queries/cache.ts index d6545f48e3..cb94d7808a 100644 --- a/server/src/core/server/services/queries/cache.ts +++ b/server/src/core/server/services/queries/cache.ts @@ -79,7 +79,6 @@ export class PersistedQueryCache { /** * get will retrieve a given PersistedQuery by ID. - * * @param id the ID of the persisted query to load */ public async get(id: string) { diff --git a/server/src/core/server/services/redis/index.ts b/server/src/core/server/services/redis/index.ts index 08397306ed..139c417d29 100644 --- a/server/src/core/server/services/redis/index.ts +++ b/server/src/core/server/services/redis/index.ts @@ -63,7 +63,7 @@ export function createRedisClient(config: Config, lazyConnect = false): Redis { return redis; } catch (err) { - throw new WrappedInternalError(err, "could not connect to redis"); + throw new WrappedInternalError(err as Error, "could not connect to redis"); } } @@ -82,7 +82,6 @@ export function createRedisClientFactory(config: Config) { /** * createAugmentedRedisClient will connect to the Redis instance identified in * the configuration. - * * @param config application configuration. */ export async function createAugmentedRedisClient( @@ -96,6 +95,6 @@ export async function createAugmentedRedisClient( return redis; } catch (err) { - throw new WrappedInternalError(err, "could not connect to redis"); + throw new WrappedInternalError(err as Error, "could not connect to redis"); } } diff --git a/server/src/core/server/services/tenant/cache/adapter.ts b/server/src/core/server/services/tenant/cache/adapter.ts index f1818ce516..ef1b8d699b 100644 --- a/server/src/core/server/services/tenant/cache/adapter.ts +++ b/server/src/core/server/services/tenant/cache/adapter.ts @@ -49,7 +49,6 @@ export default class TenantCacheAdapter { /** * delete the cached instance (if cached) for this Tenant. This does not call * the optional deconstruction function. - * * @param tenantID the tenantID for the cached item */ public delete(tenantID: string) { @@ -80,7 +79,6 @@ export default class TenantCacheAdapter { /** * get will return the cached entry keyed on the tenantID. - * * @param tenantID the tenantID for the cached item */ public get(tenantID: string): T | undefined { @@ -93,7 +91,6 @@ export default class TenantCacheAdapter { /** * set will set the cached entry into the map (if caching is enabled). - * * @param tenantID the tenantID for the cached item * @param value the value to set in the map (if caching is enabled) */ diff --git a/server/src/core/server/services/tenant/cache/cache.ts b/server/src/core/server/services/tenant/cache/cache.ts index e356073284..67f1a30972 100644 --- a/server/src/core/server/services/tenant/cache/cache.ts +++ b/server/src/core/server/services/tenant/cache/cache.ts @@ -19,6 +19,7 @@ import { parse, stringify } from "./json"; const TENANT_CACHE_CHANNEL_VERSION = 1; const TENANT_CACHE_CHANNEL = `TENANT_CACHE_CHANNEL_V${TENANT_CACHE_CHANNEL_VERSION}`; +// eslint-disable-next-line no-shadow enum EVENTS { UPDATE = "UPDATE", DELETE = "DELETE", @@ -146,6 +147,7 @@ export default class TenantCache { if (this.cachingEnabled) { // Attach to messages on this connection so we can receive updates when // the tenant are changed. + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument this.redis.on("message", this.onMessage.bind(this)); } } @@ -320,7 +322,6 @@ export default class TenantCache { /** * This allows you to subscribe to new Tenant updates. This will also return * a function that when called, unsubscribes you from updates. - * * @param updateCallback the function to be called when there is an updated Tenant. * @param deleteCallback the function to be called when a tenant needs to be purged */ @@ -352,7 +353,6 @@ export default class TenantCache { /** * update will update the value for Tenant in the local cache and publish * a change notification that will be used to keep the other nodes in sync. - * * @param conn a redis connection used to publish the change notification * @param tenant the updated Tenant object */ diff --git a/server/src/core/server/services/tenant/cache/json.ts b/server/src/core/server/services/tenant/cache/json.ts index 9a85cb64a7..b0af75b0b4 100644 --- a/server/src/core/server/services/tenant/cache/json.ts +++ b/server/src/core/server/services/tenant/cache/json.ts @@ -11,7 +11,6 @@ const ISO_8601_PATTERN = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/; /** * isISOString will return true if the string matches a ISO 8601 date. - * * @param value value to test if it matches the ISO 8601 format */ function isISOString(value: string) { @@ -23,7 +22,6 @@ const KEY = "$date"; /** * transform will walk the passed object and transform any dates that it * encounters into special objects that can be parsed back into dates. - * * @param value the value to transform */ function transform(value: any): any { @@ -63,14 +61,13 @@ function transform(value: any): any { /** * stringify will serialize the data into JSON with special consideration for * Date values. - * * @param data the data to stringify */ export function stringify(data: any) { return JSON.stringify(transform(data)); } -function reviver(key: string, value: any) { +function reviver(key: string, value: unknown) { // The first time we encounter the date object, it will be at it's deepest // nesting, so it will currently be a string. Parse the string, and return it // so that we can parse it and return it. @@ -100,7 +97,6 @@ function reviver(key: string, value: any) { /** * parse will parse deserialize the data from JSON with support for Date values * that have been encoded with stringify. - * * @param data the data to parse */ export function parse(data: string) { diff --git a/server/src/core/server/services/tenant/tenant.ts b/server/src/core/server/services/tenant/tenant.ts index 60836bb024..a259d58ef8 100644 --- a/server/src/core/server/services/tenant/tenant.ts +++ b/server/src/core/server/services/tenant/tenant.ts @@ -219,7 +219,6 @@ export async function canInstall(cache: TenantCache) { * is required by any OpenID Connect compatible service: * * https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig - * * @param issuerString the issuer that should be used as the discovery root. */ export async function discoverOIDCConfiguration(issuerString: string) { diff --git a/server/src/core/server/services/users/auth/reset.ts b/server/src/core/server/services/users/auth/reset.ts index ddd081b39f..033d904391 100644 --- a/server/src/core/server/services/users/auth/reset.ts +++ b/server/src/core/server/services/users/auth/reset.ts @@ -57,7 +57,6 @@ export function isResetToken(token: ResetToken | object): token is ResetToken { /** * generateResetURL will generate a reset URL that will send the user to the redirect * after they have reset their password. - * * @param mongo MongoDB instance to interact with * @param tenant Tenant that the user exists on * @param config the convict config object diff --git a/server/src/core/server/services/users/helpers.ts b/server/src/core/server/services/users/helpers.ts index a8a62aa23f..d5de81604d 100644 --- a/server/src/core/server/services/users/helpers.ts +++ b/server/src/core/server/services/users/helpers.ts @@ -19,7 +19,6 @@ import { User } from "coral-server/models/user"; * validateUsername will validate that the username is valid. Current * implementation uses a RegExp statically, future versions will expose this as * configuration. - * * @param username the username to be tested */ export function validateUsername(username: string) { @@ -45,7 +44,6 @@ export function validateUsername(username: string) { * validatePassword will validate that the password is valid. Current * implementation uses a length statically, future versions will expose this as * configuration. - * * @param password the password to be tested */ export function validatePassword(password: string) { @@ -60,7 +58,6 @@ const EMAIL_MAX_LENGTH = 100; /** * validateEmail will validate that the email is valid. Current implementation * uses a length statically, future versions will expose this as configuration. - * * @param email the email to be tested */ export function validateEmail(email: string) { @@ -78,17 +75,16 @@ export function validateEmail(email: string) { * checkforNewUserEmailDomainModeration will check the new user's email address domain against * configured email domains to see if the user should be automatically banned or set * to always pre-moderated by the system - * * @param user user to be checked against email domains * @param emailDomainModeration email domains configured with new user moderation settings */ export function checkForNewUserEmailDomainModeration( user: User, - emailDomainModeration: { + emailDomainModeration: Array<{ domain: string; id: string; newUserModeration: "BAN" | "PREMOD"; - }[] + }> ) { const userEmail = user.email; if (userEmail && emailDomainModeration) { diff --git a/server/src/core/server/services/users/users.ts b/server/src/core/server/services/users/users.ts index 6858dec264..d2ccd0ed7b 100644 --- a/server/src/core/server/services/users/users.ts +++ b/server/src/core/server/services/users/users.ts @@ -114,6 +114,7 @@ import { sendConfirmationEmail } from "coral-server/services/users/auth"; import { GQLAuthIntegrations, + GQLNEW_USER_MODERATION, GQLREJECTION_REASON_CODE, GQLUSER_ROLE, } from "coral-server/graph/schema/__generated__/types"; @@ -222,11 +223,6 @@ export async function findOrCreate( export type CreateUser = FindOrCreateUserInput; export type CreateUserOptions = FindOrCreateUserOptions; -enum NEW_USER_MODERATION { - BAN = "BAN", - PREMOD = "PREMOD", -} - export async function processAutomaticBanAndPremodForNewUser( mongo: MongoContext, tenant: Tenant, @@ -254,7 +250,7 @@ export async function processAutomaticBanForUser( } if ( - newUserEmailDomainModeration === NEW_USER_MODERATION.BAN && + newUserEmailDomainModeration === GQLNEW_USER_MODERATION.BAN && !user.status.ban.active ) { await banUser(mongo, tenant.id, user.id); @@ -279,7 +275,7 @@ export async function processAutomaticPremodForUser( } if ( - newUserEmailDomainModeration === NEW_USER_MODERATION.PREMOD && + newUserEmailDomainModeration === GQLNEW_USER_MODERATION.PREMOD && !user.status.premod.active ) { await premodUser(mongo, tenant.id, user.id); @@ -342,7 +338,6 @@ export async function create( /** * setUsername will set the username on the User if they don't already have one * associated with them. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param user User that should get their username changed @@ -367,7 +362,6 @@ export async function setUsername( /** * setEmail will set the email address on the User if they don't already have * one associated with them. - * * @param mongo mongo database to interact with * @param mailer the mailer * @param tenant Tenant where the User will be interacted with @@ -404,7 +398,6 @@ export async function setEmail( * current email address and new password if email based authentication is * enabled. If the User does not have a email address associated with their * account, this will fail. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param user User that should get their password changed @@ -437,7 +430,6 @@ export async function setPassword( * does not already have a password associated with their account, it will fail. * If the User does not have an email address associated with the account, this * will fail. - * * @param mongo mongo database to interact with * @param mailer the mailer * @param tenant Tenant where the User will be interacted with @@ -596,7 +588,6 @@ export async function cancelAccountDeletion( /** * createToken will create a Token for the User as well as return a signed Token * that can be used to authenticate. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param config signing configuration to create the signed token @@ -637,7 +628,6 @@ export async function createToken( /** * deactivateToken will disable the given Token so that it can not be used to * authenticate any more. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param user User that should get updated @@ -658,7 +648,6 @@ export async function deactivateToken( /** * updateSSOProfileID will update the id on the user's SSOProfile - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param userID the ID of the User we are updating @@ -675,7 +664,6 @@ export async function updateSSOProfileID( /** * updateUsername will update the current users username. - * * @param mongo mongo database to interact with * @param mailer mailer queue instance * @param tenant Tenant where the User will be interacted with @@ -761,7 +749,6 @@ export async function updateUsername( /** * updateUsernameByID will update a given User's username. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param userID the User's ID that we are updating @@ -779,7 +766,6 @@ export async function updateUsernameByID( /** * updateRole will update the given User to the specified role. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param user the user making the request @@ -1130,7 +1116,6 @@ export async function updateMembershipScopes( /** * enabledAuthenticationIntegrations returns enabled auth integrations for a tenant - * * @param tenant Tenant where the User will be interacted with * @param target whether to filter by stream or admin enabled. defaults to requiring both. */ @@ -1162,7 +1147,6 @@ function enabledAuthenticationIntegrations( /** * canUpdateEmailAddress will determine if a user is permitted to update their * email address. - * * @param tenant Tenant where the User will be interacted with * @param user the User that we are updating */ @@ -1187,7 +1171,6 @@ function canUpdateEmailAddress(tenant: Tenant, user: User): boolean { /** * updateEmail will update the current User's email address. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param mailer The mailer queue @@ -1247,7 +1230,6 @@ export async function updateEmail( * updateUserEmail will update the given User's email address. This should not * trigger and email notifications as it's designed to be used by administrators * to update a user's email address. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param userID the User's ID that we are updating @@ -1267,7 +1249,6 @@ export async function updateEmailByID( /** * updateBio will update the given User's bio. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param userID the User's ID that we are updating @@ -1296,7 +1277,6 @@ export async function updateBio( /** * updateAvatar will update the given User's avatar. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be interacted with * @param userID the User's ID that we are updating @@ -1321,7 +1301,6 @@ export async function updateAvatar( /** * addModeratorNote will add a note to the users account. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be banned on * @param moderator the Moderator that is creating the note @@ -1346,7 +1325,6 @@ export async function addModeratorNote( /** * destroyModeratorNote will remove a note from a user - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be banned on * @param userID id of the user who is the subjet @@ -1365,7 +1343,6 @@ export async function destroyModeratorNote( /** * ban will ban a specific user from interacting with Coral. - * * @param mongo mongo database to interact with * @param cache the data cache * @param mailer the mailer @@ -1590,7 +1567,6 @@ export async function ban( /** * updateUserBan will ban or unban a specific user from interacting with Coral * on specified sites. - * * @param mongo mongo database to interact with * @param mailer the mailer * @param rejector the comment rejector queue @@ -1772,7 +1748,6 @@ export async function updateUserBan( /** * premod will premod a specific user. - * * @param mongo mongo database to interact with * @param cache the data cache * @param tenant Tenant where the User will be banned on @@ -1860,7 +1835,6 @@ export async function removePremod( /** * warn will warn a specific user. - * * @param mongo mongo database to interact with * @param cache the data cache * @param tenant Tenant where the User will be warned on @@ -1972,7 +1946,6 @@ export async function acknowledgeWarning( /** * sendModMessage will send a moderation message to a specific user. - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be messaged on * @param moderator the User that is messaging the User @@ -2001,7 +1974,6 @@ export async function sendModMessage( /** * acknowledgeModMessage will acknowledge that a mod message was seen by the user and * set moderation messages to inactive - * * @param mongo mongo database to interact with * @param tenant Tenant where the User will be messaged on * @param userID the ID of the User acknowledging the mod message @@ -2033,7 +2005,6 @@ export async function acknowledgeModMessage( /** * suspend will suspend a give user from interacting with Coral. - * * @param mongo mongo database to interact with * @param cache the data cache * @param mailer the mailer @@ -2394,7 +2365,6 @@ function userLastCommentIDKey( /** * updateUserLastCommentID will update the id of the users most recent comment. - * * @param redis the Redis instance that Coral interacts with * @param tenant the Tenant to operate on * @param user the User that we're setting the limit for @@ -2415,7 +2385,6 @@ export async function updateUserLastCommentID( * retrieveUserLastCommentNotArchived will return the id (if set) of the comment that * the user last wrote. This will return null if the user has not made a comment * within the CURRENT_REPEAT_POST_TIMESPAN. - * * @param mongo the db * @param redis the Redis instance that Coral interacts with * @param tenant the Tenant to operate on diff --git a/server/src/core/server/stacks/editComment.ts b/server/src/core/server/stacks/editComment.ts index dd45455dc5..5dcd350aa1 100644 --- a/server/src/core/server/stacks/editComment.ts +++ b/server/src/core/server/stacks/editComment.ts @@ -59,7 +59,6 @@ import { * getLastCommentEditableUntilDate will return the `createdAt` date that will * represent the _oldest_ date that a comment could have been created on in * order to still be editable. - * * @param tenant the tenant that contains settings related editing * @param now the date that is the base, defaulting to the current time */ diff --git a/server/src/core/server/stacks/helpers/publishChanges.ts b/server/src/core/server/stacks/helpers/publishChanges.ts index 789a7e5fe6..7a5b630378 100644 --- a/server/src/core/server/stacks/helpers/publishChanges.ts +++ b/server/src/core/server/stacks/helpers/publishChanges.ts @@ -27,7 +27,7 @@ export default async function publishChanges( broker: CoralEventPublisherBroker, input: PublishChangesInput ) { - const promises: Promise[] = []; + const promises: Array> = []; // Publish changes. promises.push( diff --git a/server/src/core/server/test/fixtures.ts b/server/src/core/server/test/fixtures.ts index b27fa72372..c47e3b54aa 100644 --- a/server/src/core/server/test/fixtures.ts +++ b/server/src/core/server/test/fixtures.ts @@ -17,8 +17,8 @@ import { } from "coral-server/graph/schema/__generated__/types"; type Defaults = { - [P in keyof T]?: T[P] extends (infer U)[] - ? Defaults[] + [P in keyof T]?: T[P] extends Array + ? Array> : T[P] extends object ? Defaults : T[P]; From 53b2b1b830fe0ac79e75a96477007bf4cebb7539 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 5 Dec 2023 15:22:44 -0500 Subject: [PATCH 07/66] update comment --- server/src/core/server/models/comment/counts/shared.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/core/server/models/comment/counts/shared.ts b/server/src/core/server/models/comment/counts/shared.ts index 9d34da590f..bf5d491140 100644 --- a/server/src/core/server/models/comment/counts/shared.ts +++ b/server/src/core/server/models/comment/counts/shared.ts @@ -110,7 +110,7 @@ export async function recalculateSharedModerationQueueQueueCounts( // twice. await redis .pipeline() - // eslint-disable @typescript-eslint/no-unsafe-argument + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument .hmset(key, ...flatten(Object.entries(queueCounts))) .set(freshKey, now.getTime(), "EX", COUNT_FRESHNESS_EXPIRY_SECONDS) .exec(); From 081adb7a303b99b453b790450ac65be1daf9bafc Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Wed, 6 Dec 2023 13:34:27 -0500 Subject: [PATCH 08/66] fix client lint issues --- .../core/client/admin/components/BanModal.tsx | 1 + .../StorySettingsContainer.tsx | 9 +++-- .../StoryInfoDrawer/StoryStatus.tsx | 2 +- .../components/UserRole/SiteRoleActions.tsx | 1 + .../components/UserStatus/SuspendForm.tsx | 4 +- .../admin/helpers/useCommonTranslation.ts | 1 + .../mutations/SetRedirectPathMutation.spec.ts | 5 ++- .../routes/Community/UserTableFilter.tsx | 8 +++- .../RotationOption.tsx | 1 + .../SSOSigningSecretRotation/StatusField.tsx | 1 + .../sections/Email/EmailConfigContainer.tsx | 4 +- .../sections/EmailDomains/EmailDomainForm.tsx | 16 +++----- .../General/AnnouncementConfigContainer.tsx | 6 +-- .../sections/General/CommentLengthConfig.tsx | 2 +- .../General/DSAMethodOfRedressOptions.tsx | 39 ++++++++---------- .../General/FlairBadgeConfigContainer.tsx | 2 +- .../sections/Sites/CreateSiteForm.tsx | 2 +- .../Configure/sections/Sites/EditSiteForm.tsx | 2 +- .../sections/CommentActivityTooltip.tsx | 4 +- .../routes/Login/SetAuthViewMutation.spec.ts | 7 +++- .../routes/Moderate/Queue/QueueRoute.tsx | 2 +- .../admin/routes/Stories/StoryTableFilter.tsx | 4 +- .../CompleteAccountMutation.ts | 7 +++- .../auth/mutations/SetViewMutation.spec.ts | 3 +- client/src/core/client/embed/StreamEmbed.ts | 3 +- .../embed/decorators/withAMPHeight.spec.ts | 4 +- .../embed/decorators/withEventEmitter.spec.ts | 24 +++++++---- .../embed/decorators/withSetCommentID.spec.ts | 17 +++++--- .../src/core/client/embed/test/basic.spec.ts | 6 +-- .../framework/hooks/useModerationLink.ts | 2 +- .../core/client/framework/hooks/useToken.ts | 2 +- .../framework/lib/bootstrap/CoralContext.tsx | 3 +- .../src/core/client/framework/lib/events.ts | 6 ++- .../client/framework/lib/form/helpers.tsx | 9 +++-- .../lib/i18n/types/FluentShortNumber.ts | 6 ++- .../lib/intersection/IntersectionContext.tsx | 4 +- .../framework/lib/network/createNetwork.ts | 1 + .../lib/network/customErrorMiddleware.ts | 9 +++-- .../lib/network/extractTraceableError.ts | 13 +++++- .../lib/relay/commitMutationPromise.ts | 1 + .../framework/lib/relay/createAndRetain.ts | 6 ++- .../framework/lib/relay/extractPayload.ts | 2 + .../core/client/framework/lib/relay/fetch.tsx | 1 + .../core/client/framework/lib/relay/lookup.ts | 1 + .../client/framework/lib/relay/mutation.tsx | 5 ++- .../framework/lib/relay/subscription.tsx | 5 ++- .../client/framework/lib/relay/useLocal.tsx | 9 +++-- client/src/core/client/framework/lib/rest.ts | 4 +- .../framework/lib/storage/IndexedDBStorage.ts | 1 + .../lib/storage/prefixStorage.spec.ts | 6 +-- .../core/client/framework/testHelpers/byID.ts | 2 +- .../framework/testHelpers/byLabelText.ts | 2 +- .../client/framework/testHelpers/byTestID.ts | 2 +- .../client/framework/testHelpers/byTitle.ts | 2 +- .../testHelpers/createFluentBundle.ts | 2 +- .../testHelpers/createRelayEnvironment.ts | 6 ++- .../framework/testHelpers/denormalize.ts | 2 +- .../testHelpers/overwriteQueryResolver.ts | 3 +- .../client/framework/testHelpers/within.ts | 1 + client/src/core/client/install/App/App.tsx | 2 +- .../listeners/OnEmbedSetCommentID.spec.tsx | 4 +- .../listeners/OnEventsForRudderStack.spec.tsx | 2 +- .../KeyboardShortcuts/KeyboardShortcuts.tsx | 25 +++++++++--- client/src/core/client/stream/constants.ts | 1 + .../mutations/SetCommentIDMutation.spec.ts | 7 ++-- .../stream/shadow/EmotionShadowRoot.tsx | 40 +++++++++++-------- .../PermalinkButton/PermalinkPopover.tsx | 10 +++-- .../CreateCommentReplyMutation.ts | 4 +- .../ReplyCommentFormContainer.tsx | 1 + .../UserBanPopoverContainer.tsx | 2 +- .../Comments/Comment/UserTagsContainer.tsx | 3 ++ .../ExternalImageInput/ExternalImageInput.tsx | 6 ++- .../AdditionalCommentQuery.tsx | 4 +- .../SpinnerWhileRendering.tsx | 6 ++- .../Stream/CommentForm/CommentForm.tsx | 5 ++- .../tabs/Comments/helpers/isInReview.ts | 10 ++++- .../tabs/Comments/helpers/isPublished.ts | 1 + .../client/stream/test/comments/create.ts | 4 +- .../stream/test/comments/featured/create.ts | 4 +- .../test/comments/stream/banned.spec.tsx | 2 +- .../stream/charCountEditComment.spec.tsx | 2 +- .../stream/test/comments/stream/create.ts | 4 +- .../test/comments/stream/editComment.spec.tsx | 2 +- .../test/comments/stream/loadMore.spec.tsx | 2 + .../test/comments/stream/postComment.spec.tsx | 2 +- .../test/comments/stream/postReply.spec.tsx | 2 +- .../test/comments/stream/suspended.spec.tsx | 2 +- .../client/stream/test/configure/create.ts | 4 +- client/src/core/client/stream/test/create.tsx | 4 +- .../core/client/stream/test/profile/create.ts | 6 ++- client/src/core/client/test/expectAndFail.tsx | 5 ++- client/src/core/client/test/setupConsole.ts | 6 ++- .../core/client/ui/components/v2/Box/Box.tsx | 18 ++++----- .../client/ui/components/v2/Flex/Flex.tsx | 2 +- .../v2/HorizontalGutter/HorizontalGutter.tsx | 4 +- .../client/ui/components/v2/Popup/Popup.tsx | 7 +++- .../ui/components/v2/Tabs/TabContent.tsx | 2 +- .../v2/TrapFocus/TrapFocus.spec.tsx | 4 +- .../ui/components/v2/UIContext/UIContext.ts | 1 + .../core/client/ui/encapsulation/CSSAsset.ts | 1 + .../client/ui/helpers/combineEventHandlers.ts | 2 +- client/src/core/client/ui/hocs/withStyles.ts | 2 +- 102 files changed, 334 insertions(+), 198 deletions(-) diff --git a/client/src/core/client/admin/components/BanModal.tsx b/client/src/core/client/admin/components/BanModal.tsx index f7887d2016..a86e6b931d 100644 --- a/client/src/core/client/admin/components/BanModal.tsx +++ b/client/src/core/client/admin/components/BanModal.tsx @@ -52,6 +52,7 @@ import { } from "coral-common/common/lib/permissions/types"; import styles from "./BanModal.css"; +// eslint-disable-next-line no-shadow export enum UpdateType { ALL_SITES = "ALL_SITES", SPECIFIC_SITES = "SPECIFIC_SITES", diff --git a/client/src/core/client/admin/components/StoryInfoDrawer/StorySettingsContainer.tsx b/client/src/core/client/admin/components/StoryInfoDrawer/StorySettingsContainer.tsx index 94c92d533c..ab6a6f7193 100644 --- a/client/src/core/client/admin/components/StoryInfoDrawer/StorySettingsContainer.tsx +++ b/client/src/core/client/admin/components/StoryInfoDrawer/StorySettingsContainer.tsx @@ -53,10 +53,11 @@ const StorySettingsContainer: FunctionComponent = ({ ) => { const updatedSettings = { ...values }; - const res = await updateSettings({ - id: storyID, - settings: updatedSettings, - }); + const res: { story: { settings: StorySettingsContainer_storySettings } } = + await updateSettings({ + id: storyID, + settings: updatedSettings, + }); setSettings(res.story.settings); }; diff --git a/client/src/core/client/admin/components/StoryInfoDrawer/StoryStatus.tsx b/client/src/core/client/admin/components/StoryInfoDrawer/StoryStatus.tsx index 819333c93e..f150420eca 100644 --- a/client/src/core/client/admin/components/StoryInfoDrawer/StoryStatus.tsx +++ b/client/src/core/client/admin/components/StoryInfoDrawer/StoryStatus.tsx @@ -54,7 +54,7 @@ const StoryStatus: FunctionComponent = ({ storyID, currentStatus }) => { value: currentStatus, localizationID: localizedStoryStatus(currentStatus as GQLSTORY_STATUS), }} - onSelect={(selected) => updateStatus(selected)} + onSelect={(selected: GQLSTORY_STATUS) => updateStatus(selected)} /> ); }; diff --git a/client/src/core/client/admin/components/UserRole/SiteRoleActions.tsx b/client/src/core/client/admin/components/UserRole/SiteRoleActions.tsx index d1a8f46697..a2a713285e 100644 --- a/client/src/core/client/admin/components/UserRole/SiteRoleActions.tsx +++ b/client/src/core/client/admin/components/UserRole/SiteRoleActions.tsx @@ -39,6 +39,7 @@ interface Props { user: SiteRoleActions_user; } +// eslint-disable-next-line no-shadow enum SiteRoleType { MODERATOR, MEMBER, diff --git a/client/src/core/client/admin/components/UserStatus/SuspendForm.tsx b/client/src/core/client/admin/components/UserStatus/SuspendForm.tsx index 3fe41ba44c..fc1d320b30 100644 --- a/client/src/core/client/admin/components/UserStatus/SuspendForm.tsx +++ b/client/src/core/client/admin/components/UserStatus/SuspendForm.tsx @@ -85,7 +85,7 @@ const SuspendForm: FunctionComponent = ({ const unit = DURATIONS.find((d) => d.value === duration); const expectedEmailMessage = getMessageWithDuration(unit!); if (expectedEmailMessage === emailMessage) { - changeValue(state, name, () => newValue); + changeValue(state, name as string, () => newValue); } } }, @@ -103,7 +103,7 @@ const SuspendForm: FunctionComponent = ({ const unit = DURATIONS.find((d) => d.value === duration); const expectedEmailMessage = getMessageWithDuration(unit!); if (expectedEmailMessage !== emailMessage) { - changeValue(state, name, () => expectedEmailMessage); + changeValue(state, name as string, () => expectedEmailMessage); } } }; diff --git a/client/src/core/client/admin/helpers/useCommonTranslation.ts b/client/src/core/client/admin/helpers/useCommonTranslation.ts index aaaf7043d4..8026a41168 100644 --- a/client/src/core/client/admin/helpers/useCommonTranslation.ts +++ b/client/src/core/client/admin/helpers/useCommonTranslation.ts @@ -2,6 +2,7 @@ import { useMemo } from "react"; import { useGetMessage } from "coral-framework/lib/i18n"; +// eslint-disable-next-line no-shadow export const enum COMMON_TRANSLATION { NOT_AVAILABLE, } diff --git a/client/src/core/client/admin/mutations/SetRedirectPathMutation.spec.ts b/client/src/core/client/admin/mutations/SetRedirectPathMutation.spec.ts index 938cdf9083..3c464f7532 100644 --- a/client/src/core/client/admin/mutations/SetRedirectPathMutation.spec.ts +++ b/client/src/core/client/admin/mutations/SetRedirectPathMutation.spec.ts @@ -1,6 +1,7 @@ import { Environment, RecordSource } from "relay-runtime"; import { ADMIN_REDIRECT_PATH_KEY } from "coral-admin/constants"; +import { CoralContext } from "coral-framework/lib/bootstrap"; import { LOCAL_ID } from "coral-framework/lib/relay"; import { createInMemoryStorage, @@ -23,7 +24,7 @@ it("Sets redirectPath", async () => { const storage = createInMemoryStorage(); await SetRedirectPathMutation.commit(environment, { path: "/path" }, { localStorage: createPromisifiedStorage(storage), - } as any); + } as unknown as CoralContext); expect(source.get(LOCAL_ID)!.redirectPath).toEqual("/path"); expect(storage.getItem(ADMIN_REDIRECT_PATH_KEY)).toEqual("/path"); }); @@ -32,7 +33,7 @@ it("Removes redirectPath", async () => { const storage = createInMemoryStorage(); await SetRedirectPathMutation.commit(environment, { path: null }, { localStorage: createPromisifiedStorage(storage), - } as any); + } as unknown as CoralContext); expect(source.get(LOCAL_ID)!.redirectPath).toEqual(null); expect(storage.getItem(ADMIN_REDIRECT_PATH_KEY)).toEqual(null); }); diff --git a/client/src/core/client/admin/routes/Community/UserTableFilter.tsx b/client/src/core/client/admin/routes/Community/UserTableFilter.tsx index cad78fe5ef..7a34bd083b 100644 --- a/client/src/core/client/admin/routes/Community/UserTableFilter.tsx +++ b/client/src/core/client/admin/routes/Community/UserTableFilter.tsx @@ -110,7 +110,9 @@ const UserTableFilter: FunctionComponent = (props) => ( value={props.roleFilter || ""} className={styles.selectField} onChange={(e) => - props.onSetRoleFilter((e.target.value as any) || null) + props.onSetRoleFilter( + (e.target.value as GQLUSER_ROLE_RL) || null + ) } > @@ -156,7 +158,9 @@ const UserTableFilter: FunctionComponent = (props) => ( value={props.statusFilter || ""} className={styles.selectField} onChange={(e) => - props.onSetStatusFilter((e.target.value as any) || null) + props.onSetStatusFilter( + (e.target.value as GQLUSER_STATUS_FILTER_RL) || null + ) } > diff --git a/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/RotationOption.tsx b/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/RotationOption.tsx index e0a02cbb59..ad5b1d6658 100644 --- a/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/RotationOption.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/RotationOption.tsx @@ -1,6 +1,7 @@ import { Localized } from "@fluent/react/compat"; import React, { FunctionComponent } from "react"; +// eslint-disable-next-line no-shadow export enum RotateOptions { NOW = "NOW", IN1DAY = "IN1DAY", diff --git a/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/StatusField.tsx b/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/StatusField.tsx index 4e6201101b..6b294b420f 100644 --- a/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/StatusField.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/Auth/SSOSigningSecretRotation/StatusField.tsx @@ -7,6 +7,7 @@ import { Flex, Tooltip, TooltipButton } from "coral-ui/components/v2"; import styles from "./StatusField.css"; +// eslint-disable-next-line no-shadow export enum SSOSigningSecretStatus { EXPIRED, EXPIRING, diff --git a/client/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx b/client/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx index 6bce22cb65..2fa1895b97 100644 --- a/client/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/Email/EmailConfigContainer.tsx @@ -66,11 +66,11 @@ const EmailConfigContainer: React.FunctionComponent = ({ setLoading(false); } - setSubmitError(error.message); + setSubmitError(error.message as string | null); } }, []); useMemo(() => { - let values: any = { email }; + let values: { email: EmailConfigContainer_email } = { email }; if (email && email.smtp && email.smtp.authentication === null) { values = { email: { diff --git a/client/src/core/client/admin/routes/Configure/sections/EmailDomains/EmailDomainForm.tsx b/client/src/core/client/admin/routes/Configure/sections/EmailDomains/EmailDomainForm.tsx index 0b2c2a936a..94277be892 100644 --- a/client/src/core/client/admin/routes/Configure/sections/EmailDomains/EmailDomainForm.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/EmailDomains/EmailDomainForm.tsx @@ -12,6 +12,7 @@ import { required, validateEmailDomain, } from "coral-framework/lib/validation"; +import { GQLNEW_USER_MODERATION } from "coral-framework/schema"; import { Button, CallOut, @@ -27,11 +28,6 @@ import { import CreateEmailDomainMutation from "./CreateEmailDomainMutation"; import UpdateEmailDomainMutation from "./UpdateEmailDomainMutation"; -enum NEW_USER_MODERATION { - BAN = "BAN", - PREMOD = "PREMOD", -} - interface Props { emailDomain?: { readonly domain: string; @@ -77,7 +73,7 @@ const EmailDomainForm: FunctionComponent = ({ emailDomain }) => { initialValues={{ domain: emailDomain?.domain || null, newUserModeration: - emailDomain?.newUserModeration || NEW_USER_MODERATION.BAN, + emailDomain?.newUserModeration || GQLNEW_USER_MODERATION.BAN, }} > {({ handleSubmit, submitting, submitError }) => ( @@ -130,12 +126,12 @@ const EmailDomainForm: FunctionComponent = ({ emailDomain }) => { {({ input }) => ( Always pre-moderate comments @@ -146,12 +142,12 @@ const EmailDomainForm: FunctionComponent = ({ emailDomain }) => { {({ input }) => ( Ban all users diff --git a/client/src/core/client/admin/routes/Configure/sections/General/AnnouncementConfigContainer.tsx b/client/src/core/client/admin/routes/Configure/sections/General/AnnouncementConfigContainer.tsx index b4fd29e2c5..53e9831077 100644 --- a/client/src/core/client/admin/routes/Configure/sections/General/AnnouncementConfigContainer.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/General/AnnouncementConfigContainer.tsx @@ -36,7 +36,7 @@ const AnnouncementConfigContainer: FunctionComponent = ({ const createAnnouncement = useMutation(CreateAnnouncementMutaiton); const deleteAnnouncement = useMutation(DeleteAnnouncementMutaiton); const [showForm, setShowForm] = useState(false); - const [submitError, setSubmitError] = useState(null); + const [submitError, setSubmitError] = useState(null); const onClose = useCallback(() => { setShowForm(false); }, [showForm]); @@ -47,7 +47,7 @@ const AnnouncementConfigContainer: FunctionComponent = ({ void createAnnouncement(values); setShowForm(false); } catch (error) { - setSubmitError(error.message); + setSubmitError(error.message as string); } }, [] @@ -57,7 +57,7 @@ const AnnouncementConfigContainer: FunctionComponent = ({ setSubmitError(null); void deleteAnnouncement(); } catch (error) { - setSubmitError(error.message); + setSubmitError(error.message as string); setShowForm(false); } }, []); diff --git a/client/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx b/client/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx index 3401291507..e7585ebb21 100644 --- a/client/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/General/CommentLengthConfig.tsx @@ -36,7 +36,7 @@ graphql` `; const validateMaxLongerThanMin = createValidator( - (v: any, values: any) => + (v: string, values: { charCount: { min: string } }) => v === null || values.charCount.min === null || parseInt(v, 10) > parseInt(values.charCount.min, 10), diff --git a/client/src/core/client/admin/routes/Configure/sections/General/DSAMethodOfRedressOptions.tsx b/client/src/core/client/admin/routes/Configure/sections/General/DSAMethodOfRedressOptions.tsx index 3bbd3c3e4a..3ace91712c 100644 --- a/client/src/core/client/admin/routes/Configure/sections/General/DSAMethodOfRedressOptions.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/General/DSAMethodOfRedressOptions.tsx @@ -15,6 +15,7 @@ import { validateURL, Validator, } from "coral-framework/lib/validation"; +import { GQLDSA_METHOD_OF_REDRESS } from "coral-framework/schema"; import { RadioButton } from "coral-ui/components/v2"; import { DSA_METHOD_OF_REDRESS } from "coral-admin/__generated__/DSAConfigContainer_formValues.graphql"; @@ -35,24 +36,18 @@ interface Props { className?: string; } -export enum DSAMethodOfRedress { - NONE = "NONE", - EMAIL = "EMAIL", - URL = "URL", -} - export const parseVal = (v: any, name: string) => { - if (v === DSAMethodOfRedress.NONE) { - return DSAMethodOfRedress.NONE; + if (v === GQLDSA_METHOD_OF_REDRESS.NONE) { + return GQLDSA_METHOD_OF_REDRESS.NONE; } - if (v === DSAMethodOfRedress.EMAIL) { - return DSAMethodOfRedress.EMAIL; + if (v === GQLDSA_METHOD_OF_REDRESS.EMAIL) { + return GQLDSA_METHOD_OF_REDRESS.EMAIL; } - if (v === DSAMethodOfRedress.URL) { - return DSAMethodOfRedress.URL; + if (v === GQLDSA_METHOD_OF_REDRESS.URL) { + return GQLDSA_METHOD_OF_REDRESS.URL; } - return DSAMethodOfRedress.NONE; + return GQLDSA_METHOD_OF_REDRESS.NONE; }; export const format = (v: string, name: string) => { @@ -69,10 +64,10 @@ const DSAMethodOfRedressOptions: FunctionComponent = ({ const [mode, setMode] = useState(defaultMethod); const onChange = useCallback((ev: ChangeEvent) => { - if (ev.target?.value === DSAMethodOfRedress.EMAIL) { - setMode(DSAMethodOfRedress.EMAIL); - } else if (ev.target?.value === DSAMethodOfRedress.URL) { - setMode(DSAMethodOfRedress.URL); + if (ev.target?.value === GQLDSA_METHOD_OF_REDRESS.EMAIL) { + setMode(GQLDSA_METHOD_OF_REDRESS.EMAIL); + } else if (ev.target?.value === GQLDSA_METHOD_OF_REDRESS.URL) { + setMode(GQLDSA_METHOD_OF_REDRESS.URL); } else { setMode(null); } @@ -94,7 +89,7 @@ const DSAMethodOfRedressOptions: FunctionComponent = ({ @@ -117,7 +112,7 @@ const DSAMethodOfRedressOptions: FunctionComponent = ({ @@ -137,7 +132,7 @@ const DSAMethodOfRedressOptions: FunctionComponent = ({ )} - {mode === DSAMethodOfRedress.EMAIL && ( + {mode === GQLDSA_METHOD_OF_REDRESS.EMAIL && ( = ({ name={"dsa.methodOfRedress.method"} type="radio" parse={parseVal} - value={DSAMethodOfRedress.URL} + value={GQLDSA_METHOD_OF_REDRESS.URL} format={format} > {({ input }) => { @@ -187,7 +182,7 @@ const DSAMethodOfRedressOptions: FunctionComponent = ({ ); }} - {mode === DSAMethodOfRedress.URL && ( + {mode === GQLDSA_METHOD_OF_REDRESS.URL && ( = ({ setFlairBadgeNameInput(""); setFlairBadgeURLInput(""); } catch (e) { - setSubmitError(e.message); + setSubmitError(e.message as string); } }, [addFlairBadge, flairBadgeURLInput, flairBadgeNameInput]); diff --git a/client/src/core/client/admin/routes/Configure/sections/Sites/CreateSiteForm.tsx b/client/src/core/client/admin/routes/Configure/sections/Sites/CreateSiteForm.tsx index 4651f9f4d0..0a3b02892c 100644 --- a/client/src/core/client/admin/routes/Configure/sections/Sites/CreateSiteForm.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/Sites/CreateSiteForm.tsx @@ -37,7 +37,7 @@ const CreateSiteForm: FunctionComponent = ({ onCreate }) => { onCreate(response.site.id, response.site.name); } } catch (error) { - setSubmitError(error.message); + setSubmitError(error.message as string); } }, [onCreate] diff --git a/client/src/core/client/admin/routes/Configure/sections/Sites/EditSiteForm.tsx b/client/src/core/client/admin/routes/Configure/sections/Sites/EditSiteForm.tsx index ffb1f455de..f58bf05175 100644 --- a/client/src/core/client/admin/routes/Configure/sections/Sites/EditSiteForm.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/Sites/EditSiteForm.tsx @@ -45,7 +45,7 @@ const EditSiteForm: FunctionComponent = ({ onEditSuccess(result.site.name); } } catch (error) { - setSubmitError(error.message); + setSubmitError(error.message as string); } }, []); return ( diff --git a/client/src/core/client/admin/routes/Dashboard/sections/CommentActivityTooltip.tsx b/client/src/core/client/admin/routes/Dashboard/sections/CommentActivityTooltip.tsx index 829b6f887f..2835453662 100644 --- a/client/src/core/client/admin/routes/Dashboard/sections/CommentActivityTooltip.tsx +++ b/client/src/core/client/admin/routes/Dashboard/sections/CommentActivityTooltip.tsx @@ -18,8 +18,8 @@ const CommentActivityTooltip: FunctionComponent = ({ minute: "2-digit", }); const formattedLabel = useMemo(() => { - if (label) { - return formatter(label).toLowerCase(); + if (label && typeof label === ("string" || "number" || "Date")) { + return formatter(label as string | number | Date).toLowerCase(); } return ""; }, [label, formatter]); diff --git a/client/src/core/client/admin/routes/Login/SetAuthViewMutation.spec.ts b/client/src/core/client/admin/routes/Login/SetAuthViewMutation.spec.ts index 2a0527232f..99e7453e11 100644 --- a/client/src/core/client/admin/routes/Login/SetAuthViewMutation.spec.ts +++ b/client/src/core/client/admin/routes/Login/SetAuthViewMutation.spec.ts @@ -1,5 +1,6 @@ import { Environment, RecordSource } from "relay-runtime"; +import { CoralContext } from "coral-framework/lib/bootstrap"; import { LOCAL_ID } from "coral-framework/lib/relay"; import { createRelayEnvironment } from "coral-framework/testHelpers"; @@ -16,6 +17,10 @@ beforeAll(() => { it("Sets view", () => { const view = "SIGN_IN"; - SetAuthViewMutation.commit(environment, { view }, {} as any); + SetAuthViewMutation.commit( + environment, + { view }, + {} as unknown as CoralContext + ); expect(source.get(LOCAL_ID)!.authView).toEqual(view); }); diff --git a/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx b/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx index 8814af2f27..259686134f 100644 --- a/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx +++ b/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx @@ -244,7 +244,7 @@ const createQueueRoute = ( } const queue = - data.moderationQueues[Object.keys(data.moderationQueues)[0]]; + data.moderationQueues[Object.keys(data.moderationQueues as {})[0]]; return ( = (props) => ( aria-label="Search by status" value={props.statusFilter || ""} onChange={(e) => - props.onSetStatusFilter((e.target.value as any) || null) + props.onSetStatusFilter( + (e.target.value as GQLSTORY_STATUS) || null + ) } > diff --git a/client/src/core/client/auth/App/AccountCompletion/CompleteAccountMutation.ts b/client/src/core/client/auth/App/AccountCompletion/CompleteAccountMutation.ts index 50e3f09b56..e1b6c82daa 100644 --- a/client/src/core/client/auth/App/AccountCompletion/CompleteAccountMutation.ts +++ b/client/src/core/client/auth/App/AccountCompletion/CompleteAccountMutation.ts @@ -12,7 +12,12 @@ export async function commit( input: CompleteAccountInput, { postMessage, window }: CoralContext ) { - postMessage.send("setAccessToken", input.accessToken, window.opener, "*"); + postMessage.send( + "setAccessToken", + input.accessToken, + window.opener as Window | undefined, + "*" + ); window.close(); } diff --git a/client/src/core/client/auth/mutations/SetViewMutation.spec.ts b/client/src/core/client/auth/mutations/SetViewMutation.spec.ts index d3f59e4d46..2cc4ad969f 100644 --- a/client/src/core/client/auth/mutations/SetViewMutation.spec.ts +++ b/client/src/core/client/auth/mutations/SetViewMutation.spec.ts @@ -1,5 +1,6 @@ import { Environment, RecordSource } from "relay-runtime"; +import { CoralContext } from "coral-framework/lib/bootstrap"; import { LOCAL_ID } from "coral-framework/lib/relay"; import { createRelayEnvironment } from "coral-framework/testHelpers"; @@ -16,6 +17,6 @@ beforeAll(() => { it("Sets view", () => { const view = "SIGN_UP"; - SetViewMutation.commit(environment, { view }, {} as any); + SetViewMutation.commit(environment, { view }, {} as unknown as CoralContext); expect(source.get(LOCAL_ID)!.view).toEqual(view); }); diff --git a/client/src/core/client/embed/StreamEmbed.ts b/client/src/core/client/embed/StreamEmbed.ts index 3beeef82c5..cd47bb31e9 100644 --- a/client/src/core/client/embed/StreamEmbed.ts +++ b/client/src/core/client/embed/StreamEmbed.ts @@ -228,6 +228,7 @@ export class StreamEmbed { /** Loads the boostrap config */ private loadBootstrapConfig(attempt = 0) { const loadBootstrapConfigRef = (...args: any[]) => + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument this.loadBootstrapConfig(...args); const req = new XMLHttpRequest(); const runOnBootstrapLoad = (config: EmbedBootstrapConfig) => @@ -242,7 +243,7 @@ export class StreamEmbed { } throw new Error("Loading bootstrap config failed"); } - runOnBootstrapLoad(JSON.parse(this.responseText)); + runOnBootstrapLoad(JSON.parse(this.responseText) as EmbedBootstrapConfig); }); req.open("GET", `${this.config.rootURL}/embed/bootstrap`); req.send(); diff --git a/client/src/core/client/embed/decorators/withAMPHeight.spec.ts b/client/src/core/client/embed/decorators/withAMPHeight.spec.ts index 18ab75280e..a2f1e6eb4f 100644 --- a/client/src/core/client/embed/decorators/withAMPHeight.spec.ts +++ b/client/src/core/client/embed/decorators/withAMPHeight.spec.ts @@ -1,4 +1,6 @@ +import { EventEmitter2 } from "eventemitter2"; import Sinon from "sinon"; + import withAMPHeight from "./withAMPHeight"; it("should listen to height", () => { @@ -8,6 +10,6 @@ it("should listen to height", () => { callback(); }), }; - withAMPHeight(fakeEventEmitter as any); + withAMPHeight(fakeEventEmitter as unknown as EventEmitter2); expect(fakeEventEmitter.on.called).toBe(true); }); diff --git a/client/src/core/client/embed/decorators/withEventEmitter.spec.ts b/client/src/core/client/embed/decorators/withEventEmitter.spec.ts index 48e8d2f35f..d413e11a9e 100644 --- a/client/src/core/client/embed/decorators/withEventEmitter.spec.ts +++ b/client/src/core/client/embed/decorators/withEventEmitter.spec.ts @@ -1,3 +1,4 @@ +import { EventEmitter2 } from "eventemitter2"; import sinon from "sinon"; import withEventEmitter from "./withEventEmitter"; @@ -24,7 +25,10 @@ it("should emit special events like `ready`", () => { }); }, }; - withEventEmitter(fakeStreamEventEmitter as any, embedEventEmitterMock as any); + withEventEmitter( + fakeStreamEventEmitter as unknown as EventEmitter2, + embedEventEmitterMock as unknown as EventEmitter2 + ); expect(emitStub.callCount).toBe(cases.length); }); @@ -50,7 +54,10 @@ it("should emit viewer events", () => { }); }, }; - withEventEmitter(fakeStreamEventEmitter as any, embedEventEmitterMock as any); + withEventEmitter( + fakeStreamEventEmitter as unknown as EventEmitter2, + embedEventEmitterMock as unknown as EventEmitter2 + ); expect(emitStub.callCount).toBe(cases.length); }); @@ -93,8 +100,8 @@ it("should emit deprecated events when activated", () => { }, }; withEventEmitter( - fakeStreamEventEmitter as any, - embedEventEmitterMock as any, + fakeStreamEventEmitter as unknown as EventEmitter2, + embedEventEmitterMock as unknown as EventEmitter2, enableDeprecatedEvents ); expect(emitStub.callCount).toBe(cases.length); @@ -139,8 +146,8 @@ it("should not emit deprecated events when activated", () => { }, }; withEventEmitter( - fakeStreamEventEmitter as any, - embedEventEmitterMock as any, + fakeStreamEventEmitter as unknown as EventEmitter2, + embedEventEmitterMock as unknown as EventEmitter2, enableDeprecatedEvents ); expect(emitStub.callCount).toBe(1); @@ -156,6 +163,9 @@ it("should not emit unknown events", () => { callback("unknown", "value"); }, }; - withEventEmitter(fakeStreamEventEmitter as any, embedEventEmitterMock as any); + withEventEmitter( + fakeStreamEventEmitter as unknown as EventEmitter2, + embedEventEmitterMock as unknown as EventEmitter2 + ); expect(emitStub.callCount).toBe(0); }); diff --git a/client/src/core/client/embed/decorators/withSetCommentID.spec.ts b/client/src/core/client/embed/decorators/withSetCommentID.spec.ts index 9cd47b23ac..a9d689db37 100644 --- a/client/src/core/client/embed/decorators/withSetCommentID.spec.ts +++ b/client/src/core/client/embed/decorators/withSetCommentID.spec.ts @@ -1,3 +1,4 @@ +import { EventEmitter2 } from "eventemitter2"; import simulant from "simulant"; import sinon from "sinon"; @@ -13,7 +14,9 @@ it("should add commentID", () => { } }, }; - const cleanup = withSetCommentID(fakeStreamEventEmitter as any); + const cleanup = withSetCommentID( + fakeStreamEventEmitter as unknown as EventEmitter2 + ); expect(location.toString()).toBe("http://localhost/?commentID=comment-id"); cleanup(); window.history.replaceState(previousState, document.title, previousLocation); @@ -34,7 +37,9 @@ it("should remove commentID", () => { } }, }; - const cleanup = withSetCommentID(fakeStreamEventEmitter as any); + const cleanup = withSetCommentID( + fakeStreamEventEmitter as unknown as EventEmitter2 + ); expect(location.toString()).toBe("http://localhost/"); cleanup(); window.history.replaceState(previousState, document.title, previousLocation); @@ -52,10 +57,12 @@ it("should send commentID over eventEmitter when history changes", () => { on: sinon.stub(), emit: sinon.mock().once().withArgs("embed.setCommentID", "comment-id"), }; - const cleanup = withSetCommentID(fakeEventEmitter as any); - simulant.fire(window as any, "popstate"); + const cleanup = withSetCommentID( + fakeEventEmitter as unknown as EventEmitter2 + ); + simulant.fire(window as unknown as HTMLElement, "popstate"); cleanup(); - simulant.fire(window as any, "popstate"); + simulant.fire(window as unknown as HTMLElement, "popstate"); fakeEventEmitter.emit.verify(); window.history.replaceState(previousState, document.title, previousLocation); }); diff --git a/client/src/core/client/embed/test/basic.spec.ts b/client/src/core/client/embed/test/basic.spec.ts index df053c7d70..d1ca0e4a82 100644 --- a/client/src/core/client/embed/test/basic.spec.ts +++ b/client/src/core/client/embed/test/basic.spec.ts @@ -61,7 +61,7 @@ describe("Basic integration test", () => { (window as any).CoralStream = { attach: attachStub, }; - scriptElement!.onload!({} as any); + scriptElement!.onload!({} as unknown as Event); expect(attachStub.called).toBe(true); expect(args).toMatchInlineSnapshot(` Object { @@ -166,7 +166,7 @@ describe("Basic integration test", () => { (window as any).CoralStream = { attach: attachStub, }; - scriptElement!.onload!({} as any); + scriptElement!.onload!({} as unknown as Event); expect(attachStub.called).toBe(true); expect(args && args.storyURL).toBe("http://localhost/canonical"); } finally { @@ -207,7 +207,7 @@ describe("Basic integration test", () => { attach: () => {}, remove: removeStub, }; - scriptElement!.onload!({} as any); + scriptElement!.onload!({} as unknown as Event); CoralEmbedStream.remove(); expect(removeStub.called).toBe(true); } finally { diff --git a/client/src/core/client/framework/hooks/useModerationLink.ts b/client/src/core/client/framework/hooks/useModerationLink.ts index 5816ce6ea2..21ec470846 100644 --- a/client/src/core/client/framework/hooks/useModerationLink.ts +++ b/client/src/core/client/framework/hooks/useModerationLink.ts @@ -6,7 +6,7 @@ import { useCoralContext } from "coral-framework/lib/bootstrap"; /** * useModerationLink is a react hook that returns an url to moderation. */ -export default function useModerationLink(options: Options): string { +export default function useModerationLink(options: Options): string { const { rootURL } = useCoralContext(); return rootURL + getModerationLink(options); } diff --git a/client/src/core/client/framework/hooks/useToken.ts b/client/src/core/client/framework/hooks/useToken.ts index 9f2a8c7578..d46cc5bdc9 100644 --- a/client/src/core/client/framework/hooks/useToken.ts +++ b/client/src/core/client/framework/hooks/useToken.ts @@ -41,7 +41,7 @@ export default function useToken( if (error instanceof InvalidRequestError) { handleTokenState("INVALID", error); } else { - handleTokenState("UNKNOWN", error); + handleTokenState("UNKNOWN", error as Error | undefined); } }); } else { diff --git a/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx b/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx index 70cb29fca6..7e864243b8 100644 --- a/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx +++ b/client/src/core/client/framework/lib/bootstrap/CoralContext.tsx @@ -102,7 +102,8 @@ export interface CoralContext { customScrollContainer?: HTMLElement; } -export const CoralReactContext = React.createContext({}); +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument +export const CoralReactContext = React.createContext({} as any); export const useCoralContext = () => React.useContext(CoralReactContext); diff --git a/client/src/core/client/framework/lib/events.ts b/client/src/core/client/framework/lib/events.ts index 25dc1245d9..7aad531732 100644 --- a/client/src/core/client/framework/lib/events.ts +++ b/client/src/core/client/framework/lib/events.ts @@ -123,7 +123,8 @@ export function useViewerEvent( ): keyof T extends never ? () => void : (data: T) => void { const { eventEmitter } = useCoralContext(); return ((data?: T) => { - viewerEvent.emit(eventEmitter, data); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + viewerEvent.emit(eventEmitter, data as any); }) as any; } @@ -142,6 +143,7 @@ export function useViewerNetworkEvent< ) => ViewerNetworkEventStarted { const { eventEmitter } = useCoralContext(); return ((data?: T) => { - return viewerNetworkEvent.begin(eventEmitter, data); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + return viewerNetworkEvent.begin(eventEmitter, data as any); }) as any; } diff --git a/client/src/core/client/framework/lib/form/helpers.tsx b/client/src/core/client/framework/lib/form/helpers.tsx index e16b8b5e46..528cf9de0b 100644 --- a/client/src/core/client/framework/lib/form/helpers.tsx +++ b/client/src/core/client/framework/lib/form/helpers.tsx @@ -25,7 +25,7 @@ export const parseEmptyAsNull = (v: any) => { }; export const parseWithDOMPurify: any = (v: any) => { - if (v === "") { + if (v === "" || !(typeof v === "string")) { return null; } return DOMPurify.sanitize(v); @@ -39,7 +39,7 @@ export const formatEmpty = (v: any) => { }; export const parsePercentage = (v: any) => { - if (v === "") { + if (v === "" || !(typeof v === "number")) { return null; } if (isNaN(v)) { @@ -48,7 +48,7 @@ export const parsePercentage = (v: any) => { return v / 100; }; export const formatPercentage = (v: any) => { - if (v === null || v === undefined) { + if (v === null || v === undefined || !(typeof v === "number")) { return ""; } if (isNaN(v)) { @@ -64,6 +64,9 @@ export const formatBool = (v: boolean) => { }; export const parseInteger = (v: any) => { + if (typeof v !== "string") { + return v; + } const result = Number.parseInt(v, 10); if (isNaN(result)) { return v; diff --git a/client/src/core/client/framework/lib/i18n/types/FluentShortNumber.ts b/client/src/core/client/framework/lib/i18n/types/FluentShortNumber.ts index 265b61e9d9..2b366972fe 100644 --- a/client/src/core/client/framework/lib/i18n/types/FluentShortNumber.ts +++ b/client/src/core/client/framework/lib/i18n/types/FluentShortNumber.ts @@ -48,7 +48,9 @@ export default class FluentShortNumber extends FluentNumber { if (this.value < 1000) { return super.toString(scope); } - const key = `framework-shortNumber-${getShortNumberCode(this.value)}`; + const key = `framework-shortNumber-${getShortNumberCode( + this.value as number + )}`; const fmt = scope.bundle.getMessage(key); // Handle message not found. @@ -75,7 +77,7 @@ export default class FluentShortNumber extends FluentNumber { return super.toString(scope); } - return formatShortNumber(this.value, fmt.value, scope); + return formatShortNumber(this.value as number, fmt.value, scope); } public match(bundle: FluentBundle, other: FluentType) { diff --git a/client/src/core/client/framework/lib/intersection/IntersectionContext.tsx b/client/src/core/client/framework/lib/intersection/IntersectionContext.tsx index 98dbafa60f..6d888c7eff 100644 --- a/client/src/core/client/framework/lib/intersection/IntersectionContext.tsx +++ b/client/src/core/client/framework/lib/intersection/IntersectionContext.tsx @@ -11,7 +11,9 @@ export interface IntersectionContext { observe: Observe; } -const IntersectionContext = React.createContext({} as any); +const IntersectionContext = React.createContext( + {} as unknown as IntersectionContext +); export const useIntersectionContext = () => React.useContext(IntersectionContext); diff --git a/client/src/core/client/framework/lib/network/createNetwork.ts b/client/src/core/client/framework/lib/network/createNetwork.ts index 290464d69a..8b7285347b 100644 --- a/client/src/core/client/framework/lib/network/createNetwork.ts +++ b/client/src/core/client/framework/lib/network/createNetwork.ts @@ -28,6 +28,7 @@ function createSubscriptionFunction( const fn: SubscribeFunction = (operation, variables, cacheConfig) => { return Observable.create((sink) => { const subscription = subscriptionClient.subscribe( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument operation as any, variables, { diff --git a/client/src/core/client/framework/lib/network/customErrorMiddleware.ts b/client/src/core/client/framework/lib/network/customErrorMiddleware.ts index 71638fba52..e85411780b 100644 --- a/client/src/core/client/framework/lib/network/customErrorMiddleware.ts +++ b/client/src/core/client/framework/lib/network/customErrorMiddleware.ts @@ -23,9 +23,12 @@ const customErrorMiddleware: (localeBundles: FluentBundle[]) => Middleware = return res; } catch (error) { // Make sure we are online, otherwise throw. - assertOnline(error); - if (isRRNLRequestError(error)) { - throw new RelayNetworkRequestError(error, localeBundles); + assertOnline(error as Error); + if (isRRNLRequestError(error as Error)) { + throw new RelayNetworkRequestError( + error as RRNLRequestError, + localeBundles + ); } throw error; } diff --git a/client/src/core/client/framework/lib/network/extractTraceableError.ts b/client/src/core/client/framework/lib/network/extractTraceableError.ts index ed971b4f7e..60134e608d 100644 --- a/client/src/core/client/framework/lib/network/extractTraceableError.ts +++ b/client/src/core/client/framework/lib/network/extractTraceableError.ts @@ -36,17 +36,26 @@ function extractTraceableErrorFromExtensions( throw origin || extensions; } if (extensions.type === ERROR_TYPES.INVALID_REQUEST_ERROR) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return new InvalidRequestError(extensions as any); } if (extensions.type === ERROR_TYPES.MODERATION_NUDGE_ERROR) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return new ModerationNudgeError(extensions as any); } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return new UnknownServerError(extensions as any, origin); } export default function extractTraceableError(error: Error): TraceableError { if (!isGraphQLErrorWithExtensions(error)) { - return extractTraceableErrorFromExtensions(error as any, error); + return extractTraceableErrorFromExtensions( + error as unknown as CoralErrorExtensions, + error + ); } - return extractTraceableErrorFromExtensions(error.extensions, error); + return extractTraceableErrorFromExtensions( + error.extensions as unknown as CoralErrorExtensions, + error + ); } diff --git a/client/src/core/client/framework/lib/relay/commitMutationPromise.ts b/client/src/core/client/framework/lib/relay/commitMutationPromise.ts index 3a92112f54..d0c66ba87c 100644 --- a/client/src/core/client/framework/lib/relay/commitMutationPromise.ts +++ b/client/src/core/client/framework/lib/relay/commitMutationPromise.ts @@ -47,6 +47,7 @@ export function commitMutationPromise( reject(errors); return; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument resolve(extractPayload(response)); }, onError: (error) => { diff --git a/client/src/core/client/framework/lib/relay/createAndRetain.ts b/client/src/core/client/framework/lib/relay/createAndRetain.ts index cd1b1ffca0..607b649246 100644 --- a/client/src/core/client/framework/lib/relay/createAndRetain.ts +++ b/client/src/core/client/framework/lib/relay/createAndRetain.ts @@ -2,6 +2,8 @@ import { createOperationDescriptor, Environment, getRequest, + GraphQLTaggedNode, + OperationDescriptor, RecordProxy, RecordSourceProxy, } from "relay-runtime"; @@ -21,7 +23,7 @@ export default function createAndRetain( ): RecordProxy { // TODO: (cvle) This part is still hacky. // Waiting for a solution to https://github.com/facebook/relay/issues/2997#issuecomment-604218660. - const query = { + const query: GraphQLTaggedNode = { kind: "Request", operation: { kind: "Operation", @@ -34,7 +36,7 @@ export default function createAndRetain( }, } as any; // TODO: (cvle) Third argument missing in type, remove `as any` when added. - const operation = (createOperationDescriptor as any)( + const operation: OperationDescriptor = (createOperationDescriptor as any)( getRequest(query), {}, id diff --git a/client/src/core/client/framework/lib/relay/extractPayload.ts b/client/src/core/client/framework/lib/relay/extractPayload.ts index 4b695e0ccd..098a375a9a 100644 --- a/client/src/core/client/framework/lib/relay/extractPayload.ts +++ b/client/src/core/client/framework/lib/relay/extractPayload.ts @@ -1,5 +1,7 @@ // Extract the payload from the response, + export default function extractPayload(response: any): any { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const keys = Object.keys(response); if (keys.length !== 1) { return response; diff --git a/client/src/core/client/framework/lib/relay/fetch.tsx b/client/src/core/client/framework/lib/relay/fetch.tsx index 3ee3b792bf..5c229b8494 100644 --- a/client/src/core/client/framework/lib/relay/fetch.tsx +++ b/client/src/core/client/framework/lib/relay/fetch.tsx @@ -56,6 +56,7 @@ export function useFetch( ): FetchProp { const context = useCoralContext(); return useCallback>( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument ((variables: V) => { // TODO: (cvle) Naming of these events are deprecated. context.eventEmitter.emit(`fetch.${fetch.name}`, variables); diff --git a/client/src/core/client/framework/lib/relay/lookup.ts b/client/src/core/client/framework/lib/relay/lookup.ts index bfa8b4c1eb..67f4d23bde 100644 --- a/client/src/core/client/framework/lib/relay/lookup.ts +++ b/client/src/core/client/framework/lib/relay/lookup.ts @@ -41,6 +41,7 @@ const createProxy = ( if (rsrc[prop]) { // Resolve references. if (rsrc[prop].__ref) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return lookup(environment, rsrc[prop].__ref); } // Resolve array references. diff --git a/client/src/core/client/framework/lib/relay/mutation.tsx b/client/src/core/client/framework/lib/relay/mutation.tsx index c5c52b84f5..4ac2cfdd30 100644 --- a/client/src/core/client/framework/lib/relay/mutation.tsx +++ b/client/src/core/client/framework/lib/relay/mutation.tsx @@ -67,11 +67,12 @@ export function useMutation( ): MutationProp { const context = useCoralContext(); return useCallback>( - (input: I) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + ((input: I) => { // TODO: (cvle) Naming of these events are deprecated. context.eventEmitter.emit(`mutation.${mutation.name}`, input); return mutation.commit(context.relayEnvironment, input, context); - }, + }) as any, [context] ); } diff --git a/client/src/core/client/framework/lib/relay/subscription.tsx b/client/src/core/client/framework/lib/relay/subscription.tsx index d456a75b5f..aec66c24b0 100644 --- a/client/src/core/client/framework/lib/relay/subscription.tsx +++ b/client/src/core/client/framework/lib/relay/subscription.tsx @@ -93,7 +93,8 @@ export function useSubscription( const context = useCoralContext(); // eslint-disable-next-line react-hooks/exhaustive-deps return useCallback>( - (variables: V) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + ((variables: V) => { // TODO: (cvle) Do we need to keep this one around? Was replaced by `subscription.${name}.subscribe`,`subscription.${name}.unsubscribe`, `subscription.${name}.data` context.eventEmitter.emit(`subscription.${subscription.name}`, variables); return subscription.subscribe( @@ -101,7 +102,7 @@ export function useSubscription( variables, context ); - }, + }) as any, [context, subscription] ); } diff --git a/client/src/core/client/framework/lib/relay/useLocal.tsx b/client/src/core/client/framework/lib/relay/useLocal.tsx index 99ef695a1d..cc8d8d5d54 100644 --- a/client/src/core/client/framework/lib/relay/useLocal.tsx +++ b/client/src/core/client/framework/lib/relay/useLocal.tsx @@ -98,10 +98,12 @@ function useLocal( return relayEnvironment.lookup(selector); }, [selector, relayEnvironment]); - const [local, setLocal] = useState(() => snapshot.data); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const [local, setLocal] = useState(() => snapshot.data as any); useEffectWhenChanged(() => { - setLocal(snapshot.data); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + setLocal(snapshot.data as any); }, [snapshot]); const localUpdate = useCallback( @@ -125,7 +127,8 @@ function useLocal( useEffect(() => { const subscription = relayEnvironment.subscribe(snapshot, (update) => - setLocal(update.data) + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + setLocal(update.data as any) ); return () => { subscription.dispose(); diff --git a/client/src/core/client/framework/lib/rest.ts b/client/src/core/client/framework/lib/rest.ts index 8b5708b7d0..233bc5e507 100644 --- a/client/src/core/client/framework/lib/rest.ts +++ b/client/src/core/client/framework/lib/rest.ts @@ -33,7 +33,7 @@ const handleResp = async (res: Response) => { if (!res.ok) { if (type && type.includes("application/json")) { const response = await res.json(); - throw extractTraceableError(response.error); + throw extractTraceableError(response.error as Error); } else { const response = await res.text(); throw new Error(response); @@ -97,7 +97,7 @@ export class RestClient { const response = await fetch(`${this.uri}${path}`, buildOptions(opts)); return handleResp(response); } catch (error) { - assertOnline(error); + assertOnline(error as Error); throw error; } } diff --git a/client/src/core/client/framework/lib/storage/IndexedDBStorage.ts b/client/src/core/client/framework/lib/storage/IndexedDBStorage.ts index 729c3d4046..425c5dcdd2 100644 --- a/client/src/core/client/framework/lib/storage/IndexedDBStorage.ts +++ b/client/src/core/client/framework/lib/storage/IndexedDBStorage.ts @@ -34,6 +34,7 @@ class IndexedDBStorage implements PromisifiedStorage { const call = () => { const request = callback(); request.onsuccess = function (event) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument resolve((event.target as any).result); }; request.onerror = function (event) { diff --git a/client/src/core/client/framework/lib/storage/prefixStorage.spec.ts b/client/src/core/client/framework/lib/storage/prefixStorage.spec.ts index 923c2f7e7f..b1deaa517f 100644 --- a/client/src/core/client/framework/lib/storage/prefixStorage.spec.ts +++ b/client/src/core/client/framework/lib/storage/prefixStorage.spec.ts @@ -36,7 +36,7 @@ it("should prefix setItem", () => { setItem: sinon.mock().withArgs("coral:key", "value"), }; - const prefixed = prefixStorage(storage as any, "coral:"); + const prefixed = prefixStorage(storage as unknown as Storage, "coral:"); prefixed.setItem("key", "value"); storage.setItem.verify(); }); @@ -46,7 +46,7 @@ it("should prefix removeItem", () => { removeItem: sinon.mock().withArgs("coral:key"), }; - const prefixed = prefixStorage(storage as any, "coral:"); + const prefixed = prefixStorage(storage as unknown as Storage, "coral:"); prefixed.removeItem("key"); storage.removeItem.verify(); }); @@ -57,7 +57,7 @@ it("should prefix getItem", () => { getItem: sinon.mock().withArgs("coral:key").returns(ret), }; - const prefixed = prefixStorage(storage as any, "coral:"); + const prefixed = prefixStorage(storage as unknown as Storage, "coral:"); expect(prefixed.getItem("key")).toBe(ret); (storage.getItem as any).verify(); }); diff --git a/client/src/core/client/framework/testHelpers/byID.ts b/client/src/core/client/framework/testHelpers/byID.ts index 9476a68d60..f2caf7bf1d 100644 --- a/client/src/core/client/framework/testHelpers/byID.ts +++ b/client/src/core/client/framework/testHelpers/byID.ts @@ -9,7 +9,7 @@ const matcher = if (typeof i.type !== "string" || !i.props.id) { return false; } - return matchText(pattern, i.props.id, { + return matchText(pattern, i.props.id as string, { collapseWhitespace: false, ...options, }); diff --git a/client/src/core/client/framework/testHelpers/byLabelText.ts b/client/src/core/client/framework/testHelpers/byLabelText.ts index af8f11413c..0656f438d6 100644 --- a/client/src/core/client/framework/testHelpers/byLabelText.ts +++ b/client/src/core/client/framework/testHelpers/byLabelText.ts @@ -11,7 +11,7 @@ const ariaLabelMatcher = if (typeof i.type !== "string" || !i.props["aria-label"]) { return false; } - return matchText(pattern, i.props["aria-label"], { + return matchText(pattern, i.props["aria-label"] as string, { collapseWhitespace: false, ...options, }); diff --git a/client/src/core/client/framework/testHelpers/byTestID.ts b/client/src/core/client/framework/testHelpers/byTestID.ts index 47507306ec..66404603ae 100644 --- a/client/src/core/client/framework/testHelpers/byTestID.ts +++ b/client/src/core/client/framework/testHelpers/byTestID.ts @@ -9,7 +9,7 @@ const matcher = if (typeof i.type !== "string" || !i.props["data-testid"]) { return false; } - return matchText(pattern, i.props["data-testid"], { + return matchText(pattern, i.props["data-testid"] as string, { collapseWhitespace: false, ...options, }); diff --git a/client/src/core/client/framework/testHelpers/byTitle.ts b/client/src/core/client/framework/testHelpers/byTitle.ts index 79ee4ff350..b06972c8fb 100644 --- a/client/src/core/client/framework/testHelpers/byTitle.ts +++ b/client/src/core/client/framework/testHelpers/byTitle.ts @@ -9,7 +9,7 @@ const matcher = if (typeof i.type !== "string" || !i.props.title) { return false; } - return matchText(pattern, i.props.title, { + return matchText(pattern, i.props.title as string, { collapseWhitespace: false, ...options, }); diff --git a/client/src/core/client/framework/testHelpers/createFluentBundle.ts b/client/src/core/client/framework/testHelpers/createFluentBundle.ts index def9a423bc..3d2ca150c7 100644 --- a/client/src/core/client/framework/testHelpers/createFluentBundle.ts +++ b/client/src/core/client/framework/testHelpers/createFluentBundle.ts @@ -45,8 +45,8 @@ function createFluentBundle( files.forEach((f) => { prefixes.forEach((prefix) => { if (f.startsWith(prefix)) { - // eslint-disable-next-line @typescript-eslint/no-var-requires bundle.addResource( + // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-argument new FluentResource(require(path.resolve(pathToLocale, f))) ); } diff --git a/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts b/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts index 3087efeffb..eb1f494593 100644 --- a/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts +++ b/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts @@ -132,7 +132,7 @@ function createSubscribe( const sel = subscriptionSelections[0]; const subscription = { field: sel.name.value, - variables: resolveArguments(variables, sel.arguments), + variables: resolveArguments(variables, sel.arguments as any[]), dispatch: (response: any) => { sink.next({ data: { @@ -164,7 +164,9 @@ export default function createRelayEnvironment( muteErrors: params.network.muteNetworkErrors, }), params.network.subscriptionHandler - ? (createSubscribe(params.network.subscriptionHandler) as any) + ? (createSubscribe( + params.network.subscriptionHandler + ) as unknown as SubscribeFunction) : undefined ); } diff --git a/client/src/core/client/framework/testHelpers/denormalize.ts b/client/src/core/client/framework/testHelpers/denormalize.ts index 341c836057..81f3400d33 100644 --- a/client/src/core/client/framework/testHelpers/denormalize.ts +++ b/client/src/core/client/framework/testHelpers/denormalize.ts @@ -54,7 +54,7 @@ export function denormalizeStory(story: Fixture) { const commentEdges = (story.comments && story.comments.edges && - story.comments.edges.map((edge: any) => ({ + story.comments.edges.map((edge: GQLCommentEdge) => ({ ...edge, node: denormalizeComment(edge.node), }))) || diff --git a/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts b/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts index bc72087cf3..1964d43622 100644 --- a/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts +++ b/client/src/core/client/framework/testHelpers/overwriteQueryResolver.ts @@ -28,8 +28,9 @@ type OverwriteQueryResolverTemplate = { * @param original original resolver object * @param overwrite overwrite resolver object or value */ -function overwriteRecursive(original: any, overwrite: unknown) { +function overwriteRecursive(original: any, overwrite: any) { let ret = original; + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument Object.keys(overwrite).forEach((k) => { ret = { ...original, diff --git a/client/src/core/client/framework/testHelpers/within.ts b/client/src/core/client/framework/testHelpers/within.ts index ce159e7d0d..62dbb52998 100644 --- a/client/src/core/client/framework/testHelpers/within.ts +++ b/client/src/core/client/framework/testHelpers/within.ts @@ -51,6 +51,7 @@ function applyContainer( container: ReactTestInstance, fn: (...args: T) => R ): RemoveFirstArgument { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return ((...args: any[]) => fn(...([container, ...args] as any))) as any; } diff --git a/client/src/core/client/install/App/App.tsx b/client/src/core/client/install/App/App.tsx index 0ab03a1c25..580f7cf297 100644 --- a/client/src/core/client/install/App/App.tsx +++ b/client/src/core/client/install/App/App.tsx @@ -26,7 +26,7 @@ const App: FunctionComponent = () => { await checkInstall({}); setState("success"); } catch (err) { - setError(err.message); + setError(err.message as string); setState("failure"); if (err.code !== ERROR_CODES.RATE_LIMIT_EXCEEDED) { await context.clearSession(""); diff --git a/client/src/core/client/stream/App/listeners/OnEmbedSetCommentID.spec.tsx b/client/src/core/client/stream/App/listeners/OnEmbedSetCommentID.spec.tsx index b2782d79d6..3941941e7c 100644 --- a/client/src/core/client/stream/App/listeners/OnEmbedSetCommentID.spec.tsx +++ b/client/src/core/client/stream/App/listeners/OnEmbedSetCommentID.spec.tsx @@ -28,7 +28,7 @@ it("Sets comment id", () => { const id = "comment1-id"; const props = { eventEmitter: { - on: (eventName: string, cb: (id: string) => void) => { + on: (eventName: string, cb: (commentID: string) => void) => { expect(eventName).toBe("embed.setCommentID"); cb(id); }, @@ -44,7 +44,7 @@ it("Sets comment id to null when empty", () => { const id = ""; const props = { eventEmitter: { - on: (eventName: string, cb: (id: string) => void) => { + on: (eventName: string, cb: (commentID: string) => void) => { expect(eventName).toBe("embed.setCommentID"); cb(id); }, diff --git a/client/src/core/client/stream/App/listeners/OnEventsForRudderStack.spec.tsx b/client/src/core/client/stream/App/listeners/OnEventsForRudderStack.spec.tsx index 017ab7eda1..c7e6e2c626 100644 --- a/client/src/core/client/stream/App/listeners/OnEventsForRudderStack.spec.tsx +++ b/client/src/core/client/stream/App/listeners/OnEventsForRudderStack.spec.tsx @@ -33,7 +33,7 @@ it("Broadcasts events to rudderstack", () => { const value = { value: true }; const eventName = testCase.eventName; const eventEmitter: any = { - onAny: (cb: (eventName: string, value: any) => void) => { + onAny: (cb: (event: string, val: any) => void) => { cb(eventName, value); }, }; diff --git a/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx b/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx index 504afad2b4..34df042ef2 100644 --- a/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx +++ b/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx @@ -164,7 +164,7 @@ const getCurrentKeyStop = ( root: ShadowRoot | Document, relayEnvironment: Environment ) => { - const currentCommentID = lookup( + const currentCommentID: string = lookup( relayEnvironment, LOCAL_ID ).commentWithTraversalFocus; @@ -1298,7 +1298,16 @@ const KeyboardShortcuts: FunctionComponent = ({ // Traverse to next comment/reply after loading more/new comments and replies useEffect(() => { - const listener: ListenerFn = async (e, data) => { + const listener: ListenerFn = async ( + e: string, + data: { + keyboardShortcutsConfig: { + key: "z" | "c"; + reverse: boolean; + source: "keyboard" | "mobileToolbar"; + }; + } + ) => { if (loadMoreEvents.includes(e)) { // Announce height change to embed to allow // immediately updating amp iframe height @@ -1312,7 +1321,7 @@ const KeyboardShortcuts: FunctionComponent = ({ if (data.keyboardShortcutsConfig && zKeyClickedButton) { if (e === LoadMoreAllCommentsEvent.nameSuccess) { let count = 0; - const stopExists: any = setInterval(async () => { + const stopExists: NodeJS.Timeout = setInterval(async () => { count += 1; const stopElement = root.getElementById("comments-loadAll"); if (stopElement === null) { @@ -1348,13 +1357,19 @@ const KeyboardShortcuts: FunctionComponent = ({ // Subscribe to keypress events. useEffect(() => { renderWindow.addEventListener("keypress", handleWindowKeypress); - root.addEventListener("keypress", handleKeypress as any); + root.addEventListener( + "keypress", + handleKeypress as unknown as EventListenerOrEventListenerObject + ); return () => { if (renderWindow.removeEventListener) { renderWindow.removeEventListener("keypress", handleWindowKeypress); } - root.removeEventListener("keypress", handleKeypress as any); + root.removeEventListener( + "keypress", + handleKeypress as unknown as EventListenerOrEventListenerObject + ); }; }, [handleKeypress, handleWindowKeypress, renderWindow, root]); diff --git a/client/src/core/client/stream/constants.ts b/client/src/core/client/stream/constants.ts index cf23fcc10b..8817715fc4 100644 --- a/client/src/core/client/stream/constants.ts +++ b/client/src/core/client/stream/constants.ts @@ -10,6 +10,7 @@ export const NUM_INITIAL_COMMENTS = 20; export const RTE_ELEMENT_ID = "Coral-RTE"; +// eslint-disable-next-line no-shadow export const enum URLViewType { IllegalContentReport = "illegalContentReport", } diff --git a/client/src/core/client/stream/mutations/SetCommentIDMutation.spec.ts b/client/src/core/client/stream/mutations/SetCommentIDMutation.spec.ts index a590214aa3..2dffbe28b8 100644 --- a/client/src/core/client/stream/mutations/SetCommentIDMutation.spec.ts +++ b/client/src/core/client/stream/mutations/SetCommentIDMutation.spec.ts @@ -3,6 +3,7 @@ import sinon from "sinon"; import { waitFor } from "coral-common/common/lib/helpers"; import { parseQuery } from "coral-common/common/lib/utils"; +import { CoralContext } from "coral-framework/lib/bootstrap"; import { LOCAL_ID } from "coral-framework/lib/relay"; import { createRelayEnvironment } from "coral-framework/testHelpers"; @@ -31,7 +32,7 @@ it("Sets comment id", async () => { window, renderWindow: window, }; - await commit(environment, { id }, context as any); + await commit(environment, { id }, context as unknown as CoralContext); expect(source.get(LOCAL_ID)!.commentID).toEqual(id); }); @@ -44,7 +45,7 @@ it("Should call setCommentID in eventEmitter", async () => { window, renderWindow: window, }; - await commit(environment, { id }, context as any); + await commit(environment, { id }, context as unknown as CoralContext); await waitFor(); expect(source.get(LOCAL_ID)!.commentID).toEqual(id); context.eventEmitter.emit.verify(); @@ -58,7 +59,7 @@ it("Should call setCommentID in eventEmitter with empty id", async () => { window, renderWindow: window, }; - await commit(environment, { id: null }, context as any); + await commit(environment, { id: null }, context as unknown as CoralContext); await waitFor(); expect(source.get(LOCAL_ID)!.commentID).toEqual(null); expect(parseQuery(location.search).commentID).toBeUndefined(); diff --git a/client/src/core/client/stream/shadow/EmotionShadowRoot.tsx b/client/src/core/client/stream/shadow/EmotionShadowRoot.tsx index d86e5a0132..f094519db4 100644 --- a/client/src/core/client/stream/shadow/EmotionShadowRoot.tsx +++ b/client/src/core/client/stream/shadow/EmotionShadowRoot.tsx @@ -13,21 +13,27 @@ const createProxy = (ReactShadow as any).createProxy; * TODO: (cvle) Currently some styles still slip into light dom. * TODO: (cvle) Replace giphy components? */ -export default createProxy({}, "emotion", ({ root, children }: any) => { - const options = - cache.get(root) || - (() => { - const opts = createCache({ - container: root, - key: "react-shadow", - }); - cache.set(root, opts); - return opts; - })(); +export default createProxy( + {}, + "emotion", + ({ root, children }: { root: any; children: any }) => { + const options = + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + cache.get(root) || + (() => { + const opts = createCache({ + container: root, + key: "react-shadow", + }); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + cache.set(root, opts); + return opts; + })(); - return ( - - <>{children} - - ); -}); + return ( + + <>{children} + + ); + } +); diff --git a/client/src/core/client/stream/tabs/Comments/Comment/PermalinkButton/PermalinkPopover.tsx b/client/src/core/client/stream/tabs/Comments/Comment/PermalinkButton/PermalinkPopover.tsx index def6f3605e..38fe769a52 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/PermalinkButton/PermalinkPopover.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/PermalinkButton/PermalinkPopover.tsx @@ -33,12 +33,14 @@ const PermalinkPopover: FunctionComponent = ({ emitShowEvent({ commentID }); }, [emitShowEvent, commentID]); - const timeout: any = useRef(null); + const timeout = useRef(null); // clear time out when we de-scope useEffect(() => { return function cleanup() { - clearTimeout(timeout); + if (timeout && timeout.current) { + clearTimeout(timeout.current); + } }; }, [timeout]); @@ -47,7 +49,9 @@ const PermalinkPopover: FunctionComponent = ({ }, [toggleVisibility]); const onCopied = useCallback(() => { - clearTimeout(timeout); + if (timeout && timeout.current) { + clearTimeout(timeout.current); + } timeout.current = setTimeout(timeoutCallback, 750); }, [timeout, timeoutCallback]); diff --git a/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/CreateCommentReplyMutation.ts b/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/CreateCommentReplyMutation.ts index eb96ee2385..f87609a1d0 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/CreateCommentReplyMutation.ts +++ b/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/CreateCommentReplyMutation.ts @@ -158,8 +158,8 @@ function addCommentReplyToStory( commentEdge: RecordProxy ) { const flattenReplies = lookupFlattenReplies(environment); - const singleCommentID = lookup(environment, LOCAL_ID).commentID; - const refreshStream = lookup(environment, LOCAL_ID).refreshStream; + const singleCommentID: string = lookup(environment, LOCAL_ID).commentID; + const refreshStream: boolean = lookup(environment, LOCAL_ID).refreshStream; const comment = commentEdge.getLinkedRecord("node")!; const depth = singleCommentID ? determineDepthTillAncestor(store, comment, refreshStream, singleCommentID) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/ReplyCommentFormContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/ReplyCommentFormContainer.tsx index 6d3f80ad18..de1bb5700e 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/ReplyCommentFormContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/ReplyCommentForm/ReplyCommentFormContainer.tsx @@ -216,6 +216,7 @@ const ReplyCommentFormContainer: FunctionComponent = ({ const handleOnChange: ReplyCommentFormProps["onChange"] = useCallback( (state: any, form: any) => { if (state.values.body) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument void sessionStorage.setItem(contextKey, state.values.body); } else { void sessionStorage.removeItem(contextKey); diff --git a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx index c442de61a0..68952b29f8 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx @@ -156,7 +156,7 @@ const UserBanPopoverContainer: FunctionComponent = ({ } } catch (e) { if (e.message) { - setBanError(e.message); + setBanError(e.message as string); } } if (siteBan) { diff --git a/client/src/core/client/stream/tabs/Comments/Comment/UserTagsContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/UserTagsContainer.tsx index bfe900031c..d0828bed17 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/UserTagsContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/UserTagsContainer.tsx @@ -56,8 +56,11 @@ function hasExpertTag( // isn't smart enough to see that the nested fragments // on the comment container are compatible. export function commentHasTags(story: any, comment: any) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const staffTag = hasStaffTag(comment); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const expertTag = hasExpertTag(story, comment); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const memberTag = hasMemberTag(comment); const hasTags = staffTag || expertTag || memberTag; diff --git a/client/src/core/client/stream/tabs/Comments/ExternalImageInput/ExternalImageInput.tsx b/client/src/core/client/stream/tabs/Comments/ExternalImageInput/ExternalImageInput.tsx index b2786e947d..8325c0da91 100644 --- a/client/src/core/client/stream/tabs/Comments/ExternalImageInput/ExternalImageInput.tsx +++ b/client/src/core/client/stream/tabs/Comments/ExternalImageInput/ExternalImageInput.tsx @@ -34,7 +34,11 @@ const ExternalImageInput: FunctionComponent = ({ onSelect }) => { }, []); return ( -
onSelect(externalImg)}> + + onSelect(externalImg) + } + > {({ handleSubmit, submitting, pristine }) => (
diff --git a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AdditionalCommentQuery.tsx b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AdditionalCommentQuery.tsx index 30476a0d1d..303e1df967 100644 --- a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AdditionalCommentQuery.tsx +++ b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/AdditionalCommentQuery.tsx @@ -13,7 +13,7 @@ import { AdditionalCommentQuery as QueryTypes } from "coral-stream/__generated__ export const render = ( { error, props }: QueryRenderData, additionalComment: { id: string; url: string }, - onAddCommentError: (error: string, commentID: string) => void, + onAddCommentError: (errorMessage: string, commentID: string) => void, onAddCommentSuccess: (id: string, url: string) => void, localeBundles: FluentBundle[] ) => { @@ -51,7 +51,7 @@ export const render = ( interface Props { additionalComment: { id: string; url: string }; - onAddCommentError: (error: string, commentID: string) => void; + onAddCommentError: (errorMessage: string, commentID: string) => void; onAddCommentSuccess: (id: string, url: string) => void; } diff --git a/client/src/core/client/stream/tabs/Comments/Stream/AllCommentsTab/SpinnerWhileRendering/SpinnerWhileRendering.tsx b/client/src/core/client/stream/tabs/Comments/Stream/AllCommentsTab/SpinnerWhileRendering/SpinnerWhileRendering.tsx index 8b72a531e2..9f8fcea6eb 100644 --- a/client/src/core/client/stream/tabs/Comments/Stream/AllCommentsTab/SpinnerWhileRendering/SpinnerWhileRendering.tsx +++ b/client/src/core/client/stream/tabs/Comments/Stream/AllCommentsTab/SpinnerWhileRendering/SpinnerWhileRendering.tsx @@ -11,7 +11,7 @@ function callWhenReallyIdle(window: Window, callback: () => void) { const supportsIdleCallbacks = (window as any).requestIdleCallback && (window as any).cancelIdleCallback; - let handle: any = null; + let handle: NodeJS.Timeout | null = null; const rIC = (cb: () => void) => { if (supportsIdleCallbacks) { handle = (window as any).requestIdleCallback(cb, { timeout: 300 }); @@ -34,7 +34,9 @@ function callWhenReallyIdle(window: Window, callback: () => void) { if (supportsIdleCallbacks) { (window as any).cancelIdleCallback(handle); } else { - clearTimeout(handle); + if (handle) { + clearTimeout(handle); + } } }; } diff --git a/client/src/core/client/stream/tabs/Comments/Stream/CommentForm/CommentForm.tsx b/client/src/core/client/stream/tabs/Comments/Stream/CommentForm/CommentForm.tsx index dd28cd71c8..ac9f38b3bd 100644 --- a/client/src/core/client/stream/tabs/Comments/Stream/CommentForm/CommentForm.tsx +++ b/client/src/core/client/stream/tabs/Comments/Stream/CommentForm/CommentForm.tsx @@ -330,7 +330,10 @@ const CommentForm: FunctionComponent = ({ event.ctrlKey && (event.key === "Enter" || event.keyCode === 13) ) { - await onFormSubmit(values as any, form); + await onFormSubmit( + values as FormSubmitProps, + form + ); } }} value={input.value} diff --git a/client/src/core/client/stream/tabs/Comments/helpers/isInReview.ts b/client/src/core/client/stream/tabs/Comments/helpers/isInReview.ts index c093f6749e..16607c094a 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/isInReview.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/isInReview.ts @@ -1,5 +1,11 @@ -// TODO: use generated schema types. -const inReviewStatuses = ["PREMOD", "SYSTEM_WITHHELD"]; +import { GQLCOMMENT_STATUS } from "coral-framework/schema"; + +const inReviewStatuses = [ + GQLCOMMENT_STATUS.PREMOD, + GQLCOMMENT_STATUS.SYSTEM_WITHHELD, +]; + export default function isInReview(status: any) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return inReviewStatuses.includes(status); } diff --git a/client/src/core/client/stream/tabs/Comments/helpers/isPublished.ts b/client/src/core/client/stream/tabs/Comments/helpers/isPublished.ts index fccd21b8fb..b665560db9 100644 --- a/client/src/core/client/stream/tabs/Comments/helpers/isPublished.ts +++ b/client/src/core/client/stream/tabs/Comments/helpers/isPublished.ts @@ -3,5 +3,6 @@ import { GQLCOMMENT_STATUS } from "coral-framework/schema"; const PUBLISHED_STATUSES = [GQLCOMMENT_STATUS.NONE, GQLCOMMENT_STATUS.APPROVED]; export default function isPublished(status: any) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return PUBLISHED_STATUSES.includes(status); } diff --git a/client/src/core/client/stream/test/comments/create.ts b/client/src/core/client/stream/test/comments/create.ts index a80d090bf0..fafe9eeb98 100644 --- a/client/src/core/client/stream/test/comments/create.ts +++ b/client/src/core/client/stream/test/comments/create.ts @@ -23,7 +23,7 @@ const initLocalState = ( } }; -export default function create(params: CreateTestRendererParams) { +export default function create(params: CreateTestRendererParams) { return createTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { @@ -32,7 +32,7 @@ export default function create(params: CreateTestRendererParams) { }); } -export function createContext(params: CreateTestRendererParams) { +export function createContext(params: CreateTestRendererParams) { return createTopLevelContext({ ...params, initLocalState: (localRecord, source, environment) => { diff --git a/client/src/core/client/stream/test/comments/featured/create.ts b/client/src/core/client/stream/test/comments/featured/create.ts index 1a47f401e1..289ac0ab9d 100644 --- a/client/src/core/client/stream/test/comments/featured/create.ts +++ b/client/src/core/client/stream/test/comments/featured/create.ts @@ -19,7 +19,7 @@ const initLocalState = ( } }; -export default function create(params: CreateTestRendererParams) { +export default function create(params: CreateTestRendererParams) { return createTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { @@ -28,7 +28,7 @@ export default function create(params: CreateTestRendererParams) { }); } -export function createContext(params: CreateTestRendererParams) { +export function createContext(params: CreateTestRendererParams) { return createContextTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { diff --git a/client/src/core/client/stream/test/comments/stream/banned.spec.tsx b/client/src/core/client/stream/test/comments/stream/banned.spec.tsx index f7f68ed353..a9d9b5fc19 100644 --- a/client/src/core/client/stream/test/comments/stream/banned.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/banned.spec.tsx @@ -78,7 +78,7 @@ afterAll(() => { }); it("disables comment stream", async () => { - timekeeper.freeze(firstComment.createdAt); + timekeeper.freeze(firstComment.createdAt as Date); const { testRenderer, tabPane } = await createTestRenderer(); await waitForElement(() => within(testRenderer.root).getByTestID("comments-allComments-log") diff --git a/client/src/core/client/stream/test/comments/stream/charCountEditComment.spec.tsx b/client/src/core/client/stream/test/comments/stream/charCountEditComment.spec.tsx index b19d545378..2f585647b1 100644 --- a/client/src/core/client/stream/test/comments/stream/charCountEditComment.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/charCountEditComment.spec.tsx @@ -17,7 +17,7 @@ import { commenters, settings, stories } from "../../fixtures"; import create from "./create"; beforeAll(() => { - timekeeper.freeze(stories[0].comments.edges[0].node.createdAt); + timekeeper.freeze(stories[0].comments.edges[0].node.createdAt as Date); }); afterAll(() => { timekeeper.reset(); diff --git a/client/src/core/client/stream/test/comments/stream/create.ts b/client/src/core/client/stream/test/comments/stream/create.ts index 7e74bb542c..5f0c34dc9d 100644 --- a/client/src/core/client/stream/test/comments/stream/create.ts +++ b/client/src/core/client/stream/test/comments/stream/create.ts @@ -19,7 +19,7 @@ const initLocalState = ( } }; -export default function create(params: CreateTestRendererParams) { +export default function create(params: CreateTestRendererParams) { return createTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { @@ -28,7 +28,7 @@ export default function create(params: CreateTestRendererParams) { }); } -export function createContext(params: CreateTestRendererParams) { +export function createContext(params: CreateTestRendererParams) { return createContextTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { diff --git a/client/src/core/client/stream/test/comments/stream/editComment.spec.tsx b/client/src/core/client/stream/test/comments/stream/editComment.spec.tsx index f5a6d5b8d4..3a7ad83366 100644 --- a/client/src/core/client/stream/test/comments/stream/editComment.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/editComment.spec.tsx @@ -80,7 +80,7 @@ async function createTestRenderer( } beforeEach(() => { - timekeeper.freeze(commentWithReplies.createdAt); + timekeeper.freeze(commentWithReplies.createdAt as Date); }); afterEach(() => { diff --git a/client/src/core/client/stream/test/comments/stream/loadMore.spec.tsx b/client/src/core/client/stream/test/comments/stream/loadMore.spec.tsx index 3df51a8d1d..6b6efa45a4 100644 --- a/client/src/core/client/stream/test/comments/stream/loadMore.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/loadMore.spec.tsx @@ -15,6 +15,7 @@ const createTestRenderer = async () => { comments: createSinonStub((s) => s.callsFake((input: any) => { if ( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument isMatch(input, { first: 99999, orderBy: "CREATED_AT_DESC", @@ -35,6 +36,7 @@ const createTestRenderer = async () => { }; } if ( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument isMatch(input, { first: 20, orderBy: "CREATED_AT_DESC", diff --git a/client/src/core/client/stream/test/comments/stream/postComment.spec.tsx b/client/src/core/client/stream/test/comments/stream/postComment.spec.tsx index 03a044e794..ad94cafe4f 100644 --- a/client/src/core/client/stream/test/comments/stream/postComment.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/postComment.spec.tsx @@ -102,7 +102,7 @@ it("post a comment", async () => { await act(() => rte.props.onChange("Hello world!")); - timekeeper.freeze(new Date(baseComment.createdAt)); + timekeeper.freeze(new Date(baseComment.createdAt as Date)); await act(() => form.props.onSubmit()); timekeeper.reset(); diff --git a/client/src/core/client/stream/test/comments/stream/postReply.spec.tsx b/client/src/core/client/stream/test/comments/stream/postReply.spec.tsx index 4bd92a01c3..e3766fcc27 100644 --- a/client/src/core/client/stream/test/comments/stream/postReply.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/postReply.spec.tsx @@ -115,7 +115,7 @@ it("post a reply", async () => { // Write reply . act(() => rte.props.onChange("Hello world!")); - timekeeper.freeze(new Date(baseComment.createdAt)); + timekeeper.freeze(new Date(baseComment.createdAt as Date)); act(() => { form.props.onSubmit(); }); diff --git a/client/src/core/client/stream/test/comments/stream/suspended.spec.tsx b/client/src/core/client/stream/test/comments/stream/suspended.spec.tsx index 6bc8b2c3de..46ca78afc9 100644 --- a/client/src/core/client/stream/test/comments/stream/suspended.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/suspended.spec.tsx @@ -76,7 +76,7 @@ afterAll(() => { }); it("disables comment stream", async () => { - timekeeper.freeze(firstComment.createdAt); + timekeeper.freeze(firstComment.createdAt as Date); const { testRenderer, tabPane } = await createTestRenderer(); await waitForElement(() => within(testRenderer.root).getByTestID("comments-allComments-log") diff --git a/client/src/core/client/stream/test/configure/create.ts b/client/src/core/client/stream/test/configure/create.ts index d71baf9f43..f883bff9ae 100644 --- a/client/src/core/client/stream/test/configure/create.ts +++ b/client/src/core/client/stream/test/configure/create.ts @@ -19,7 +19,7 @@ const initLocalState = ( } }; -export default function create(params: CreateTestRendererParams) { +export default function create(params: CreateTestRendererParams) { return createTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { @@ -28,7 +28,7 @@ export default function create(params: CreateTestRendererParams) { }); } -export function createContext(params: CreateTestRendererParams) { +export function createContext(params: CreateTestRendererParams) { return createTopLevelContext({ ...params, initLocalState: (localRecord, source, environment) => { diff --git a/client/src/core/client/stream/test/create.tsx b/client/src/core/client/stream/test/create.tsx index 26ad0a9e76..cb3110ac9a 100644 --- a/client/src/core/client/stream/test/create.tsx +++ b/client/src/core/client/stream/test/create.tsx @@ -43,7 +43,7 @@ const initLocalState = ( localRecord.setValue(false, "hasNewNotifications"); }; -export default function create(params: CreateTestRendererParams) { +export default function create(params: CreateTestRendererParams) { return createTestRenderer("stream", , { ...params, initLocalState: (localRecord, source, environment) => { @@ -52,7 +52,7 @@ export default function create(params: CreateTestRendererParams) { }); } -export function createContext(params: CreateTestRendererParams) { +export function createContext(params: CreateTestRendererParams) { return createTestContext("stream", { ...params, initLocalState: (localRecord, source, environment) => { diff --git a/client/src/core/client/stream/test/profile/create.ts b/client/src/core/client/stream/test/profile/create.ts index 0b8c528f06..6d98e532a4 100644 --- a/client/src/core/client/stream/test/profile/create.ts +++ b/client/src/core/client/stream/test/profile/create.ts @@ -21,7 +21,7 @@ const initLocalState = ( } }; -export default function create(params: CreateTestRendererParams) { +export default function create(params: CreateTestRendererParams) { return createTopLevel({ ...params, initLocalState: (localRecord, source, environment) => { @@ -30,7 +30,9 @@ export default function create(params: CreateTestRendererParams) { }); } -export function createWithContext(params: CreateTestRendererParams) { +export function createWithContext( + params: CreateTestRendererParams +) { return createContext({ ...params, initLocalState: (localRecord, source, environment) => { diff --git a/client/src/core/client/test/expectAndFail.tsx b/client/src/core/client/test/expectAndFail.tsx index 3f0abdb150..18ae753058 100644 --- a/client/src/core/client/test/expectAndFail.tsx +++ b/client/src/core/client/test/expectAndFail.tsx @@ -51,8 +51,9 @@ const wrapMatcher = (func: any) => { return wrappedMatcher; }; -const expectAndFail = (...args: unknown[]) => { - const matcher = (global as unknown).expect(...args); +const expectAndFail = (...args: any[]) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const matcher = (global as any).expect(...args); return wrapMatcher(matcher); }; diff --git a/client/src/core/client/test/setupConsole.ts b/client/src/core/client/test/setupConsole.ts index 83d86603cf..bdce0e4939 100644 --- a/client/src/core/client/test/setupConsole.ts +++ b/client/src/core/client/test/setupConsole.ts @@ -78,8 +78,10 @@ function getMatchingPatterns(patterns: PatternMap, args: any[]): MatchedItem[] { } } -function createMockImplementation(originalFunction: (...args: any[]) => void) { - return (...args: any[]) => { +function createMockImplementation( + originalFunction: (...args: unknown[]) => void +) { + return (...args: unknown[]) => { const muted = getMatchingPatterns(mutePatterns, args); if (muted.length) { matchedMute.push(...muted); diff --git a/client/src/core/client/ui/components/v2/Box/Box.tsx b/client/src/core/client/ui/components/v2/Box/Box.tsx index 13cd24cca3..22b6a813f4 100644 --- a/client/src/core/client/ui/components/v2/Box/Box.tsx +++ b/client/src/core/client/ui/components/v2/Box/Box.tsx @@ -126,15 +126,15 @@ const Box: FunctionComponent = (props) => { classes.root, className, /* Margin */ - final.ml && (classes as any)[`ml-${final.ml}`], - final.mr && (classes as any)[`mr-${final.mr}`], - final.mt && (classes as any)[`mt-${final.mt}`], - final.mb && (classes as any)[`mb-${final.mb}`], + final.ml && ((classes as any)[`ml-${final.ml}`] as string), + final.mr && ((classes as any)[`mr-${final.mr}`] as string), + final.mt && ((classes as any)[`mt-${final.mt}`] as string), + final.mb && ((classes as any)[`mb-${final.mb}`] as string), /* Padding */ - final.pl && (classes as any)[`pl-${final.pl}`], - final.pr && (classes as any)[`pr-${final.pr}`], - final.pt && (classes as any)[`pt-${final.pt}`], - final.pb && (classes as any)[`pb-${final.pb}`] + final.pl && ((classes as any)[`pl-${final.pl}`] as string), + final.pr && ((classes as any)[`pr-${final.pr}`] as string), + final.pt && ((classes as any)[`pt-${final.pt}`] as string), + final.pb && ((classes as any)[`pb-${final.pb}`] as string) ); const innerProps = { @@ -149,7 +149,7 @@ const Box: FunctionComponent = (props) => { const child = React.Children.only(children) as ReactElement; return React.cloneElement(child, { ...innerProps, - className: cn(child.props.className, innerProps.className), + className: cn(child.props.className as string, innerProps.className), }); } if (React.isValidElement(Container)) { diff --git a/client/src/core/client/ui/components/v2/Flex/Flex.tsx b/client/src/core/client/ui/components/v2/Flex/Flex.tsx index 8000636cad..8fb601580c 100644 --- a/client/src/core/client/ui/components/v2/Flex/Flex.tsx +++ b/client/src/core/client/ui/components/v2/Flex/Flex.tsx @@ -81,7 +81,7 @@ const Flex: FunctionComponent = (props) => { classes.flex, classObject, (itemGutter || spacing) && "gutter", - spacing && (classes as any)[`spacing-${spacing}`] + spacing && ((classes as any)[`spacing-${spacing}`] as string) ); // text nodes can't be modified with css, so replace them with spans. diff --git a/client/src/core/client/ui/components/v2/HorizontalGutter/HorizontalGutter.tsx b/client/src/core/client/ui/components/v2/HorizontalGutter/HorizontalGutter.tsx index 7be924611c..9cd58ee3da 100644 --- a/client/src/core/client/ui/components/v2/HorizontalGutter/HorizontalGutter.tsx +++ b/client/src/core/client/ui/components/v2/HorizontalGutter/HorizontalGutter.tsx @@ -40,7 +40,9 @@ interface Props extends Omit, "ref"> { const HorizontalGutter: FunctionComponent = (props) => { const { classes, className, size, forwardRef, container, spacing, ...rest } = props; - const spacingClass = spacing ? (classes as any)[`spacing-${spacing}`] : ""; + const spacingClass: string = spacing + ? (classes as any)[`spacing-${spacing}`] + : ""; const rootClassName = cn( classes.root, className, diff --git a/client/src/core/client/ui/components/v2/Popup/Popup.tsx b/client/src/core/client/ui/components/v2/Popup/Popup.tsx index 10cad98f60..f416da6127 100644 --- a/client/src/core/client/ui/components/v2/Popup/Popup.tsx +++ b/client/src/core/client/ui/components/v2/Popup/Popup.tsx @@ -1,5 +1,6 @@ import { FunctionComponent, + MutableRefObject, useCallback, useEffect, useLayoutEffect, @@ -84,8 +85,10 @@ const Popup: FunctionComponent = ({ title, }) => { const ref = useRef(null); - const detectCloseInterval: any = useRef(null); - const resetCallbackInterval: any = useRef(null); + const detectCloseInterval: MutableRefObject = + useRef(null); + const resetCallbackInterval: MutableRefObject = + useRef(null); const { renderWindow } = useUIContext(); const previousOpen = usePrevious(open); const previousFocus = usePrevious(focus); diff --git a/client/src/core/client/ui/components/v2/Tabs/TabContent.tsx b/client/src/core/client/ui/components/v2/Tabs/TabContent.tsx index 465a082bad..1a905ada53 100644 --- a/client/src/core/client/ui/components/v2/Tabs/TabContent.tsx +++ b/client/src/core/client/ui/components/v2/Tabs/TabContent.tsx @@ -24,7 +24,7 @@ const TabContent: FunctionComponent = (props) => { .map((child: React.ReactElement, i) => React.cloneElement(child, { tabID: child.props.tabID ? child.props.tabID : i, - className: cn(className, child.props.className), + className: cn(className, child.props.className as string), }) )} diff --git a/client/src/core/client/ui/components/v2/TrapFocus/TrapFocus.spec.tsx b/client/src/core/client/ui/components/v2/TrapFocus/TrapFocus.spec.tsx index 59087683fa..b13ece4fec 100644 --- a/client/src/core/client/ui/components/v2/TrapFocus/TrapFocus.spec.tsx +++ b/client/src/core/client/ui/components/v2/TrapFocus/TrapFocus.spec.tsx @@ -1,6 +1,6 @@ /* eslint-disable react/display-name */ import { noop } from "lodash"; -import React from "react"; +import React, { ElementType } from "react"; import { create } from "react-test-renderer"; import sinon from "sinon"; @@ -10,7 +10,7 @@ import { PropTypesOf } from "coral-ui/types"; import { UIContextProps } from "../UIContext"; import TrapFocus from "./TrapFocus"; -const FakeFocusable: any = class FakeFocusable extends React.Component { +const FakeFocusable: ElementType = class FakeFocusable extends React.Component { public focus = sinon.spy(); public render() { return null; diff --git a/client/src/core/client/ui/components/v2/UIContext/UIContext.ts b/client/src/core/client/ui/components/v2/UIContext/UIContext.ts index b6c4528dfc..e62c0dc453 100644 --- a/client/src/core/client/ui/components/v2/UIContext/UIContext.ts +++ b/client/src/core/client/ui/components/v2/UIContext/UIContext.ts @@ -18,6 +18,7 @@ export interface UIContextProps { renderWindow: Window; } +// eslint-disable-next-line @typescript-eslint/no-unsafe-argument const UIContext = React.createContext({} as any); export const useUIContext = () => React.useContext(UIContext); diff --git a/client/src/core/client/ui/encapsulation/CSSAsset.ts b/client/src/core/client/ui/encapsulation/CSSAsset.ts index ff71af526a..848f71ca33 100644 --- a/client/src/core/client/ui/encapsulation/CSSAsset.ts +++ b/client/src/core/client/ui/encapsulation/CSSAsset.ts @@ -12,6 +12,7 @@ export default class CSSAsset { constructor( href: string, onLoad?: React.ReactEventHandler, + // eslint-disable-next-line no-shadow onError?: (href: string) => void ) { this._href = href; diff --git a/client/src/core/client/ui/helpers/combineEventHandlers.ts b/client/src/core/client/ui/helpers/combineEventHandlers.ts index f2cd9adf21..c6825f9576 100644 --- a/client/src/core/client/ui/helpers/combineEventHandlers.ts +++ b/client/src/core/client/ui/helpers/combineEventHandlers.ts @@ -19,7 +19,7 @@ export default function combineEventHandlers(a: A, b: B): A & B; export default function combineEventHandlers(...propObjects: any[]): any { const result: any = {}; propObjects.forEach((o) => { - Object.keys(o).forEach((k) => { + Object.keys(o as {}).forEach((k) => { if (k in result) { const prev = result[k]; result[k] = (...args: any[]) => { diff --git a/client/src/core/client/ui/hocs/withStyles.ts b/client/src/core/client/ui/hocs/withStyles.ts index 7ab05dbed0..e84f94cbff 100644 --- a/client/src/core/client/ui/hocs/withStyles.ts +++ b/client/src/core/client/ui/hocs/withStyles.ts @@ -14,7 +14,7 @@ function withStyles( return withPropsOnChange(["classes"], (props) => { const result = { ...styles }; if (props.classes) { - Object.keys(props.classes).forEach((k) => { + Object.keys(props.classes as {}).forEach((k) => { if ((styles as any)[k]) { (result as any)[k] += ` ${props.classes[k]}`; } From c56cdef4c16e621ba75454f8e846cda41cda145a Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 7 Dec 2023 09:20:50 -0500 Subject: [PATCH 09/66] fix server lint issues --- .../app/authenticators/google/google.ts | 2 +- .../app/authenticators/oauth2/oauth2.ts | 4 +-- .../server/app/authenticators/oidc/oidc.ts | 2 +- .../app/handlers/api/comment/commentEmbed.ts | 1 + .../app/handlers/api/dashboard/index.ts | 30 +++++++++++++++---- .../core/server/app/handlers/api/dsaReport.ts | 2 +- .../server/app/handlers/api/oembedService.ts | 17 ++++++++--- .../server/app/handlers/api/user/download.ts | 2 +- .../server/app/helpers/commentEmbedHelpers.ts | 2 ++ .../app/middleware/commentEmbedWhitelisted.ts | 4 +-- .../app/middleware/graphql/persistedQuery.ts | 2 ++ .../app/middleware/passport/strategies/jwt.ts | 2 +- .../middleware/passport/strategies/local.ts | 5 ++-- server/src/core/server/app/request/limiter.ts | 1 + .../src/core/server/data/cache/userCache.ts | 4 ++- .../core/server/events/listeners/notifier.ts | 4 +-- server/src/core/server/events/types.ts | 1 + .../src/core/server/graph/directives/rate.ts | 1 + .../core/server/graph/resolvers/Comment.ts | 3 +- .../graph/resolvers/Subscription/types.ts | 1 + .../src/core/server/graph/scalars/locale.ts | 1 + server/src/core/server/graph/scalars/time.ts | 1 + .../core/server/graph/subscriptions/server.ts | 6 ++-- .../server/helpers/createTesterWithTimeout.ts | 3 +- .../src/core/server/models/comment/metrics.ts | 9 +++--- .../core/server/models/dsaReport/report.ts | 17 ++++------- .../server/queue/tasks/mailer/processor.ts | 3 +- .../server/queue/tasks/webhook/processor.ts | 10 +++++-- .../core/server/services/comments/media.ts | 9 ++++-- .../comments/pipeline/phases/purify.ts | 1 + .../pipeline/phases/wordList/message.ts | 2 ++ .../pipeline/phases/wordList/service.ts | 1 + .../services/comments/pipeline/wordList.ts | 3 +- .../server/services/errors/sentry/sentry.ts | 2 +- .../notifications/email/categories/reply.ts | 4 +-- .../email/categories/staffReply.ts | 3 +- .../services/stories/scraper/scraper.ts | 1 + .../core/server/services/tenant/cache/json.ts | 3 +- .../services/users/user.updateRole.spec.ts | 2 +- 39 files changed, 114 insertions(+), 57 deletions(-) diff --git a/server/src/core/server/app/authenticators/google/google.ts b/server/src/core/server/app/authenticators/google/google.ts index c3130aaeec..8508bdc4b8 100644 --- a/server/src/core/server/app/authenticators/google/google.ts +++ b/server/src/core/server/app/authenticators/google/google.ts @@ -136,7 +136,7 @@ export class GoogleAuthenticator extends OAuth2Authenticator { return this.success(state, user, req, res); } catch (err) { - return this.fail(state, err, req, res); + return this.fail(state, err as Error, req, res); } }; } diff --git a/server/src/core/server/app/authenticators/oauth2/oauth2.ts b/server/src/core/server/app/authenticators/oauth2/oauth2.ts index bdc5ea1474..61efddb5c6 100644 --- a/server/src/core/server/app/authenticators/oauth2/oauth2.ts +++ b/server/src/core/server/app/authenticators/oauth2/oauth2.ts @@ -189,7 +189,7 @@ export abstract class OAuth2Authenticator { req: Request, res: Response ): Promise { - const { code } = req.query; + const { code }: { code: string } = req.query; if (!code) { throw new Error("no code on request"); } @@ -224,7 +224,7 @@ export abstract class OAuth2Authenticator { return redirectWithHash(res, state, { accessToken }); } catch (err) { - return this.fail(state, err, req, res); + return this.fail(state, err as Error, req, res); } } diff --git a/server/src/core/server/app/authenticators/oidc/oidc.ts b/server/src/core/server/app/authenticators/oidc/oidc.ts index ec8ba10f2b..22f898d27f 100644 --- a/server/src/core/server/app/authenticators/oidc/oidc.ts +++ b/server/src/core/server/app/authenticators/oidc/oidc.ts @@ -141,7 +141,7 @@ export class OIDCAuthenticator extends OAuth2Authenticator { return this.success(state, user, req, res); } catch (err) { - return this.fail(state, err, req, res); + return this.fail(state, err as Error, req, res); } }; } diff --git a/server/src/core/server/app/handlers/api/comment/commentEmbed.ts b/server/src/core/server/app/handlers/api/comment/commentEmbed.ts index 9779f1dc00..f2e87f2fce 100644 --- a/server/src/core/server/app/handlers/api/comment/commentEmbed.ts +++ b/server/src/core/server/app/handlers/api/comment/commentEmbed.ts @@ -141,6 +141,7 @@ export const commentEmbedJSONPHandler = : tenant.embeddedComments?.allowReplies; const sanitized = transform( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument new JSDOM("", {}).window as any, commentRevision.body ); diff --git a/server/src/core/server/app/handlers/api/dashboard/index.ts b/server/src/core/server/app/handlers/api/dashboard/index.ts index 069c578a63..9da0e1934f 100644 --- a/server/src/core/server/app/handlers/api/dashboard/index.ts +++ b/server/src/core/server/app/handlers/api/dashboard/index.ts @@ -52,7 +52,13 @@ export const todayMetricsHandler = ({ mongo }: AppOptions): RequestHandler => async (req, res, next) => { try { - const { tenantID, siteID, tz, now } = getMetricsOptions(req); + const { + tenantID, + siteID, + tz, + now, + }: { tenantID: string; siteID: string; tz: string; now: Date } = + getMetricsOptions(req); if (!siteID) { throw new Error("siteID was not provided"); } @@ -77,7 +83,8 @@ export const totalMetricsHandler = ({ mongo }: AppOptions): RequestHandler => async (req, res, next) => { try { - const { tenantID, siteID } = getMetricsOptions(req); + const { tenantID, siteID }: { tenantID: string; siteID: string } = + getMetricsOptions(req); if (!siteID) { throw new Error("siteID was not provided"); } @@ -111,7 +118,13 @@ export const hourlyCommentsMetricsHandler = ({ mongo }: AppOptions): RequestHandler => async (req, res, next) => { try { - const { tenantID, siteID, tz, now } = getMetricsOptions(req); + const { + tenantID, + siteID, + tz, + now, + }: { tenantID: string; siteID: string; tz: string; now: Date } = + getMetricsOptions(req); if (!siteID) { throw new Error("siteID was not provided"); } @@ -136,7 +149,8 @@ export const dailyUsersMetricsHandler = ({ mongo }: AppOptions): RequestHandler => async (req, res, next) => { try { - const { tenantID, tz, now } = getMetricsOptions(req); + const { tenantID, tz, now }: { tenantID: string; tz: string; now: Date } = + getMetricsOptions(req); const result: TimeSeriesMetricsJSON = { series: await retrieveDailyUserMetrics(mongo, tenantID, tz, now), @@ -152,7 +166,13 @@ export const todayStoriesMetricsHandler = ({ mongo }: AppOptions): RequestHandler => async (req, res, next) => { try { - const { tenantID, siteID, tz, now } = getMetricsOptions(req); + const { + tenantID, + siteID, + tz, + now, + }: { tenantID: string; siteID: string; tz: string; now: Date } = + getMetricsOptions(req); if (!siteID) { throw new Error("siteID was not provided"); } diff --git a/server/src/core/server/app/handlers/api/dsaReport.ts b/server/src/core/server/app/handlers/api/dsaReport.ts index aeadc9ea66..96a7e6400f 100644 --- a/server/src/core/server/app/handlers/api/dsaReport.ts +++ b/server/src/core/server/app/handlers/api/dsaReport.ts @@ -28,7 +28,7 @@ export const reportDownloadHandler = ({ await ipLimiter.test(req, req.ip); const { tenant, now } = req.coral; - const { reportID } = req.query; + const { reportID }: { reportID: string } = req.query; const report = await retrieveDSAReport(mongo, tenant.id, reportID); diff --git a/server/src/core/server/app/handlers/api/oembedService.ts b/server/src/core/server/app/handlers/api/oembedService.ts index cddcff1fca..6abf802747 100644 --- a/server/src/core/server/app/handlers/api/oembedService.ts +++ b/server/src/core/server/app/handlers/api/oembedService.ts @@ -62,10 +62,17 @@ export const oembedProviderHandler = ({ const tenantURL = constructTenantURL(config, tenant); try { - const { url, allowReplies, format, reactionLabel } = validate( - OEmbedServiceQuerySchema, - req.query - ); + const { + url, + allowReplies, + format, + reactionLabel, + }: { + url: string; + allowReplies?: string; + format?: string; + reactionLabel?: string; + } = validate(OEmbedServiceQuerySchema, req.query); // We don't currently support xml format responses if (format && format === "xml") { @@ -113,11 +120,13 @@ export const oembedProviderHandler = ({ } const sanitized = transform( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument new JSDOM("", {}).window as any, commentRevision.body ); const sanitizedSimple = transformSimpleEmbed( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument new JSDOM("", {}).window as any, commentRevision.body ); diff --git a/server/src/core/server/app/handlers/api/user/download.ts b/server/src/core/server/app/handlers/api/user/download.ts index c0a68cee22..0196d540eb 100644 --- a/server/src/core/server/app/handlers/api/user/download.ts +++ b/server/src/core/server/app/handlers/api/user/download.ts @@ -18,7 +18,7 @@ export const userDownloadHandler = ({ }: AdminDownloadOptions): RequestHandler => { return async (req, res, next) => { const { tenant, now } = req.coral; - const { token } = req.query; + const { token }: { token: string } = req.query; const { sub: userID } = decodeJWT(token); if (!userID) { diff --git a/server/src/core/server/app/helpers/commentEmbedHelpers.ts b/server/src/core/server/app/helpers/commentEmbedHelpers.ts index 20db7215d5..c46d1fef53 100644 --- a/server/src/core/server/app/helpers/commentEmbedHelpers.ts +++ b/server/src/core/server/app/helpers/commentEmbedHelpers.ts @@ -96,6 +96,7 @@ export async function getCommentEmbedData( export function transform(window: Window, source: string | Node) { // Sanitize source. const [sanitized, spoilerTags] = sanitizeAndFindFormattingTags( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument window as any, source ); @@ -118,6 +119,7 @@ export function transform(window: Window, source: string | Node) { export function transformSimpleEmbed(window: Window, source: string | Node) { // Sanitize source. const [sanitized, spoilerTags, sarcasmTags, blockquoteTags, links] = + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument sanitizeAndFindFormattingTags(window as any, source); // Attach event handlers to spoiler tags. diff --git a/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts b/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts index aaf3587351..1007baad4f 100644 --- a/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts +++ b/server/src/core/server/app/middleware/commentEmbedWhitelisted.ts @@ -12,11 +12,11 @@ export const commentEmbedWhitelisted = ({ mongo }: Pick, oembedAPI = false): RequestHandler => async (req, res, next) => { // First try to get the commentID from the query params - let commentID: string | undefined = req.query.commentID; + let commentID: string | null = req.query.commentID; // For the Oembed endpoint, will need to get commentID from the url if (!commentID) { - const url: string | undefined = req.query.url; + const url: string = req.query.url; const urlToParse = new URL(url); commentID = urlToParse.searchParams.get("commentID"); } diff --git a/server/src/core/server/app/middleware/graphql/persistedQuery.ts b/server/src/core/server/app/middleware/graphql/persistedQuery.ts index e43ae28c12..600bd2403c 100644 --- a/server/src/core/server/app/middleware/graphql/persistedQuery.ts +++ b/server/src/core/server/app/middleware/graphql/persistedQuery.ts @@ -23,6 +23,7 @@ export const persistedQueryMiddleware = try { // Handle the payload if it is a persisted query. const body = req.method === "GET" ? req.query : req.body; + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const persisted = await getPersistedQuery(persistedQueryCache, body); if (persisted) { // The query was found for this operation, replace the query with the one @@ -57,6 +58,7 @@ export const persistedQueryMiddleware = throw new RawQueryNotAuthorized( req.coral.tenant.id, + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument body.query || null, req.user?.id || null ); diff --git a/server/src/core/server/app/middleware/passport/strategies/jwt.ts b/server/src/core/server/app/middleware/passport/strategies/jwt.ts index 0504e52c57..8bc02ebe66 100644 --- a/server/src/core/server/app/middleware/passport/strategies/jwt.ts +++ b/server/src/core/server/app/middleware/passport/strategies/jwt.ts @@ -173,7 +173,7 @@ export class JWTStrategy extends Strategy { return this.success(user, null); } catch (err) { - return this.error(err); + return this.error(err as Error); } } } diff --git a/server/src/core/server/app/middleware/passport/strategies/local.ts b/server/src/core/server/app/middleware/passport/strategies/local.ts index a90670d4b2..2d3261b7d7 100644 --- a/server/src/core/server/app/middleware/passport/strategies/local.ts +++ b/server/src/core/server/app/middleware/passport/strategies/local.ts @@ -27,11 +27,11 @@ const verifyFactory = ) => { try { // Validate that the email address and password are reasonable. - const email = Joi.attempt( + const email: string = Joi.attempt( emailInput, Joi.string().trim().lowercase().email() ); - const password = Joi.attempt(passwordInput, Joi.string()); + const password: string = Joi.attempt(passwordInput, Joi.string()); await ipLimiter.test(req, req.ip); await emailLimiter.test(req, email); @@ -56,6 +56,7 @@ const verifyFactory = return done(null, user); } catch (err) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return done(err); } }; diff --git a/server/src/core/server/app/request/limiter.ts b/server/src/core/server/app/request/limiter.ts index 4449385dad..3f7329117c 100644 --- a/server/src/core/server/app/request/limiter.ts +++ b/server/src/core/server/app/request/limiter.ts @@ -70,6 +70,7 @@ export class Limiter { const resetsAt = DateTime.fromJSDate(new Date()) .plus({ seconds: this.ttl }) .toJSDate(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument throw new RateLimitExceeded(key, this.max, resetsAt, tries); } diff --git a/server/src/core/server/data/cache/userCache.ts b/server/src/core/server/data/cache/userCache.ts index 3ad5c1757b..ccf8041f13 100644 --- a/server/src/core/server/data/cache/userCache.ts +++ b/server/src/core/server/data/cache/userCache.ts @@ -132,12 +132,14 @@ export class UserCache implements IDataCache { } private deserializeObject(data: string): Readonly { - const parsed = JSON.parse(data); + const parsed: User = JSON.parse(data); const parsedSuspensionHistory = parsed.status.suspension.history.map( (suspension: { createdAt: Date; modifiedAt?: Date; from: { start: Date; finish: Date }; + id: string; + message: string; }) => { const suspensionUpdated = { ...suspension, diff --git a/server/src/core/server/events/listeners/notifier.ts b/server/src/core/server/events/listeners/notifier.ts index a8dfb80142..2af9530025 100644 --- a/server/src/core/server/events/listeners/notifier.ts +++ b/server/src/core/server/events/listeners/notifier.ts @@ -31,8 +31,8 @@ export class NotifierCoralEventListener */ public readonly events = categories.reduce((events, category) => { for (const event of category.events) { - if (!events.includes(event)) { - events.push(event); + if (!events.includes(event as CoralEventType)) { + events.push(event as CoralEventType); } } diff --git a/server/src/core/server/events/types.ts b/server/src/core/server/events/types.ts index ae7351d2e0..2ac7b4eb4d 100644 --- a/server/src/core/server/events/types.ts +++ b/server/src/core/server/events/types.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-shadow export enum CoralEventType { COMMENT_ENTERED_MODERATION_QUEUE = "COMMENT_ENTERED_MODERATION_QUEUE", COMMENT_LEFT_MODERATION_QUEUE = "COMMENT_LEFT_MODERATION_QUEUE", diff --git a/server/src/core/server/graph/directives/rate.ts b/server/src/core/server/graph/directives/rate.ts index 73ca7b2824..5ce776a13a 100644 --- a/server/src/core/server/graph/directives/rate.ts +++ b/server/src/core/server/graph/directives/rate.ts @@ -50,6 +50,7 @@ const rate: DirectiveResolverFn< const [[, tries]] = await redis.multi().incr(key).expire(key, seconds).exec(); if (tries && tries > max) { const resetsAt = DateTime.fromJSDate(now).plus({ seconds }).toJSDate(); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument throw new RateLimitExceeded(key, max, resetsAt, tries); } diff --git a/server/src/core/server/graph/resolvers/Comment.ts b/server/src/core/server/graph/resolvers/Comment.ts index 8abf05999c..5043891715 100644 --- a/server/src/core/server/graph/resolvers/Comment.ts +++ b/server/src/core/server/graph/resolvers/Comment.ts @@ -171,7 +171,8 @@ export const Comment: GQLCommentTypeResolver = { } else { const children = await ctx.loaders.Comments.visible.loadMany(childIDs); return children.reduce( - (sum: number, c: any) => (c && hasPublishedStatus(c) ? sum + 1 : sum), + (sum: number, c: Readonly | null) => + c && hasPublishedStatus(c) ? sum + 1 : sum, 0 ); } diff --git a/server/src/core/server/graph/resolvers/Subscription/types.ts b/server/src/core/server/graph/resolvers/Subscription/types.ts index ce15661932..649e706b1c 100644 --- a/server/src/core/server/graph/resolvers/Subscription/types.ts +++ b/server/src/core/server/graph/resolvers/Subscription/types.ts @@ -7,6 +7,7 @@ import { CommentReleasedSubscription } from "./commentReleased"; import { CommentReplyCreatedSubscription } from "./commentReplyCreated"; import { CommentStatusUpdatedSubscription } from "./commentStatusUpdated"; +// eslint-disable-next-line no-shadow export enum SUBSCRIPTION_CHANNELS { COMMENT_ENTERED_MODERATION_QUEUE = "COMMENT_ENTERED_MODERATION_QUEUE", COMMENT_LEFT_MODERATION_QUEUE = "COMMENT_LEFT_MODERATION_QUEUE", diff --git a/server/src/core/server/graph/scalars/locale.ts b/server/src/core/server/graph/scalars/locale.ts index 05d11886ed..02545d9f49 100644 --- a/server/src/core/server/graph/scalars/locale.ts +++ b/server/src/core/server/graph/scalars/locale.ts @@ -4,6 +4,7 @@ import { Kind } from "graphql/language"; import { LOCALES } from "coral-common/common/lib/helpers/i18n"; function assertSupportLocale(locale: string) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument if (!LOCALES.includes(locale as any)) { throw new Error(`Supported locales are ${JSON.stringify(LOCALES)}`); } diff --git a/server/src/core/server/graph/scalars/time.ts b/server/src/core/server/graph/scalars/time.ts index fd43545826..4de0ba805e 100644 --- a/server/src/core/server/graph/scalars/time.ts +++ b/server/src/core/server/graph/scalars/time.ts @@ -13,6 +13,7 @@ export default new GraphQLScalarType({ return value.toISOString(); }, parseValue(value) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return new Date(value); }, parseLiteral(ast) { diff --git a/server/src/core/server/graph/subscriptions/server.ts b/server/src/core/server/graph/subscriptions/server.ts index d25bb7b4ef..86c39c2c94 100644 --- a/server/src/core/server/graph/subscriptions/server.ts +++ b/server/src/core/server/graph/subscriptions/server.ts @@ -216,7 +216,7 @@ export function onConnect(options: OnConnectOptions): OnConnectFn { } // Extract the users clientID from the request. - const clientID = extractClientID(connectionParams); + const clientID: string = extractClientID(connectionParams); if (clientID) { opts.clientID = clientID; } @@ -282,11 +282,11 @@ export function onConnect(options: OnConnectOptions): OnConnectFn { if (!(err instanceof CoralError)) { // eslint-disable-next-line no-ex-assign err = new WrappedInternalError( - err, + err as Error, "could not setup websocket connection" ); } - const { message } = err.serializeExtensions( + const { message }: { message: string } = err.serializeExtensions( options.i18n.getDefaultBundle() ); diff --git a/server/src/core/server/helpers/createTesterWithTimeout.ts b/server/src/core/server/helpers/createTesterWithTimeout.ts index 48693c921e..02bddec6ad 100644 --- a/server/src/core/server/helpers/createTesterWithTimeout.ts +++ b/server/src/core/server/helpers/createTesterWithTimeout.ts @@ -35,11 +35,12 @@ export default function createTesterWithTimeout( const script = new vm.Script("testString.split(regexp)"); // Create a null context object to isolate it with primitives. - const sandbox: unknown = Object.create(null); + const sandbox = Object.create(null); sandbox.regexp = regexp; sandbox.testString = ""; // Turn the sandbox into a context. + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const ctx = vm.createContext(sandbox); return (testString: string) => { diff --git a/server/src/core/server/models/comment/metrics.ts b/server/src/core/server/models/comment/metrics.ts index 60aebc8d3f..aa55e5f6fc 100644 --- a/server/src/core/server/models/comment/metrics.ts +++ b/server/src/core/server/models/comment/metrics.ts @@ -15,6 +15,7 @@ import { GQLTAG, } from "coral-server/graph/schema/__generated__/types"; +import { User } from "../user"; import { PUBLISHED_STATUSES } from "./constants"; import { hasTag } from "./helpers"; @@ -116,9 +117,9 @@ export async function retrieveTodayCommentMetrics( continue; } - const isSiteMod = isSiteModerator(moderator); + const isSiteMod = isSiteModerator(moderator as Readonly); if (isSiteMod && !moderator.moderationScopes.siteIDs?.includes(siteID)) { - const count = moderatorComments.get(moderator.id)?.size ?? 0; + const count = moderatorComments.get(moderator.id as string)?.size ?? 0; siteModsNotResponsibleForSiteCommentCount += count; } } @@ -179,9 +180,9 @@ export async function retrieveAllTimeStaffCommentMetrics( continue; } - const isSiteMod = isSiteModerator(moderator); + const isSiteMod = isSiteModerator(moderator as Readonly); if (isSiteMod && !moderator.moderationScopes.siteIDs?.includes(siteID)) { - const count = moderatorComments.get(moderator.id)?.size ?? 0; + const count = moderatorComments.get(moderator.id as string)?.size ?? 0; siteModsNotResponsibleForSiteCommentCount += count; } } diff --git a/server/src/core/server/models/dsaReport/report.ts b/server/src/core/server/models/dsaReport/report.ts index 4261b705a0..8b67951d5f 100644 --- a/server/src/core/server/models/dsaReport/report.ts +++ b/server/src/core/server/models/dsaReport/report.ts @@ -288,13 +288,6 @@ export interface CreateDSAReportNoteResultObject { dsaReport: DSAReport; } -enum DSAReportHistoryType { - STATUS_CHANGED = "STATUS_CHANGED", - NOTE = "NOTE", - DECISION_MADE = "DECISION_MADE", - SHARE = "SHARE", -} - export async function createDSAReportNote( mongo: MongoContext, tenantID: string, @@ -311,7 +304,7 @@ export async function createDSAReportNote( createdBy: userID, createdAt: now, body, - type: DSAReportHistoryType.NOTE, + type: GQLDSAReportHistoryType.NOTE, }; const updatedReport = await mongo.dsaReports().findOneAndUpdate( @@ -360,7 +353,7 @@ export async function createDSAReportShare( id, createdBy: userID, createdAt: now, - type: DSAReportHistoryType.SHARE, + type: GQLDSAReportHistoryType.SHARE, }; const updatedReport = await mongo.dsaReports().findOneAndUpdate( @@ -449,7 +442,7 @@ export async function changeDSAReportStatus( createdBy: userID, createdAt: now, status, - type: DSAReportHistoryType.STATUS_CHANGED, + type: GQLDSAReportHistoryType.STATUS_CHANGED, }; const updatedReport = await mongo.dsaReports().findOneAndUpdate( @@ -504,7 +497,7 @@ export async function makeDSAReportDecision( id: statusChangeHistoryId, createdBy: userID, createdAt: now, - type: DSAReportHistoryType.STATUS_CHANGED, + type: GQLDSAReportHistoryType.STATUS_CHANGED, status: GQLDSAReportStatus.COMPLETED, }; @@ -512,7 +505,7 @@ export async function makeDSAReportDecision( id: decisionMadeHistoryId, createdBy: userID, createdAt: now, - type: DSAReportHistoryType.DECISION_MADE, + type: GQLDSAReportHistoryType.DECISION_MADE, decision: { legality, legalGrounds, diff --git a/server/src/core/server/queue/tasks/mailer/processor.ts b/server/src/core/server/queue/tasks/mailer/processor.ts index a0052d277b..902df6e247 100644 --- a/server/src/core/server/queue/tasks/mailer/processor.ts +++ b/server/src/core/server/queue/tasks/mailer/processor.ts @@ -145,7 +145,8 @@ function createMessageTranslator(i18n: I18n) { } // Configure the purification. - const purify = createDOMPurify(dom.window as unknown); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + const purify = createDOMPurify(dom.window as any); // Strip the l10n attributes from the email HTML. purify.sanitize(dom.window.document.documentElement, { diff --git a/server/src/core/server/queue/tasks/webhook/processor.ts b/server/src/core/server/queue/tasks/webhook/processor.ts index 655dc9bf92..252cd4e16d 100644 --- a/server/src/core/server/queue/tasks/webhook/processor.ts +++ b/server/src/core/server/queue/tasks/webhook/processor.ts @@ -168,7 +168,10 @@ export function createJobProcessor({ // Execute the queued operations. .exec(); - let failures = failuresString ? parseInt(failuresString, 10) : null; + let failures = + failuresString && typeof failuresString === "string" + ? parseInt(failuresString, 10) + : null; if (res.ok && failures && failures > 0) { // The webhook delivery was a success, and there were previous failures. // Remove the failures record. @@ -179,7 +182,10 @@ export function createJobProcessor({ // If the failure count is higher than the allowed maximum, disable the // endpoint. - failures = failuresString ? parseInt(failuresString, 10) : null; + failures = + failuresString && typeof failuresString === "string" + ? parseInt(failuresString, 10) + : null; if (failures && failures >= MAXIMUM_FAILURE_COUNT) { log.warn( { failures, maxFailures: MAXIMUM_FAILURE_COUNT }, diff --git a/server/src/core/server/services/comments/media.ts b/server/src/core/server/services/comments/media.ts index e921c08dfd..0f624b5981 100644 --- a/server/src/core/server/services/comments/media.ts +++ b/server/src/core/server/services/comments/media.ts @@ -48,7 +48,7 @@ async function attachGiphyMedia( video: data.images.original.mp4, }; } catch (err) { - throw new WrappedInternalError(err, "cannot attach Giphy Media"); + throw new WrappedInternalError(err as Error, "cannot attach Giphy Media"); } } @@ -73,7 +73,10 @@ async function attachExternalMedia( height, }; } catch (err) { - throw new WrappedInternalError(err, "cannot attach external media"); + throw new WrappedInternalError( + err as Error, + "cannot attach external media" + ); } } @@ -129,7 +132,7 @@ async function attachOEmbedMedia( width, }; } catch (err) { - throw new WrappedInternalError(err, "cannot attach oEmbed Media"); + throw new WrappedInternalError(err as Error, "cannot attach oEmbed Media"); } } diff --git a/server/src/core/server/services/comments/pipeline/phases/purify.ts b/server/src/core/server/services/comments/pipeline/phases/purify.ts index c4e9dcf95f..ea4e4ec722 100644 --- a/server/src/core/server/services/comments/pipeline/phases/purify.ts +++ b/server/src/core/server/services/comments/pipeline/phases/purify.ts @@ -52,6 +52,7 @@ const createSanitizeMemoized = memoize( // Default the RTE Configuration to the default one. const config = tenant.rte || defaultRTEConfiguration; + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return createSanitize(window as any, { // Merge in the sarcasm check from the feature flag. features: convertGQLRTEConfigToRTEFeatures({ diff --git a/server/src/core/server/services/comments/pipeline/phases/wordList/message.ts b/server/src/core/server/services/comments/pipeline/phases/wordList/message.ts index b29ddb49f2..489ff285e3 100644 --- a/server/src/core/server/services/comments/pipeline/phases/wordList/message.ts +++ b/server/src/core/server/services/comments/pipeline/phases/wordList/message.ts @@ -1,11 +1,13 @@ import { LanguageCode } from "coral-common/common/lib/helpers"; import { WordlistMatch } from "coral-server/models/comment"; +// eslint-disable-next-line no-shadow export enum MessageType { Initialize = "initialize", Process = "process", } +// eslint-disable-next-line no-shadow export enum WordListCategory { Banned = "banned", Suspect = "suspect", diff --git a/server/src/core/server/services/comments/pipeline/phases/wordList/service.ts b/server/src/core/server/services/comments/pipeline/phases/wordList/service.ts index 338691f7e1..9b4a5229ea 100644 --- a/server/src/core/server/services/comments/pipeline/phases/wordList/service.ts +++ b/server/src/core/server/services/comments/pipeline/phases/wordList/service.ts @@ -41,6 +41,7 @@ export class WordListService { this.worker = new Worker(WORKER_SCRIPT); this.worker.on("message", this.onMessageDelegate); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument this.sanitizer = createSanitize(new JSDOM("", {}).window as any, { // We need normalized text nodes to mark nodes for suspect/banned words. normalize: true, diff --git a/server/src/core/server/services/comments/pipeline/wordList.ts b/server/src/core/server/services/comments/pipeline/wordList.ts index bd914dfd74..300af6bcff 100644 --- a/server/src/core/server/services/comments/pipeline/wordList.ts +++ b/server/src/core/server/services/comments/pipeline/wordList.ts @@ -32,7 +32,8 @@ export class WordList { */ private readonly cache = new WeakMap(); private readonly sanitizer = createSanitize( - new JSDOM("", {}).window as unknown, + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + new JSDOM("", {}).window as any, { // We need normalized text nodes to mark nodes for suspect/banned words. normalize: true, diff --git a/server/src/core/server/services/errors/sentry/sentry.ts b/server/src/core/server/services/errors/sentry/sentry.ts index 8138e02db0..a6d92d5962 100644 --- a/server/src/core/server/services/errors/sentry/sentry.ts +++ b/server/src/core/server/services/errors/sentry/sentry.ts @@ -87,7 +87,7 @@ export class SentryErrorReporter extends ErrorReporter { } // Get the original cause of the error in case that it is wrapped. - const errorToReport = getErrorToReport(err); + const errorToReport = getErrorToReport(err as Error); // Capture and report the error to Sentry. const id = Sentry.captureException(errorToReport, context); diff --git a/server/src/core/server/services/notifications/email/categories/reply.ts b/server/src/core/server/services/notifications/email/categories/reply.ts index bc96511896..b3ba47c860 100644 --- a/server/src/core/server/services/notifications/email/categories/reply.ts +++ b/server/src/core/server/services/notifications/email/categories/reply.ts @@ -7,7 +7,7 @@ import { mapErrorsToNull } from "coral-server/helpers/dataloader"; import { hasPublishedStatus } from "coral-server/models/comment"; import { PUBLISHED_STATUSES } from "coral-server/models/comment/constants"; import { getStoryTitle, getURLWithCommentID } from "coral-server/models/story"; -import { IgnoredUser } from "coral-server/models/user"; +import { IgnoredUser, User } from "coral-server/models/user"; import { NotificationCategory } from "./category"; @@ -45,7 +45,7 @@ export const reply: NotificationCategory = { } // Get the parent comment's author. - const [author, parentAuthor] = await ctx.users + const [author, parentAuthor]: Array | null> = await ctx.users .loadMany([comment.authorID, parent.authorID]) .then(mapErrorsToNull); if (!author || !parentAuthor) { diff --git a/server/src/core/server/services/notifications/email/categories/staffReply.ts b/server/src/core/server/services/notifications/email/categories/staffReply.ts index d162e6bc96..9262a06eac 100644 --- a/server/src/core/server/services/notifications/email/categories/staffReply.ts +++ b/server/src/core/server/services/notifications/email/categories/staffReply.ts @@ -6,6 +6,7 @@ import { import { mapErrorsToNull } from "coral-server/helpers/dataloader"; import { hasPublishedStatus } from "coral-server/models/comment"; import { getStoryTitle, getURLWithCommentID } from "coral-server/models/story"; +import { User } from "coral-server/models/user"; import { hasStaffRole } from "coral-server/models/user/helpers"; import { NotificationCategory } from "./category"; @@ -41,7 +42,7 @@ export const staffReply: NotificationCategory = { } // Get the parent comment's author. - const [author, parentAuthor] = await ctx.users + const [author, parentAuthor]: Array | null> = await ctx.users .loadMany([comment.authorID, parent.authorID]) .then(mapErrorsToNull); if (!author || !parentAuthor) { diff --git a/server/src/core/server/services/stories/scraper/scraper.ts b/server/src/core/server/services/stories/scraper/scraper.ts index d7a2884b1b..a1d3397b1b 100644 --- a/server/src/core/server/services/stories/scraper/scraper.ts +++ b/server/src/core/server/services/stories/scraper/scraper.ts @@ -135,6 +135,7 @@ class Scraper { return html; } catch (err) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument throw new ScrapeFailed(url, err); } } diff --git a/server/src/core/server/services/tenant/cache/json.ts b/server/src/core/server/services/tenant/cache/json.ts index b0af75b0b4..6bfcb49f49 100644 --- a/server/src/core/server/services/tenant/cache/json.ts +++ b/server/src/core/server/services/tenant/cache/json.ts @@ -67,7 +67,7 @@ export function stringify(data: any) { return JSON.stringify(transform(data)); } -function reviver(key: string, value: unknown) { +function reviver(key: string, value: any) { // The first time we encounter the date object, it will be at it's deepest // nesting, so it will currently be a string. Parse the string, and return it // so that we can parse it and return it. @@ -85,6 +85,7 @@ function reviver(key: string, value: unknown) { if ( isPlainObject(value) && KEY in value && + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument Object.keys(value).length === 1 && value[KEY] instanceof Date ) { diff --git a/server/src/core/server/services/users/user.updateRole.spec.ts b/server/src/core/server/services/users/user.updateRole.spec.ts index 0590b3d0f5..0bb52398cc 100644 --- a/server/src/core/server/services/users/user.updateRole.spec.ts +++ b/server/src/core/server/services/users/user.updateRole.spec.ts @@ -112,7 +112,7 @@ describe("updateRole", () => { ); let uut: ( - mongo: MongoContext, + mongoContext: MongoContext, tenant: Tenant, viewer: User, user: User, From 97ca32e5dee0cd47e7cfc7694b4af92c4d491fd0 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 7 Dec 2023 12:52:28 -0500 Subject: [PATCH 10/66] update forkts v and config --- client/package-lock.json | 14 +++++++------- client/package.json | 2 +- server/package-lock.json | 14 +++++++------- server/package.json | 2 +- server/src/core/build/createWebpackConfig.ts | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index eb4c180b98..db7cb73eec 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -248,7 +248,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.4.0", + "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", @@ -21555,9 +21555,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.8.3", @@ -65401,9 +65401,9 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", diff --git a/client/package.json b/client/package.json index a50f8a448c..47156eca7f 100644 --- a/client/package.json +++ b/client/package.json @@ -297,7 +297,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.4.0", + "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", diff --git a/server/package-lock.json b/server/package-lock.json index 5630e683d0..a4d9b1b571 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -246,7 +246,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.4.0", + "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", @@ -21547,9 +21547,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.8.3", @@ -65389,9 +65389,9 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "fork-ts-checker-webpack-plugin": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.4.0.tgz", - "integrity": "sha512-3I3wFkc4DbzaUDPWEi96wdYGu4EKtxBafhZYm0o4mX51d9bphAY4P3mBl8K5mFXFJqVzHfmdbm9kLGnm7vwwBg==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", + "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", "dev": true, "requires": { "@babel/code-frame": "^7.8.3", diff --git a/server/package.json b/server/package.json index 727561b6e3..af09be19ef 100644 --- a/server/package.json +++ b/server/package.json @@ -289,7 +289,7 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.4.0", + "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", diff --git a/server/src/core/build/createWebpackConfig.ts b/server/src/core/build/createWebpackConfig.ts index a818ca7bbf..d0b0b2f5ae 100644 --- a/server/src/core/build/createWebpackConfig.ts +++ b/server/src/core/build/createWebpackConfig.ts @@ -583,7 +583,7 @@ export default function createWebpackConfig( ...ifWatch( // We run eslint in a separate process to have a quicker build. new ForkTsCheckerWebpackPlugin({ - eslint: { enabled: true, files: "src/**/*.{js,ts,tsx}" }, + eslint: { enabled: true, files: "src/core/server/**/*.{js,ts,tsx}" }, typescript: { typescriptPath: require.resolve("typescript"), configFile: paths.appTsconfig, From 37962758b177cdc8bc7a82e812cba585249240ef Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 7 Dec 2023 13:22:10 -0500 Subject: [PATCH 11/66] clean up forkts config --- client/src/core/build/createWebpackConfig.ts | 4 ---- server/src/core/build/createWebpackConfig.ts | 4 ---- 2 files changed, 8 deletions(-) diff --git a/client/src/core/build/createWebpackConfig.ts b/client/src/core/build/createWebpackConfig.ts index 2ba3c14504..737f02551a 100644 --- a/client/src/core/build/createWebpackConfig.ts +++ b/client/src/core/build/createWebpackConfig.ts @@ -590,10 +590,6 @@ export default function createWebpackConfig( diagnosticOptions: { syntactic: true }, }, async: true, - // diagnosticOptions: { syntactic: true }, - // TODO: (cvle) For some reason if incremental build is turned on it does not find lint errors during initial build. - // useTypescriptIncrementalApi: false, - // checkSyntacticErrors: true, }) ), // Makes some environment variables available to the JS code, for example: diff --git a/server/src/core/build/createWebpackConfig.ts b/server/src/core/build/createWebpackConfig.ts index d0b0b2f5ae..82159b7dee 100644 --- a/server/src/core/build/createWebpackConfig.ts +++ b/server/src/core/build/createWebpackConfig.ts @@ -590,10 +590,6 @@ export default function createWebpackConfig( diagnosticOptions: { syntactic: true }, }, async: true, - // diagnosticOptions: { syntactic: true }, - // TODO: (cvle) For some reason if incremental build is turned on it does not find lint errors during initial build. - // useTypescriptIncrementalApi: false, - // checkSyntacticErrors: true, }) ), // Makes some environment variables available to the JS code, for example: From 59e48492b5eef795adc9da15ecb8ac172f667b4b Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 7 Dec 2023 15:15:39 -0500 Subject: [PATCH 12/66] remove forktswebpackcheckplugin --- client/package-lock.json | 538 ------------------- client/package.json | 1 - client/src/core/build/createWebpackConfig.ts | 18 +- server/package-lock.json | 538 ------------------- server/package.json | 1 - server/src/core/build/createWebpackConfig.ts | 18 +- 6 files changed, 2 insertions(+), 1112 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index db7cb73eec..c6029819b2 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -248,7 +248,6 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", @@ -11994,15 +11993,6 @@ "version": "0.4.0", "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/atob": { "version": "2.1.2", "dev": true, @@ -21554,296 +21544,6 @@ "node": "*" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", - "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -22029,12 +21729,6 @@ "node": ">= 0.10" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -33833,18 +33527,6 @@ "node": ">=6" } }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/memoize-one": { "version": "5.2.1", "license": "MIT" @@ -58529,12 +58211,6 @@ "asynckit": { "version": "0.4.0" }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, "atob": { "version": "2.1.2", "dev": true @@ -65400,205 +65076,6 @@ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, - "fork-ts-checker-webpack-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", - "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.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" - } - }, - "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" - } - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "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", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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" - } - }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -65731,12 +65208,6 @@ "through2": "^2.0.3" } }, - "fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, "fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -73910,15 +73381,6 @@ } } }, - "memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.4" - } - }, "memoize-one": { "version": "5.2.1" }, diff --git a/client/package.json b/client/package.json index 47156eca7f..3ad33f25c8 100644 --- a/client/package.json +++ b/client/package.json @@ -297,7 +297,6 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", diff --git a/client/src/core/build/createWebpackConfig.ts b/client/src/core/build/createWebpackConfig.ts index 737f02551a..fa838bcc58 100644 --- a/client/src/core/build/createWebpackConfig.ts +++ b/client/src/core/build/createWebpackConfig.ts @@ -3,7 +3,6 @@ import OptimizeCssnanoPlugin from "@intervolga/optimize-cssnano-plugin"; import bunyan from "bunyan"; import CaseSensitivePathsPlugin from "case-sensitive-paths-webpack-plugin"; import CompressionPlugin from "compression-webpack-plugin"; -import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin"; import HtmlWebpackPlugin from "html-webpack-plugin"; import { identity, uniq } from "lodash"; import MiniCssExtractPlugin from "mini-css-extract-plugin"; @@ -433,8 +432,7 @@ export default function createWebpackConfig( { loader: "thread-loader", options: { - // there should be 1 cpu for the fork-ts-checker-webpack-plugin - workers: maxCores - 1, + workers: maxCores, poolTimeout: watch ? Infinity : 500, // set this to Infinity in watch mode - see https://github.com/webpack-contrib/thread-loader }, }, @@ -578,20 +576,6 @@ export default function createWebpackConfig( ], }, plugins: [ - // TODO: (cvle) this should work in build too but for some reasons it terminates the build afterwards. - // Preventing from running post build steps. - ...ifWatch( - // We run eslint in a separate process to have a quicker build. - new ForkTsCheckerWebpackPlugin({ - eslint: { enabled: true, files: "src/core/client/**/*.{js,ts,tsx}" }, - typescript: { - typescriptPath: require.resolve("typescript"), - configFile: paths.appTsconfig, - diagnosticOptions: { syntactic: true }, - }, - async: true, - }) - ), // Makes some environment variables available to the JS code, for example: // if (process.env.NODE_ENV === 'development') { ... }. See `./env.js`. new webpack.DefinePlugin(envStringified), diff --git a/server/package-lock.json b/server/package-lock.json index a4d9b1b571..4b8fcbfa30 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -246,7 +246,6 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", @@ -11990,15 +11989,6 @@ "version": "0.4.0", "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/atob": { "version": "2.1.2", "dev": true, @@ -21546,296 +21536,6 @@ "node": "*" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", - "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -22021,12 +21721,6 @@ "node": ">= 0.10" } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, "node_modules/fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -33825,18 +33519,6 @@ "node": ">=6" } }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/memoize-one": { "version": "5.2.1", "license": "MIT" @@ -58520,12 +58202,6 @@ "asynckit": { "version": "0.4.0" }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, "atob": { "version": "2.1.2", "dev": true @@ -65388,205 +65064,6 @@ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, - "fork-ts-checker-webpack-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.0.tgz", - "integrity": "sha512-cS178Y+xxtIjEUorcHddKS7yCMlrDPV31mt47blKKRfMd70Kxu5xruAFE2o9sDY6wVC5deuob/u/alD04YYHnw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.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" - } - }, - "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" - } - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "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", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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" - } - }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", @@ -65719,12 +65196,6 @@ "through2": "^2.0.3" } }, - "fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, "fs-write-stream-atomic": { "version": "1.0.10", "dev": true, @@ -73898,15 +73369,6 @@ } } }, - "memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "requires": { - "fs-monkey": "^1.0.4" - } - }, "memoize-one": { "version": "5.2.1" }, diff --git a/server/package.json b/server/package.json index af09be19ef..f68057543b 100644 --- a/server/package.json +++ b/server/package.json @@ -289,7 +289,6 @@ "final-form-arrays": "^3.0.2", "flat": "^5.0.0", "fluent-intl-polyfill": "^0.1.0", - "fork-ts-checker-webpack-plugin": "6.5.0", "found": "^0.5.9", "found-relay": "^0.8.2", "graphql-schema-linter": "^0.4.0", diff --git a/server/src/core/build/createWebpackConfig.ts b/server/src/core/build/createWebpackConfig.ts index 82159b7dee..fa838bcc58 100644 --- a/server/src/core/build/createWebpackConfig.ts +++ b/server/src/core/build/createWebpackConfig.ts @@ -3,7 +3,6 @@ import OptimizeCssnanoPlugin from "@intervolga/optimize-cssnano-plugin"; import bunyan from "bunyan"; import CaseSensitivePathsPlugin from "case-sensitive-paths-webpack-plugin"; import CompressionPlugin from "compression-webpack-plugin"; -import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin"; import HtmlWebpackPlugin from "html-webpack-plugin"; import { identity, uniq } from "lodash"; import MiniCssExtractPlugin from "mini-css-extract-plugin"; @@ -433,8 +432,7 @@ export default function createWebpackConfig( { loader: "thread-loader", options: { - // there should be 1 cpu for the fork-ts-checker-webpack-plugin - workers: maxCores - 1, + workers: maxCores, poolTimeout: watch ? Infinity : 500, // set this to Infinity in watch mode - see https://github.com/webpack-contrib/thread-loader }, }, @@ -578,20 +576,6 @@ export default function createWebpackConfig( ], }, plugins: [ - // TODO: (cvle) this should work in build too but for some reasons it terminates the build afterwards. - // Preventing from running post build steps. - ...ifWatch( - // We run eslint in a separate process to have a quicker build. - new ForkTsCheckerWebpackPlugin({ - eslint: { enabled: true, files: "src/core/server/**/*.{js,ts,tsx}" }, - typescript: { - typescriptPath: require.resolve("typescript"), - configFile: paths.appTsconfig, - diagnosticOptions: { syntactic: true }, - }, - async: true, - }) - ), // Makes some environment variables available to the JS code, for example: // if (process.env.NODE_ENV === 'development') { ... }. See `./env.js`. new webpack.DefinePlugin(envStringified), From eabe8e1af56ed049dd147a6bbc107efdbb742ccd Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 7 Dec 2023 15:43:53 -0500 Subject: [PATCH 13/66] fix scripts linting issue --- client/scripts/build.ts | 2 ++ client/scripts/generateCSSVariablesDocs.ts | 3 ++- client/scripts/generateEventDocs.ts | 1 - client/scripts/start.ts | 5 +++-- client/scripts/watcher/bin/watcher.ts | 1 + client/scripts/watcher/watch.ts | 1 + server/scripts/generateEventDocs.ts | 1 - server/scripts/start.ts | 5 +++-- server/scripts/watcher/bin/watcher.ts | 1 + server/scripts/watcher/watch.ts | 1 + 10 files changed, 14 insertions(+), 7 deletions(-) diff --git a/client/scripts/build.ts b/client/scripts/build.ts index 6b10484bbf..461dcd8142 100644 --- a/client/scripts/build.ts +++ b/client/scripts/build.ts @@ -127,6 +127,7 @@ function build(previousFileSizes: any) { if (messages.errors.length > 1) { messages.errors.length = 1; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return reject(new Error(messages.errors.join("\n\n"))); } if (treatWarningsAsErrors && messages.warnings.length) { @@ -136,6 +137,7 @@ function build(previousFileSizes: any) { "Most CI servers set it automatically.\n" ) ); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return reject(new Error(messages.warnings.join("\n\n"))); } return resolve({ diff --git a/client/scripts/generateCSSVariablesDocs.ts b/client/scripts/generateCSSVariablesDocs.ts index b669061b89..119e072c1e 100644 --- a/client/scripts/generateCSSVariablesDocs.ts +++ b/client/scripts/generateCSSVariablesDocs.ts @@ -128,6 +128,7 @@ function replaceObjectVariablesInText( variableName: string ) { let result = text; + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument Object.keys(object).forEach((c: string) => { if (typeof object[c] === "object") { result = replaceObjectVariablesInText( @@ -136,6 +137,7 @@ function replaceObjectVariablesInText( `${variableName}.${c}` ); } else { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument result = result.replace(`${variableName}.${c}`, object[c]); } }); @@ -225,7 +227,6 @@ function entries2Doc(entries: DocEntry[], header = "###", prefix = ""): string { /** * Append or update previous documention in markdownFile. - * * @param markdownFile The markdown file we want to inject the docs too. * @param entries data as returned by gatherEntries. */ diff --git a/client/scripts/generateEventDocs.ts b/client/scripts/generateEventDocs.ts index ee6671088c..383d90a3a1 100644 --- a/client/scripts/generateEventDocs.ts +++ b/client/scripts/generateEventDocs.ts @@ -169,7 +169,6 @@ function removeFutureAddedValue(text: string) { /** * Append or update previous documention in markdownFile. - * * @param markdownFile The markdown file we want to inject the docs too. * @param entries data as returned by gatherEntries. */ diff --git a/client/scripts/start.ts b/client/scripts/start.ts index 26656a4678..40861dddd2 100644 --- a/client/scripts/start.ts +++ b/client/scripts/start.ts @@ -7,7 +7,7 @@ import dotenv from "dotenv"; dotenv.config(); import chalk from "chalk"; -import webpack from "webpack"; +import webpack, { Compiler, MultiCompiler } from "webpack"; import WebpackDevServer from "webpack-dev-server"; import { createCompiler, prepareUrls } from "./WebpackDevServerUtils"; @@ -64,7 +64,7 @@ const devSocket = { }; // Create a webpack compiler that is configured with custom messages. -const compiler = createCompiler({ +const compiler: Compiler | MultiCompiler = createCompiler({ webpack, config: webpackConfig, appName: "Coral", @@ -100,6 +100,7 @@ devServer.listen(PORT, HOST, (err: Error) => { }); ["SIGINT", "SIGTERM"].forEach((sig: any) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument process.once(sig, () => { devServer.close(); process.exit(); diff --git a/client/scripts/watcher/bin/watcher.ts b/client/scripts/watcher/bin/watcher.ts index b3c4df0d59..a40663f6f5 100644 --- a/client/scripts/watcher/bin/watcher.ts +++ b/client/scripts/watcher/bin/watcher.ts @@ -20,6 +20,7 @@ async function run( config = config.default; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument await watch(config, { only }); } diff --git a/client/scripts/watcher/watch.ts b/client/scripts/watcher/watch.ts index e32f3ad492..55cb5107c1 100644 --- a/client/scripts/watcher/watch.ts +++ b/client/scripts/watcher/watch.ts @@ -32,6 +32,7 @@ async function beginWatch( function setupCleanup(watcher: Watcher, config: Config) { ["SIGINT", "SIGTERM"].forEach((signal) => + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument process.once(signal as any, async () => { const cleanups = []; if (watcher.onCleanup) { diff --git a/server/scripts/generateEventDocs.ts b/server/scripts/generateEventDocs.ts index ee6671088c..383d90a3a1 100644 --- a/server/scripts/generateEventDocs.ts +++ b/server/scripts/generateEventDocs.ts @@ -169,7 +169,6 @@ function removeFutureAddedValue(text: string) { /** * Append or update previous documention in markdownFile. - * * @param markdownFile The markdown file we want to inject the docs too. * @param entries data as returned by gatherEntries. */ diff --git a/server/scripts/start.ts b/server/scripts/start.ts index 06a9eef04d..fea82e3361 100644 --- a/server/scripts/start.ts +++ b/server/scripts/start.ts @@ -7,7 +7,7 @@ import dotenv from "dotenv"; dotenv.config(); import chalk from "chalk"; -import webpack from "webpack"; +import webpack, { Compiler, MultiCompiler } from "webpack"; import WebpackDevServer from "webpack-dev-server"; import { createCompiler, prepareUrls } from "./WebpackDevServerUtils"; @@ -64,7 +64,7 @@ const devSocket = { }; // Create a webpack compiler that is configured with custom messages. -const compiler = createCompiler({ +const compiler: Compiler | MultiCompiler = createCompiler({ webpack, config: webpackConfig, appName: "Coral", @@ -97,6 +97,7 @@ devServer.listen(PORT, HOST, (err: Error) => { }); ["SIGINT", "SIGTERM"].forEach((sig: any) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument process.once(sig, () => { devServer.close(); process.exit(); diff --git a/server/scripts/watcher/bin/watcher.ts b/server/scripts/watcher/bin/watcher.ts index b3c4df0d59..a40663f6f5 100644 --- a/server/scripts/watcher/bin/watcher.ts +++ b/server/scripts/watcher/bin/watcher.ts @@ -20,6 +20,7 @@ async function run( config = config.default; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument await watch(config, { only }); } diff --git a/server/scripts/watcher/watch.ts b/server/scripts/watcher/watch.ts index e32f3ad492..55cb5107c1 100644 --- a/server/scripts/watcher/watch.ts +++ b/server/scripts/watcher/watch.ts @@ -32,6 +32,7 @@ async function beginWatch( function setupCleanup(watcher: Watcher, config: Config) { ["SIGINT", "SIGTERM"].forEach((signal) => + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument process.once(signal as any, async () => { const cleanups = []; if (watcher.onCleanup) { From 8c4d30a58cf50e27c59e570856687d530d0abd7e Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 11 Dec 2023 09:29:37 -0500 Subject: [PATCH 14/66] update types and to fix tests --- .../admin/routes/Moderate/Queue/QueueRoute.tsx | 3 ++- .../core/client/framework/lib/validation.tsx | 18 ++++++------------ .../testHelpers/createRelayEnvironment.ts | 5 ++--- .../KeyboardShortcuts/KeyboardShortcuts.tsx | 12 ++++-------- .../client/ui/helpers/combineEventHandlers.ts | 3 ++- client/src/core/client/ui/hocs/withStyles.ts | 3 ++- .../src/core/server/models/comment/metrics.ts | 4 ++-- 7 files changed, 20 insertions(+), 28 deletions(-) diff --git a/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx b/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx index 259686134f..d453f3205e 100644 --- a/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx +++ b/client/src/core/client/admin/routes/Moderate/Queue/QueueRoute.tsx @@ -244,7 +244,8 @@ const createQueueRoute = ( } const queue = - data.moderationQueues[Object.keys(data.moderationQueues as {})[0]]; + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + data.moderationQueues[Object.keys(data.moderationQueues)[0]]; return ( createValidator( - (v) => - v === null || - !(typeof v === "string") || - (Number.isInteger(parseFloat(v)) && parseFloat(v) > x), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => v === null || (Number.isInteger(parseFloat(v)) && v > x), NOT_A_WHOLE_NUMBER_GREATER_THAN(x) ); @@ -290,10 +288,8 @@ export const validateWholeNumberGreaterThan = (x: number) => */ export const validateWholeNumberGreaterThanOrEqual = (x: number) => createValidator( - (v) => - v === null || - !(typeof v === "string") || - (Number.isInteger(parseFloat(v)) && parseFloat(v) >= x), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => v === null || (Number.isInteger(parseFloat(v)) && v >= x), NOT_A_WHOLE_NUMBER_GREATER_THAN_OR_EQUAL(x) ); @@ -305,10 +301,8 @@ export const validateWholeNumberBetween = (min: number, max: number) => (v) => !v || v === 0 || - !(typeof v === "string") || - (Number.isInteger(parseFloat(v)) && - parseFloat(v) >= min && - parseFloat(v) <= max), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (Number.isInteger(parseFloat(v)) && v >= min && v <= max), NOT_A_WHOLE_NUMBER_BETWEEN(min, max) ); diff --git a/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts b/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts index eb1f494593..a1725e3c23 100644 --- a/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts +++ b/client/src/core/client/framework/testHelpers/createRelayEnvironment.ts @@ -163,10 +163,9 @@ export default function createRelayEnvironment( logResult: params.network.logNetwork, muteErrors: params.network.muteNetworkErrors, }), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument params.network.subscriptionHandler - ? (createSubscribe( - params.network.subscriptionHandler - ) as unknown as SubscribeFunction) + ? (createSubscribe(params.network.subscriptionHandler) as any) : undefined ); } diff --git a/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx b/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx index 34df042ef2..8f41818e12 100644 --- a/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx +++ b/client/src/core/client/stream/common/KeyboardShortcuts/KeyboardShortcuts.tsx @@ -1357,19 +1357,15 @@ const KeyboardShortcuts: FunctionComponent = ({ // Subscribe to keypress events. useEffect(() => { renderWindow.addEventListener("keypress", handleWindowKeypress); - root.addEventListener( - "keypress", - handleKeypress as unknown as EventListenerOrEventListenerObject - ); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + root.addEventListener("keypress", handleKeypress as any); return () => { if (renderWindow.removeEventListener) { renderWindow.removeEventListener("keypress", handleWindowKeypress); } - root.removeEventListener( - "keypress", - handleKeypress as unknown as EventListenerOrEventListenerObject - ); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + root.removeEventListener("keypress", handleKeypress as any); }; }, [handleKeypress, handleWindowKeypress, renderWindow, root]); diff --git a/client/src/core/client/ui/helpers/combineEventHandlers.ts b/client/src/core/client/ui/helpers/combineEventHandlers.ts index c6825f9576..0ef8a31213 100644 --- a/client/src/core/client/ui/helpers/combineEventHandlers.ts +++ b/client/src/core/client/ui/helpers/combineEventHandlers.ts @@ -19,7 +19,8 @@ export default function combineEventHandlers(a: A, b: B): A & B; export default function combineEventHandlers(...propObjects: any[]): any { const result: any = {}; propObjects.forEach((o) => { - Object.keys(o as {}).forEach((k) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + Object.keys(o).forEach((k) => { if (k in result) { const prev = result[k]; result[k] = (...args: any[]) => { diff --git a/client/src/core/client/ui/hocs/withStyles.ts b/client/src/core/client/ui/hocs/withStyles.ts index e84f94cbff..7faae74e27 100644 --- a/client/src/core/client/ui/hocs/withStyles.ts +++ b/client/src/core/client/ui/hocs/withStyles.ts @@ -14,7 +14,8 @@ function withStyles( return withPropsOnChange(["classes"], (props) => { const result = { ...styles }; if (props.classes) { - Object.keys(props.classes as {}).forEach((k) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + Object.keys(props.classes).forEach((k) => { if ((styles as any)[k]) { (result as any)[k] += ` ${props.classes[k]}`; } diff --git a/server/src/core/server/models/comment/metrics.ts b/server/src/core/server/models/comment/metrics.ts index aa55e5f6fc..062f6b7a7c 100644 --- a/server/src/core/server/models/comment/metrics.ts +++ b/server/src/core/server/models/comment/metrics.ts @@ -117,7 +117,7 @@ export async function retrieveTodayCommentMetrics( continue; } - const isSiteMod = isSiteModerator(moderator as Readonly); + const isSiteMod = isSiteModerator(moderator); if (isSiteMod && !moderator.moderationScopes.siteIDs?.includes(siteID)) { const count = moderatorComments.get(moderator.id as string)?.size ?? 0; siteModsNotResponsibleForSiteCommentCount += count; @@ -180,7 +180,7 @@ export async function retrieveAllTimeStaffCommentMetrics( continue; } - const isSiteMod = isSiteModerator(moderator as Readonly); + const isSiteMod = isSiteModerator(moderator); if (isSiteMod && !moderator.moderationScopes.siteIDs?.includes(siteID)) { const count = moderatorComments.get(moderator.id as string)?.size ?? 0; siteModsNotResponsibleForSiteCommentCount += count; From a5a020cd8c43b4a73c85bdf52cbc110a97cc3c8b Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 11 Dec 2023 10:01:47 -0500 Subject: [PATCH 15/66] fix types --- server/src/core/server/models/comment/metrics.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/src/core/server/models/comment/metrics.ts b/server/src/core/server/models/comment/metrics.ts index 062f6b7a7c..3f43cee652 100644 --- a/server/src/core/server/models/comment/metrics.ts +++ b/server/src/core/server/models/comment/metrics.ts @@ -15,7 +15,6 @@ import { GQLTAG, } from "coral-server/graph/schema/__generated__/types"; -import { User } from "../user"; import { PUBLISHED_STATUSES } from "./constants"; import { hasTag } from "./helpers"; @@ -117,6 +116,7 @@ export async function retrieveTodayCommentMetrics( continue; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const isSiteMod = isSiteModerator(moderator); if (isSiteMod && !moderator.moderationScopes.siteIDs?.includes(siteID)) { const count = moderatorComments.get(moderator.id as string)?.size ?? 0; @@ -180,6 +180,7 @@ export async function retrieveAllTimeStaffCommentMetrics( continue; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const isSiteMod = isSiteModerator(moderator); if (isSiteMod && !moderator.moderationScopes.siteIDs?.includes(siteID)) { const count = moderatorComments.get(moderator.id as string)?.size ?? 0; From 9aff0f2ba39b71f2960811c4486adaa89542fc13 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 11 Dec 2023 10:50:51 -0500 Subject: [PATCH 16/66] update validation and helpers lint --- .../client/framework/lib/form/helpers.tsx | 13 +++++----- .../core/client/framework/lib/validation.tsx | 24 +++++++++++-------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/client/src/core/client/framework/lib/form/helpers.tsx b/client/src/core/client/framework/lib/form/helpers.tsx index 528cf9de0b..5c7ae47fc9 100644 --- a/client/src/core/client/framework/lib/form/helpers.tsx +++ b/client/src/core/client/framework/lib/form/helpers.tsx @@ -25,9 +25,10 @@ export const parseEmptyAsNull = (v: any) => { }; export const parseWithDOMPurify: any = (v: any) => { - if (v === "" || !(typeof v === "string")) { + if (v === "") { return null; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument return DOMPurify.sanitize(v); }; @@ -39,18 +40,20 @@ export const formatEmpty = (v: any) => { }; export const parsePercentage = (v: any) => { - if (v === "" || !(typeof v === "number")) { + if (v === "") { return null; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument if (isNaN(v)) { return v; } return v / 100; }; export const formatPercentage = (v: any) => { - if (v === null || v === undefined || !(typeof v === "number")) { + if (v === null || v === undefined) { return ""; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument if (isNaN(v)) { return v; } @@ -64,9 +67,7 @@ export const formatBool = (v: boolean) => { }; export const parseInteger = (v: any) => { - if (typeof v !== "string") { - return v; - } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const result = Number.parseInt(v, 10); if (isNaN(result)) { return v; diff --git a/client/src/core/client/framework/lib/validation.tsx b/client/src/core/client/framework/lib/validation.tsx index d60e0b79a6..f2df58cd69 100644 --- a/client/src/core/client/framework/lib/validation.tsx +++ b/client/src/core/client/framework/lib/validation.tsx @@ -88,7 +88,8 @@ export const requiredTrue = createValidator( * validateEmail is a Validator that checks that the value is an email. */ export const validateEmail = createValidator( - (v) => !v || !(typeof v === "string") || EMAIL_REGEX.test(v), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => !v || EMAIL_REGEX.test(v), INVALID_EMAIL() ); @@ -97,7 +98,8 @@ export const validateEmail = createValidator( * at the beginning and including at least one dot. */ export const validateEmailDomain = createValidator( - (v) => !v || !(typeof v === "string") || EMAIL_DOMAIN_REGEX.test(v), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => !v || EMAIL_DOMAIN_REGEX.test(v), INVALID_EMAIL_DOMAIN() ); @@ -105,7 +107,8 @@ export const validateEmailDomain = createValidator( * validateUsernameCharacters is a Validator that checks that the username only contains valid characters. */ export const validateUsernameCharacters = createValidator( - (v) => !v || !(typeof v === "string") || USERNAME_REGEX.test(v), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => !v || USERNAME_REGEX.test(v), INVALID_CHARACTERS() ); @@ -131,14 +134,16 @@ export const validateImageURL = createValidator( * validateShareURL checks that a URL is valid and includes a valid commentID query param */ export const validateShareURL = (v: any) => { - if (!v || !(typeof v === "string")) { + if (!v) { return false; } const shareURLArr = v.split("?commentID="); if (!(shareURLArr.length === 2)) { return false; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const isValidUrl = URL_REGEX.test(shareURLArr[0]); + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const isValidCommentID = ID_REGEX.test(shareURLArr[1]); return isValidUrl && isValidCommentID; }; @@ -147,7 +152,8 @@ export const validateShareURL = (v: any) => { * validateURL is a Validator that checks that the URL only contains valid characters. */ export const validateURL = createValidator( - (v) => !v || !(typeof v === "string") || URL_REGEX.test(v), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => !v || URL_REGEX.test(v), INVALID_URL() ); @@ -265,11 +271,8 @@ export const validateUsernameEquals = createValidator( * validateWholeNumber is a Validator that checks for a valid whole number. */ export const validateWholeNumber = createValidator( - (v) => - !v || - v === 0 || - !(typeof v === "string") || - Number.isInteger(parseFloat(v)), + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument + (v) => !v || v === 0 || Number.isInteger(parseFloat(v)), NOT_A_WHOLE_NUMBER() ); @@ -352,6 +355,7 @@ export type Condition = (value: T, values: V) => boolean; /** * composeSomeConditions will return true when some of the conditions return * true, false if all return false. + * * @param conditions conditions to use */ export function composeSomeConditions( From ca00c5bd0d334f65d38dc9da60b2e52d1dc4d629 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 09:28:39 -0500 Subject: [PATCH 17/66] add rejectionreason when reject all comments selected for user ban and dsa --- .../core/client/admin/components/BanModal.css | 9 ++ .../core/client/admin/components/BanModal.tsx | 93 +++++++++++++++++-- .../ModerationReason/DetailedExplanation.tsx | 5 +- .../ModerationReason/ModerationReason.css | 1 + .../ModerationReason/ModerationReason.tsx | 13 +-- .../src/core/server/graph/mutators/Users.ts | 4 + .../core/server/graph/schema/schema.graphql | 4 + .../src/core/server/services/users/users.ts | 25 +---- 8 files changed, 113 insertions(+), 41 deletions(-) diff --git a/client/src/core/client/admin/components/BanModal.css b/client/src/core/client/admin/components/BanModal.css index 6b9d7472b6..91428cd758 100644 --- a/client/src/core/client/admin/components/BanModal.css +++ b/client/src/core/client/admin/components/BanModal.css @@ -39,3 +39,12 @@ $ban-modal-text: var(--palette-text-500); .customizeMessageArrowsIcon { padding-left: var(--spacing-1); } + +.rejectionReasonLink { + width: fit-content; + color: var(--palette-primary-600) !important; +} + +.rejectExistingReason { + background-color: var(--palette-grey-100); +} diff --git a/client/src/core/client/admin/components/BanModal.tsx b/client/src/core/client/admin/components/BanModal.tsx index f7887d2016..1450d391c7 100644 --- a/client/src/core/client/admin/components/BanModal.tsx +++ b/client/src/core/client/admin/components/BanModal.tsx @@ -8,13 +8,18 @@ import React, { useState, } from "react"; import { Form } from "react-final-form"; +import { graphql } from "react-relay"; import NotAvailable from "coral-admin/components/NotAvailable"; import { PROTECTED_EMAIL_DOMAINS } from "coral-common/common/lib/constants"; import { extractDomain } from "coral-common/common/lib/email"; +import { + isOrgModerator, + isSiteModerator, +} from "coral-common/common/lib/permissions/types"; import { useGetMessage } from "coral-framework/lib/i18n"; -import { useMutation } from "coral-framework/lib/relay"; -import { GQLUSER_ROLE } from "coral-framework/schema"; +import { useLocal, useMutation } from "coral-framework/lib/relay"; +import { GQLREJECTION_REASON_CODE, GQLUSER_ROLE } from "coral-framework/schema"; import { ArrowsDownIcon, ArrowsUpIcon, @@ -32,6 +37,7 @@ import { } from "coral-ui/components/v2"; import { CallOut } from "coral-ui/components/v3"; +import { BanModalLocal } from "coral-admin/__generated__/BanModalLocal.graphql"; import { UserStatusChangeContainer_settings } from "coral-admin/__generated__/UserStatusChangeContainer_settings.graphql"; import { UserStatusChangeContainer_user } from "coral-admin/__generated__/UserStatusChangeContainer_user.graphql"; import { UserStatusChangeContainer_viewer } from "coral-admin/__generated__/UserStatusChangeContainer_viewer.graphql"; @@ -40,16 +46,14 @@ import BanDomainMutation from "./BanDomainMutation"; import BanUserMutation from "./BanUserMutation"; import ModalHeader from "./ModalHeader"; import ModalHeaderUsername from "./ModalHeaderUsername"; +import DetailedExplanation from "./ModerationReason/DetailedExplanation"; +import Reasons from "./ModerationReason/Reasons"; import RemoveUserBanMutation from "./RemoveUserBanMutation"; import UpdateUserBanMutation from "./UpdateUserBanMutation"; import ChangeStatusModal from "./UserStatus/ChangeStatusModal"; import { getTextForUpdateType } from "./UserStatus/helpers"; import UserStatusSitesList from "./UserStatus/UserStatusSitesList"; -import { - isOrgModerator, - isSiteModerator, -} from "coral-common/common/lib/permissions/types"; import styles from "./BanModal.css"; export enum UpdateType { @@ -140,6 +144,12 @@ const BanModal: FunctionComponent = ({ const updateUserBan = useMutation(UpdateUserBanMutation); const removeUserBan = useMutation(RemoveUserBanMutation); + const [{ dsaFeaturesEnabled }] = useLocal(graphql` + fragment BanModalLocal on Local { + dsaFeaturesEnabled + } + `); + const getMessage = useGetMessage(); const getDefaultMessage = useMemo((): string => { return getMessage( @@ -203,6 +213,17 @@ const BanModal: FunctionComponent = ({ ({ domain }) => domain === emailDomain ); + const [view, setView] = useState<"REASON" | "EXPLANATION">("REASON"); + const [reasonCode, setReasonCode] = useState( + null + ); + const [detailedExplanation, setDetailedExplanation] = useState( + null + ); + const [otherCustomReason, setOtherCustomReason] = useState( + null + ); + const canBanDomain = (viewer.role === GQLUSER_ROLE.ADMIN || (viewer.role === GQLUSER_ROLE.MODERATOR && !isSiteModerator(viewer))) && @@ -227,6 +248,13 @@ const BanModal: FunctionComponent = ({ userID, // Should be defined because the modal shouldn't open if author is null message: customizeMessage ? emailMessage : getDefaultMessage, rejectExistingComments, + rejectionReason: rejectExistingComments + ? { + code: reasonCode!, + detailedExplanation, + customReason: otherCustomReason, + } + : undefined, siteIDs: viewerIsScoped ? viewer?.moderationScopes?.sites?.map(({ id }) => id) : [], @@ -243,6 +271,13 @@ const BanModal: FunctionComponent = ({ banSiteIDs, unbanSiteIDs, rejectExistingComments, + rejectionReason: rejectExistingComments + ? { + code: reasonCode!, + detailedExplanation, + customReason: otherCustomReason, + } + : undefined, }); } catch (err) { return { [FORM_ERROR]: err.message }; @@ -281,6 +316,9 @@ const BanModal: FunctionComponent = ({ removeUserBan, createDomainBan, emailDomain, + reasonCode, + detailedExplanation, + otherCustomReason, ]); const { @@ -296,7 +334,16 @@ const BanModal: FunctionComponent = ({ const requiresSiteBanUpdates = updateType === UpdateType.SPECIFIC_SITES || (updateType === UpdateType.ALL_SITES && viewerIsSingleSiteMod); - const disableForm = requiresSiteBanUpdates && !pendingSiteBanUpdates; + // disable if reject all comments doesn't have a reason if dsa is enabled + // also disable if Other reason and not a custom reason included + const requiresRejectionReason = + rejectExistingComments && + !!dsaFeaturesEnabled && + (!reasonCode || + (reasonCode === GQLREJECTION_REASON_CODE.OTHER && !otherCustomReason)); + const disableForm = + (requiresSiteBanUpdates && !pendingSiteBanUpdates) || + requiresRejectionReason; return ( = ({ )} + {rejectExistingComments && dsaFeaturesEnabled && ( + + {view === "REASON" ? ( + { + setReasonCode(code); + setView("EXPLANATION"); + }} + /> + ) : ( + { + setView("REASON"); + setReasonCode(null); + }} + code={reasonCode!} + explanationValue={detailedExplanation} + onChangeExplanation={setDetailedExplanation} + customReasonValue={otherCustomReason} + onChangeCustomReason={setOtherCustomReason} + linkClassName={styles.rejectionReasonLink} + /> + )} + + )} {/* EMAIL BAN */} {canBanDomain && ( diff --git a/client/src/core/client/admin/components/ModerationReason/DetailedExplanation.tsx b/client/src/core/client/admin/components/ModerationReason/DetailedExplanation.tsx index cea272e759..fab9cc6906 100644 --- a/client/src/core/client/admin/components/ModerationReason/DetailedExplanation.tsx +++ b/client/src/core/client/admin/components/ModerationReason/DetailedExplanation.tsx @@ -119,7 +119,10 @@ const DetailedExplanation: FunctionComponent = ({ ) : ( - setShowAddExplanation(true)} /> + setShowAddExplanation(true)} + linkClassName={linkClassName} + /> )} ); diff --git a/client/src/core/client/admin/components/ModerationReason/ModerationReason.css b/client/src/core/client/admin/components/ModerationReason/ModerationReason.css index 75e9773d61..cfe903c2e1 100644 --- a/client/src/core/client/admin/components/ModerationReason/ModerationReason.css +++ b/client/src/core/client/admin/components/ModerationReason/ModerationReason.css @@ -13,6 +13,7 @@ .optionAction { padding: 0; margin: var(--spacing-1) 0; + width: fit-content; } .rejectButton { diff --git a/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx b/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx index f7dc4fe607..ac151c5e55 100644 --- a/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx +++ b/client/src/core/client/admin/components/ModerationReason/ModerationReason.tsx @@ -30,7 +30,6 @@ const ModerationReason: FunctionComponent = ({ const [view, setView] = useState<"REASON" | "EXPLANATION">("REASON"); const [reasonCode, setReasonCode] = useState(null); - const [legalGrounds] = useState(null); const [detailedExplanation, setDetailedExplanation] = useState( null ); @@ -41,20 +40,10 @@ const ModerationReason: FunctionComponent = ({ const submitReason = useCallback(() => { onReason({ code: reasonCode!, - legalGrounds: - reasonCode === GQLREJECTION_REASON_CODE.ILLEGAL_CONTENT - ? legalGrounds - : undefined, detailedExplanation: detailedExplanation || undefined, customReason: otherCustomReason || undefined, }); - }, [ - reasonCode, - legalGrounds, - detailedExplanation, - onReason, - otherCustomReason, - ]); + }, [reasonCode, detailedExplanation, onReason, otherCustomReason]); return ( diff --git a/server/src/core/server/graph/mutators/Users.ts b/server/src/core/server/graph/mutators/Users.ts index 73b3d65428..de47b64363 100644 --- a/server/src/core/server/graph/mutators/Users.ts +++ b/server/src/core/server/graph/mutators/Users.ts @@ -336,6 +336,7 @@ export const Users = (ctx: GraphContext) => ({ message, rejectExistingComments = false, siteIDs, + rejectionReason, }: GQLBanUserInput) => ban( ctx.mongo, @@ -349,6 +350,7 @@ export const Users = (ctx: GraphContext) => ({ ctx.i18n, rejectExistingComments, siteIDs, + rejectionReason, ctx.now ), updateUserBan: @@ -358,6 +360,7 @@ export const Users = (ctx: GraphContext) => ({ rejectExistingComments = false, banSiteIDs, unbanSiteIDs, + rejectionReason, }: GQLUpdateUserBanInput) => async () => updateUserBan( @@ -373,6 +376,7 @@ export const Users = (ctx: GraphContext) => ({ rejectExistingComments, banSiteIDs, unbanSiteIDs, + rejectionReason, ctx.now ), warn: async (input: GQLWarnUserInput) => diff --git a/server/src/core/server/graph/schema/schema.graphql b/server/src/core/server/graph/schema/schema.graphql index 58eb8f4139..0e1fd70b98 100644 --- a/server/src/core/server/graph/schema/schema.graphql +++ b/server/src/core/server/graph/schema/schema.graphql @@ -8875,6 +8875,8 @@ input BanUserInput { whether or not to reject all the user's previous comments when banning them. """ rejectExistingComments: Boolean + + rejectionReason: RejectCommentReasonInput } type BanUserPayload { @@ -8917,6 +8919,8 @@ input UpdateUserBanInput { """ rejectExistingComments: Boolean + rejectionReason: RejectCommentReasonInput + """ clientMutationID is required for relay support """ diff --git a/server/src/core/server/services/users/users.ts b/server/src/core/server/services/users/users.ts index 6858dec264..bfe3e2c08b 100644 --- a/server/src/core/server/services/users/users.ts +++ b/server/src/core/server/services/users/users.ts @@ -115,6 +115,7 @@ import { sendConfirmationEmail } from "coral-server/services/users/auth"; import { GQLAuthIntegrations, GQLREJECTION_REASON_CODE, + GQLRejectionReason, GQLUSER_ROLE, } from "coral-server/graph/schema/__generated__/types"; @@ -1389,6 +1390,7 @@ export async function ban( i18n: I18n, rejectExistingComments: boolean, siteIDs?: string[] | null, + rejectionReason?: GQLRejectionReason, now = new Date() ) { // Get the user being banned to check to see if the user already has an @@ -1468,17 +1470,6 @@ export async function ban( let user: Readonly; - const bundle = i18n.getBundle(tenant.locale); - const tranlsatedExplanation = translate( - bundle, - "common-userBanned", - "User banned." - ); - const rejectionReason = { - code: GQLREJECTION_REASON_CODE.OTHER, - detailedExplanation: tranlsatedExplanation, - }; - // Perform a site ban if (siteIDs && siteIDs.length > 0) { user = await siteBanUser( @@ -1614,6 +1605,7 @@ export async function updateUserBan( rejectExistingComments: boolean, banSiteIDs?: string[] | null, unbanSiteIDs?: string[] | null, + rejectionReason?: GQLRejectionReason, now = new Date() ) { // Ensure valid role @@ -1703,21 +1695,12 @@ export async function updateUserBan( // if any new bans and rejectExistingCommments, reject existing comments if (rejectExistingComments) { - const bundle = i18n.getBundle(tenant.locale); - const detailedExplanation = translate( - bundle, - "common-userBanned", - "User was banned." - ); await rejector.add({ tenantID: tenant.id, authorID: targetUser.id, moderatorID: banner.id, siteIDs: idsToBan, - reason: { - code: GQLREJECTION_REASON_CODE.OTHER, - detailedExplanation, - }, + reason: rejectionReason, }); } From c899d821ec2c8725c533cfe02d31f6a709d8b25c Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 09:30:11 -0500 Subject: [PATCH 18/66] remove unused imports --- server/src/core/server/services/users/users.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/src/core/server/services/users/users.ts b/server/src/core/server/services/users/users.ts index bfe3e2c08b..e94322f349 100644 --- a/server/src/core/server/services/users/users.ts +++ b/server/src/core/server/services/users/users.ts @@ -114,12 +114,11 @@ import { sendConfirmationEmail } from "coral-server/services/users/auth"; import { GQLAuthIntegrations, - GQLREJECTION_REASON_CODE, GQLRejectionReason, GQLUSER_ROLE, } from "coral-server/graph/schema/__generated__/types"; -import { I18n, translate } from "../i18n"; +import { I18n } from "../i18n"; import { AugmentedRedis } from "../redis"; import { generateAdminDownloadLink, From cb15ba5f880f3b362a702b5d65cb98d846646532 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 10:29:08 -0500 Subject: [PATCH 19/66] update spam rejection reason for spam ban --- .../Comments/Comment/UserBanPopover/BanUserMutation.ts | 1 + .../Comment/UserBanPopover/UserBanPopoverContainer.tsx | 10 ++++------ 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/BanUserMutation.ts b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/BanUserMutation.ts index ee9629bb9d..58061a013d 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/BanUserMutation.ts +++ b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/BanUserMutation.ts @@ -61,6 +61,7 @@ const BanUserMutation = createMutation( message: input.message, rejectExistingComments: input.rejectExistingComments, siteIDs: input.siteIDs, + rejectionReason: input.rejectionReason, clientMutationId: clientMutationId.toString(), }, }, diff --git a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx index c442de61a0..44440ef1be 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx @@ -129,6 +129,9 @@ const UserBanPopoverContainer: FunctionComponent = ({ userID: user.id, commentID: comment.id, rejectExistingComments: !siteBan, + rejectionReason: { + code: GQLREJECTION_REASON_CODE.SPAM, + }, message: getMessage( localeBundles, "common-banEmailTemplate", @@ -145,12 +148,7 @@ const UserBanPopoverContainer: FunctionComponent = ({ storyID: story.id, noEmit: true, reason: { - code: GQLREJECTION_REASON_CODE.OTHER, - detailedExplanation: getMessage( - localeBundles, - "common-userBanned", - "User was banned." - ), + code: GQLREJECTION_REASON_CODE.SPAM, }, }); } From af2269be67dd2f5d1d93521dfaeb59eba9be98b8 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 10:32:16 -0500 Subject: [PATCH 20/66] remove i18n and translation no longer used --- locales/en-US/common.ftl | 4 +--- server/src/core/server/graph/mutators/Users.ts | 2 -- server/src/core/server/services/users/users.ts | 2 -- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/locales/en-US/common.ftl b/locales/en-US/common.ftl index e456039106..af01dc63cd 100644 --- a/locales/en-US/common.ftl +++ b/locales/en-US/common.ftl @@ -62,6 +62,4 @@ common-moderationReason-detailedExplanation-placeholder = common-moderationReason-customReason = Custom reason (required) common-moderationReason-customReason-placeholder = .placeholder = Add your reason - -common-userBanned = - User was banned. + diff --git a/server/src/core/server/graph/mutators/Users.ts b/server/src/core/server/graph/mutators/Users.ts index de47b64363..141b938909 100644 --- a/server/src/core/server/graph/mutators/Users.ts +++ b/server/src/core/server/graph/mutators/Users.ts @@ -347,7 +347,6 @@ export const Users = (ctx: GraphContext) => ({ ctx.user!, userID, message, - ctx.i18n, rejectExistingComments, siteIDs, rejectionReason, @@ -369,7 +368,6 @@ export const Users = (ctx: GraphContext) => ({ ctx.mailerQueue, ctx.rejectorQueue, ctx.tenant, - ctx.i18n, ctx.user!, userID, message, diff --git a/server/src/core/server/services/users/users.ts b/server/src/core/server/services/users/users.ts index e94322f349..bb5d357f58 100644 --- a/server/src/core/server/services/users/users.ts +++ b/server/src/core/server/services/users/users.ts @@ -1386,7 +1386,6 @@ export async function ban( banner: User, userID: string, message: string, - i18n: I18n, rejectExistingComments: boolean, siteIDs?: string[] | null, rejectionReason?: GQLRejectionReason, @@ -1597,7 +1596,6 @@ export async function updateUserBan( mailer: MailerQueue, rejector: RejectorQueue, tenant: Tenant, - i18n: I18n, banner: User, userID: string, message: string, From 0f8e99b53fe2c6aa5fe2f54e2e9d48e97b923d8f Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 10:41:46 -0500 Subject: [PATCH 21/66] refactor; add comments --- .../core/client/admin/components/BanModal.tsx | 31 ++++++++----------- .../UserBanPopoverContainer.tsx | 29 ++++++++++------- .../core/server/graph/schema/schema.graphql | 8 +++++ 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/client/src/core/client/admin/components/BanModal.tsx b/client/src/core/client/admin/components/BanModal.tsx index 1450d391c7..d16b15589d 100644 --- a/client/src/core/client/admin/components/BanModal.tsx +++ b/client/src/core/client/admin/components/BanModal.tsx @@ -241,6 +241,14 @@ const BanModal: FunctionComponent = ({ }, [viewerIsSingleSiteMod, viewer.moderationScopes]); const onFormSubmit = useCallback(async () => { + const rejectionReason = + rejectExistingComments && dsaFeaturesEnabled + ? { + code: reasonCode!, + detailedExplanation, + customReason: otherCustomReason, + } + : undefined; switch (updateType) { case UpdateType.ALL_SITES: try { @@ -248,13 +256,7 @@ const BanModal: FunctionComponent = ({ userID, // Should be defined because the modal shouldn't open if author is null message: customizeMessage ? emailMessage : getDefaultMessage, rejectExistingComments, - rejectionReason: rejectExistingComments - ? { - code: reasonCode!, - detailedExplanation, - customReason: otherCustomReason, - } - : undefined, + rejectionReason, siteIDs: viewerIsScoped ? viewer?.moderationScopes?.sites?.map(({ id }) => id) : [], @@ -271,13 +273,7 @@ const BanModal: FunctionComponent = ({ banSiteIDs, unbanSiteIDs, rejectExistingComments, - rejectionReason: rejectExistingComments - ? { - code: reasonCode!, - detailedExplanation, - customReason: otherCustomReason, - } - : undefined, + rejectionReason, }); } catch (err) { return { [FORM_ERROR]: err.message }; @@ -334,16 +330,15 @@ const BanModal: FunctionComponent = ({ const requiresSiteBanUpdates = updateType === UpdateType.SPECIFIC_SITES || (updateType === UpdateType.ALL_SITES && viewerIsSingleSiteMod); - // disable if reject all comments doesn't have a reason if dsa is enabled - // also disable if Other reason and not a custom reason included - const requiresRejectionReason = + const requiresRejectionReasonForDSA = rejectExistingComments && !!dsaFeaturesEnabled && (!reasonCode || (reasonCode === GQLREJECTION_REASON_CODE.OTHER && !otherCustomReason)); + const disableForm = (requiresSiteBanUpdates && !pendingSiteBanUpdates) || - requiresRejectionReason; + requiresRejectionReasonForDSA; return ( = ({ onDismiss, view, }) => { - const [{ accessToken }] = useLocal(graphql` - fragment UserBanPopoverContainer_local on Local { - accessToken - } - `); + const [{ accessToken, dsaFeaturesEnabled }] = + useLocal(graphql` + fragment UserBanPopoverContainer_local on Local { + accessToken + dsaFeaturesEnabled + } + `); const { localeBundles, rootURL } = useCoralContext(); const setSpamBanned = useMutation(SetSpamBanned); const reject = useMutation(RejectCommentMutation); @@ -129,9 +131,12 @@ const UserBanPopoverContainer: FunctionComponent = ({ userID: user.id, commentID: comment.id, rejectExistingComments: !siteBan, - rejectionReason: { - code: GQLREJECTION_REASON_CODE.SPAM, - }, + rejectionReason: + dsaFeaturesEnabled && !siteBan + ? { + code: GQLREJECTION_REASON_CODE.SPAM, + } + : undefined, message: getMessage( localeBundles, "common-banEmailTemplate", @@ -147,9 +152,11 @@ const UserBanPopoverContainer: FunctionComponent = ({ commentRevisionID: comment.revision.id, storyID: story.id, noEmit: true, - reason: { - code: GQLREJECTION_REASON_CODE.SPAM, - }, + reason: dsaFeaturesEnabled + ? { + code: GQLREJECTION_REASON_CODE.SPAM, + } + : undefined, }); } } catch (e) { diff --git a/server/src/core/server/graph/schema/schema.graphql b/server/src/core/server/graph/schema/schema.graphql index 0e1fd70b98..e96b8df5cd 100644 --- a/server/src/core/server/graph/schema/schema.graphql +++ b/server/src/core/server/graph/schema/schema.graphql @@ -8876,6 +8876,10 @@ input BanUserInput { """ rejectExistingComments: Boolean + """ + rejectionReason is the reason provided for why any existing comments are being + rejected if DSA is enabled + """ rejectionReason: RejectCommentReasonInput } @@ -8919,6 +8923,10 @@ input UpdateUserBanInput { """ rejectExistingComments: Boolean + """ + rejectionReason is the reason provided for why any existing comments are being + rejected if DSA is enabled + """ rejectionReason: RejectCommentReasonInput """ From bb6b4585a741134ad07ffdd4a6d8b8cf8de65d6b Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 10:43:18 -0500 Subject: [PATCH 22/66] fix missing deps in callbacks --- client/src/core/client/admin/components/BanModal.tsx | 1 + .../Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/client/src/core/client/admin/components/BanModal.tsx b/client/src/core/client/admin/components/BanModal.tsx index d16b15589d..d6ddbb5b75 100644 --- a/client/src/core/client/admin/components/BanModal.tsx +++ b/client/src/core/client/admin/components/BanModal.tsx @@ -315,6 +315,7 @@ const BanModal: FunctionComponent = ({ reasonCode, detailedExplanation, otherCustomReason, + dsaFeaturesEnabled, ]); const { diff --git a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx index e94bff73bd..1e76fb391a 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/UserBanPopover/UserBanPopoverContainer.tsx @@ -186,6 +186,7 @@ const UserBanPopoverContainer: FunctionComponent = ({ setBanError, siteBan, setSpamBanned, + dsaFeaturesEnabled, ]); if (view === "CONFIRM_BAN") { From c4ef67f3221663f14bc132b2a5a506780af38a2a Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 10:44:30 -0500 Subject: [PATCH 23/66] remove import not used --- server/src/core/server/services/users/users.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/core/server/services/users/users.ts b/server/src/core/server/services/users/users.ts index bb5d357f58..c12ced6067 100644 --- a/server/src/core/server/services/users/users.ts +++ b/server/src/core/server/services/users/users.ts @@ -118,7 +118,6 @@ import { GQLUSER_ROLE, } from "coral-server/graph/schema/__generated__/types"; -import { I18n } from "../i18n"; import { AugmentedRedis } from "../redis"; import { generateAdminDownloadLink, From 7b253e239a2a34e7cd59dcf638ccd4c0bdc225e8 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 12 Dec 2023 11:04:13 -0500 Subject: [PATCH 24/66] dont need i18n in ban user server tests anymore --- server/src/core/server/services/users/users.spec.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/server/src/core/server/services/users/users.spec.ts b/server/src/core/server/services/users/users.spec.ts index 8337f0387c..435df2455d 100644 --- a/server/src/core/server/services/users/users.spec.ts +++ b/server/src/core/server/services/users/users.spec.ts @@ -9,7 +9,6 @@ import { } from "coral-server/test/fixtures"; import { createMockDataCache, - createMockI18n, createMockMailer, createMockMongoContex, createMockRejector, @@ -19,7 +18,6 @@ import { updateRole, updateUserBan } from "./users"; import { GQLUSER_ROLE } from "coral-server/graph/schema/__generated__/types"; import { demoteMember, promoteMember } from "."; -import { I18n } from "../i18n"; describe("updateUserBan", () => { afterEach(jest.clearAllMocks); @@ -37,7 +35,6 @@ describe("updateUserBan", () => { tenantID, role: GQLUSER_ROLE.ADMIN, }); - const i18n = createMockI18n("User was banned."); /* eslint-disable-next-line */ const userService = require("coral-server/models/user"); @@ -55,7 +52,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, commenter, badUser.id, "Test message", @@ -77,7 +73,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - new I18n("en-US"), staff, badUser.id, "Test message", @@ -104,7 +99,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, siteAMod, badUser.id, "Test message", @@ -128,7 +122,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, orgMod, badUser.id, "Test message", @@ -160,7 +153,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, admin, bannedOnSiteA.id, "Test message", @@ -195,7 +187,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, admin, bannedOnSiteB.id, "TEST MESSAGE", @@ -222,7 +213,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, admin, notBannedUser.id, "TEST MESSAGE", @@ -249,7 +239,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, admin, unbannedUser.id, "Test Message", @@ -266,7 +255,6 @@ describe("updateUserBan", () => { mailer, rejector, tenant, - i18n, admin, unbannedUser.id, "Test Message", From ef70a8b0d00d51af2e658aa93ef58d95bdc17ef1 Mon Sep 17 00:00:00 2001 From: tmair Date: Thu, 23 Nov 2023 16:20:28 +0100 Subject: [PATCH 25/66] fix: add german suspend email template The suspend template will be sent to a suspended user, if it is not customized. This is a user facing template and should be translated in order to prevent emails with english and german text content. --- locales/de/admin.ftl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 locales/de/admin.ftl diff --git a/locales/de/admin.ftl b/locales/de/admin.ftl new file mode 100644 index 0000000000..c42db4ee85 --- /dev/null +++ b/locales/de/admin.ftl @@ -0,0 +1,4 @@ +community-suspendModal-emailTemplate = + Hallo { $username }, + + Entsprechend den Community-Richtlinien von { $organizationName } wurdest Du vorübergehend suspendiert. Während der Sperrung kannst Du keine Kommentare verfassen, andere Beiträge melden oder mit anderen Kommentatoren interagieren. Du kannst nach { framework-timeago-time } wieder an der Unterhaltung teilnehmen. \ No newline at end of file From e094e6faf68fe7aaaa74c53621d20014b8a66b33 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 14 Dec 2023 10:21:16 -0500 Subject: [PATCH 26/66] add top commenter config to admin --- .../General/GeneralConfigContainer.tsx | 3 ++ .../sections/General/TopCommenterConfig.tsx | 52 +++++++++++++++++++ locales/en-US/admin.ftl | 4 ++ .../core/server/graph/resolvers/Settings.ts | 1 + .../core/server/graph/schema/schema.graphql | 35 ++++++++++++- .../core/server/models/settings/settings.ts | 10 ++++ .../src/core/server/models/tenant/tenant.ts | 3 ++ 7 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 client/src/core/client/admin/routes/Configure/sections/General/TopCommenterConfig.tsx diff --git a/client/src/core/client/admin/routes/Configure/sections/General/GeneralConfigContainer.tsx b/client/src/core/client/admin/routes/Configure/sections/General/GeneralConfigContainer.tsx index 8805ca822a..785cabaadb 100644 --- a/client/src/core/client/admin/routes/Configure/sections/General/GeneralConfigContainer.tsx +++ b/client/src/core/client/admin/routes/Configure/sections/General/GeneralConfigContainer.tsx @@ -27,6 +27,7 @@ import MemberBioConfig from "./MemberBioConfig"; import ReactionConfigContainer from "./ReactionConfigContainer"; import RTEConfig from "./RTEConfig"; import SitewideCommentingConfig from "./SitewideCommentingConfig"; +import TopCommenterConfig from "./TopCommenterConfig"; import styles from "./GeneralConfigContainer.css"; @@ -61,6 +62,7 @@ const GeneralConfigContainer: React.FunctionComponent = ({ + @@ -85,6 +87,7 @@ const enhanced = withFragmentContainer({ ...FeaturedByConfig_formValues @relay(mask: false) ...ReactionConfig_formValues @relay(mask: false) ...BadgeConfig_formValues @relay(mask: false) + ...TopCommenterConfig_formValues @relay(mask: false) ...FlairBadgeConfigContainer_formValues @relay(mask: false) ...FlairBadgeConfigContainer_settings ...RTEConfig_formValues @relay(mask: false) diff --git a/client/src/core/client/admin/routes/Configure/sections/General/TopCommenterConfig.tsx b/client/src/core/client/admin/routes/Configure/sections/General/TopCommenterConfig.tsx new file mode 100644 index 0000000000..d0cee14a53 --- /dev/null +++ b/client/src/core/client/admin/routes/Configure/sections/General/TopCommenterConfig.tsx @@ -0,0 +1,52 @@ +import { Localized } from "@fluent/react/compat"; +import React, { FunctionComponent } from "react"; +import { graphql } from "react-relay"; + +import { + FieldSet, + FormField, + FormFieldDescription, + Label, +} from "coral-ui/components/v2"; + +import ConfigBox from "../../ConfigBox"; +import Header from "../../Header"; +import OnOffField from "../../OnOffField"; + +// eslint-disable-next-line no-unused-expressions +graphql` + fragment TopCommenterConfig_formValues on Settings { + topCommenter { + enabled + } + } +`; + +interface Props { + disabled: boolean; +} + +const TopCommenterConfig: FunctionComponent = ({ disabled }) => ( + +
Top commenter
+ + } + > + + + Add top commenter badge to commenters with featured comments in the last + 10 days + + + }> + + + + + +
+); + +export default TopCommenterConfig; diff --git a/locales/en-US/admin.ftl b/locales/en-US/admin.ftl index e2c5bff43f..fabfcda39a 100644 --- a/locales/en-US/admin.ftl +++ b/locales/en-US/admin.ftl @@ -510,6 +510,10 @@ configure-general-featuredBy-title = Featured by configure-general-featuredBy-enabled = Featured by enabled configure-general-featuredBy-explanation = Add moderator name to featured comment display +configure-general-topCommenter-title = Top commenter +configure-general-topCommenter-explanation = Add top commenter badge to commenters with featured comments in the last 10 days +configure-general-topCommenter-enabled = Top commenter + configure-general-flairBadge-header = Custom flair badges configure-general-flairBadge-description = Encourage user engagement and participation by adding custom flair badges for your site. Badges can be allocated as part of your JWT claim. diff --git a/server/src/core/server/graph/resolvers/Settings.ts b/server/src/core/server/graph/resolvers/Settings.ts index 1e81475f50..f52d82c26b 100644 --- a/server/src/core/server/graph/resolvers/Settings.ts +++ b/server/src/core/server/graph/resolvers/Settings.ts @@ -45,6 +45,7 @@ export const Settings: GQLSettingsTypeResolver = { Boolean(disableDefaultFonts), emailDomainModeration: ({ emailDomainModeration = [] }) => emailDomainModeration, + topCommenter: ({ topCommenter = { enabled: false } }) => topCommenter, badges: ({ badges, staff }, args, ctx) => { const badgeConfig = badges || staff; diff --git a/server/src/core/server/graph/schema/schema.graphql b/server/src/core/server/graph/schema/schema.graphql index 3345039c46..c3d0fc8447 100644 --- a/server/src/core/server/graph/schema/schema.graphql +++ b/server/src/core/server/graph/schema/schema.graphql @@ -1733,6 +1733,17 @@ type BadgeConfiguration { adminLabel: String! } +""" +topCommenter specifies whether or not the feature is enabled to show that commenters +with comments featured within the last 10 days are top commenters +""" +type TopCommenterConfiguration { + """ + enabled is whether the Top commenter feature is enabled + """ + enabled: Boolean +} + """ FlairBadgeConfiguration specifies the configuration for flair badges, including whether they are enabled and any configured image urls. @@ -2201,6 +2212,12 @@ type Settings @cacheControl(maxAge: 30) { """ featuredBy: Boolean + """ + topCommenter specifies whether or not the feature is enabled to show that commenters + with comments featured within the last 10 days are top commenters + """ + topCommenter: TopCommenterConfiguration + """ staff specifies the configuration for the user badges assigned to users with any role above COMMENTER @@ -5988,6 +6005,17 @@ input ReactionConfigurationInput { color: String } +""" +topCommenter specifies whether or not the feature is enabled to show that commenters +with comments featured within the last 10 days are top commenters +""" +input TopCommenterConfigurationInput { + """ + enabled is whether the Top commenter feature is enabled + """ + enabled: Boolean +} + """ BadgeConfigurationInput specifies the configuration for the staff badges assigned to users with any role above COMMENTER. @@ -6374,6 +6402,12 @@ input SettingsInput { """ featuredBy: Boolean + """ + topCommenter specifies whether or not the feature is enabled to show that commenters + with comments featured within the last 10 days are top commenters + """ + topCommenter: TopCommenterConfigurationInput + """ badges specifies the configuration for user badges assigned to users with any role above COMMENTER. @@ -6464,7 +6498,6 @@ input SettingsInput { """ flairBadges: FlairBadgeConfigurationInput - """ dsa specifies the configuration for DSA European Union moderation and reporting features. diff --git a/server/src/core/server/models/settings/settings.ts b/server/src/core/server/models/settings/settings.ts index a6c9937879..8b662baf41 100644 --- a/server/src/core/server/models/settings/settings.ts +++ b/server/src/core/server/models/settings/settings.ts @@ -309,6 +309,10 @@ export interface FlairBadgeConfig { badges?: FlairBadge[]; } +export interface TopCommenterConfig { + enabled?: boolean; +} + export interface PremoderateEmailAddressConfig { tooManyPeriods?: { enabled?: boolean; @@ -425,6 +429,12 @@ export type Settings = GlobalModerationSettings & flairBadges?: FlairBadgeConfig; premoderateEmailAddress?: PremoderateEmailAddressConfig; + + /** + * topCommenter specifies whether or not the feature is enabled to show that commenters + * with comments featured within the last 10 days are top commenters + */ + topCommenter?: TopCommenterConfig; }; export const defaultRTEConfiguration: RTEConfiguration = { diff --git a/server/src/core/server/models/tenant/tenant.ts b/server/src/core/server/models/tenant/tenant.ts index 8191e47795..4920656649 100644 --- a/server/src/core/server/models/tenant/tenant.ts +++ b/server/src/core/server/models/tenant/tenant.ts @@ -306,6 +306,9 @@ export async function createTenant( method: GQLDSA_METHOD_OF_REDRESS.NONE, }, }, + topCommenter: { + enabled: false, + }, }; // Create the new Tenant by merging it together with the defaults. From fd9eaf63ff44230749dec84d5823f003ea1304e5 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Fri, 15 Dec 2023 11:03:41 -0500 Subject: [PATCH 27/66] initial top commenter backend --- .../src/core/server/data/cache/userCache.ts | 1 + .../core/server/graph/mutators/Comments.ts | 47 ++++++++++++++++++- .../src/core/server/graph/resolvers/User.ts | 4 ++ .../core/server/graph/schema/schema.graphql | 12 +++++ .../src/core/server/models/comment/comment.ts | 27 +++++++++++ server/src/core/server/models/user/user.ts | 32 +++++++++++++ 6 files changed, 122 insertions(+), 1 deletion(-) diff --git a/server/src/core/server/data/cache/userCache.ts b/server/src/core/server/data/cache/userCache.ts index 3ad5c1757b..14a1a97678 100644 --- a/server/src/core/server/data/cache/userCache.ts +++ b/server/src/core/server/data/cache/userCache.ts @@ -160,6 +160,7 @@ export class UserCache implements IDataCache { return { ...parsed, createdAt: new Date(parsed.createdAt), + lastFeaturedDate: new Date(parsed.lastFeaturedDate), status: { ...parsed.status, suspension: { diff --git a/server/src/core/server/graph/mutators/Comments.ts b/server/src/core/server/graph/mutators/Comments.ts index c7ae0749c4..7bb14893d9 100644 --- a/server/src/core/server/graph/mutators/Comments.ts +++ b/server/src/core/server/graph/mutators/Comments.ts @@ -2,7 +2,11 @@ import { ERROR_CODES } from "coral-common/common/lib/errors"; import { ADDITIONAL_DETAILS_MAX_LENGTH } from "coral-common/common/lib/helpers/validate"; import GraphContext from "coral-server/graph/context"; import { mapFieldsetToErrorCodes } from "coral-server/graph/errors"; -import { hasTag } from "coral-server/models/comment"; +import { + hasTag, + retrieveLatestFeaturedCommentForAuthor, +} from "coral-server/models/comment"; +import { updateLastFeaturedDate } from "coral-server/models/user"; import { addTag, removeTag } from "coral-server/services/comments"; import { createDontAgree, @@ -287,6 +291,19 @@ export const Comments = (ctx: GraphContext) => ({ // Publish that the comment was featured. await publishCommentFeatured(ctx.broker, comment); + // If the Top commenter feature is enabled, we need to update lastFeaturedDate + if (ctx.tenant?.topCommenter) { + const updatedUser = await updateLastFeaturedDate( + ctx.mongo, + ctx.tenant.id, + comment.authorID! + ); + const cacheAvailable = await ctx.cache.available(ctx.tenant.id); + if (cacheAvailable) { + await ctx.cache.users.update(updatedUser); + } + } + await ctx.notifications.create(ctx.tenant.id, ctx.tenant.locale, { targetUserID: comment.authorID!, comment, @@ -328,6 +345,34 @@ export const Comments = (ctx: GraphContext) => ({ ); } + // If the Top commenter feature is enabled, we need to update lastFeaturedDate + if (ctx.tenant?.topCommenter) { + // get latest featured comment if any + const latestFeatured = await retrieveLatestFeaturedCommentForAuthor( + ctx.mongo, + ctx.tenant.id, + comment.authorID!, + comment.id + ); + + // if a latest featured comment, update latestFeaturedDate for user to when it was featured + // otherwise just set to null + const latestFeaturedDate = + latestFeatured.length > 0 ? latestFeatured[0].createdAt : null; + + const updatedUser = await updateLastFeaturedDate( + ctx.mongo, + ctx.tenant.id, + comment.authorID!, + latestFeaturedDate + ); + + const cacheAvailable = await ctx.cache.available(ctx.tenant.id); + if (cacheAvailable) { + await ctx.cache.users.update(updatedUser); + } + } + return comment; }, markAsSeen: async ({ diff --git a/server/src/core/server/graph/resolvers/User.ts b/server/src/core/server/graph/resolvers/User.ts index dcf1a1e1fc..596c8880bc 100644 --- a/server/src/core/server/graph/resolvers/User.ts +++ b/server/src/core/server/graph/resolvers/User.ts @@ -102,4 +102,8 @@ export const User: GQLUserTypeResolver = { lastSeenNotificationDate: ({ lastSeenNotificationDate }) => { return lastSeenNotificationDate ?? new Date(0); }, + featuredCommenter: ({ lastFeaturedDate }) => { + const tenDaysAgo = new Date(new Date().setDate(new Date().getDate() - 10)); + return lastFeaturedDate && lastFeaturedDate >= tenDaysAgo; + }, }; diff --git a/server/src/core/server/graph/schema/schema.graphql b/server/src/core/server/graph/schema/schema.graphql index c3d0fc8447..1500a281e5 100644 --- a/server/src/core/server/graph/schema/schema.graphql +++ b/server/src/core/server/graph/schema/schema.graphql @@ -3299,6 +3299,18 @@ type User { roles: [ADMIN, MODERATOR] permit: [SUSPENDED, BANNED, PENDING_DELETION, WARNED] ) + + """ + lastFeaturedDate is when a user last had a comment featured. + This is used for the Top commenter badge feature. + """ + lastFeaturedDate: Time + + """ + featuredCommenter is whether a user has had a comment featured within the + last 10 days or not + """ + featuredCommenter: Boolean } """ diff --git a/server/src/core/server/models/comment/comment.ts b/server/src/core/server/models/comment/comment.ts index b953b32e6a..e1c3801a79 100644 --- a/server/src/core/server/models/comment/comment.ts +++ b/server/src/core/server/models/comment/comment.ts @@ -1701,3 +1701,30 @@ export async function retrieveFeaturedComments( return results; } + +export async function retrieveLatestFeaturedCommentForAuthor( + mongo: MongoContext, + tenantID: string, + userID: string, + excludedCommentID: string +) { + const $match: FilterQuery = { + tenantID, + authorID: userID, + commentID: { $ne: excludedCommentID }, + "tags.type": GQLTAG.FEATURED, + status: { $in: PUBLISHED_STATUSES }, + }; + const results = await mongo + .comments() + .aggregate([ + { + $match, + }, + { $sort: { createdAt: -1 } }, + { $limit: 1 }, + ]) + .toArray(); + + return results; +} diff --git a/server/src/core/server/models/user/user.ts b/server/src/core/server/models/user/user.ts index 188fb9ac60..1a70334f22 100644 --- a/server/src/core/server/models/user/user.ts +++ b/server/src/core/server/models/user/user.ts @@ -624,6 +624,12 @@ export interface User extends TenantResource { lastSeenNotificationDate?: Date | null; premoderatedBecauseOfEmailAt?: Date; + + /** + * lastFeaturedDate is when the user last had a comment featured + * used for the Top commenter feature + */ + lastFeaturedDate?: Date | null; } function hashPassword(password: string): Promise { @@ -3473,3 +3479,29 @@ export const updateUserCommentCounts = ( id: string, commentCounts: DeepPartial ) => updateRelatedCommentCounts(mongo.users(), tenantID, id, commentCounts); + +export const updateLastFeaturedDate = async ( + mongo: MongoContext, + tenantID: string, + userID: string, + featuredDate: Date | null = new Date() +) => { + const result = await mongo.users().findOneAndUpdate( + { + id: userID, + tenantID, + }, + { + $set: { + lastFeaturedDate: featuredDate, + }, + }, + { + returnOriginal: false, + } + ); + if (!result.value) { + throw new UserNotFoundError(userID); + } + return result.value; +}; From ddb23c18447189c9a7c277aa63b88e0518d90060 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 18 Dec 2023 09:19:43 -0500 Subject: [PATCH 28/66] add featured star to comment card for featured commenters --- .../client/stream/tabs/Comments/Comment/Comment.css | 10 ++++++++++ .../client/stream/tabs/Comments/Comment/Comment.tsx | 13 +++++++++++++ .../tabs/Comments/Comment/CommentContainer.tsx | 2 ++ .../tabs/Comments/Comment/IndentedComment.tsx | 1 + 4 files changed, 26 insertions(+) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/Comment.css b/client/src/core/client/stream/tabs/Comments/Comment/Comment.css index ce3501af58..d2f0a7a4f9 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/Comment.css +++ b/client/src/core/client/stream/tabs/Comments/Comment/Comment.css @@ -16,6 +16,16 @@ $commentTimestampColor: var(--palette-grey-500); margin-top: var(--mini-unit); } +.featuredStarBorder { + border-radius: 50%; + border: 4px solid var(--palette-primary-200); + background-color: var(--palette-primary-200); + color: var(--palette-primary-600); + span { + display: flex; + } +} + .timestamp { font-family: var(--font-family-primary); font-style: normal; diff --git a/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx b/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx index d7f680a1ed..5d6a8d0f9d 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx @@ -4,6 +4,7 @@ import React, { FunctionComponent } from "react"; import CLASSES from "coral-stream/classes"; import HTMLContent from "coral-stream/common/HTMLContent"; import Timestamp from "coral-stream/common/Timestamp"; +import { RatingStarIcon, SvgIcon } from "coral-ui/components/icons"; import { Flex, HorizontalGutter, MatchMedia } from "coral-ui/components/v2"; import { StarRating } from "coral-ui/components/v3"; @@ -32,6 +33,7 @@ export interface CommentProps { collapsed?: boolean; media?: React.ReactNode; enableJumpToParent?: boolean; + featuredCommenter?: boolean | null; } const Comment: FunctionComponent = (props) => { @@ -63,6 +65,17 @@ const Comment: FunctionComponent = (props) => { )} )} + {props.featuredCommenter && ( + +
+ +
+
+ )} {props.tags && ( diff --git a/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx index 17c455350b..702df7cd7e 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx @@ -536,6 +536,7 @@ export const CommentContainer: FunctionComponent = ({ highlight={highlight} toggleCollapsed={toggleCollapsed} parent={comment.parent} + featuredCommenter={comment.author?.featuredCommenter} staticUsername={ comment.author && ( @@ -855,6 +856,7 @@ const enhanced = withShowAuthPopupMutation( username avatar badges + featuredCommenter } parent { id diff --git a/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx b/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx index 27b45b3e75..7b5780d60a 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx @@ -23,6 +23,7 @@ export interface IndentedCommentProps extends Omit { badges?: React.ReactNode | null; enableJumpToParent?: boolean; username?: string | null; + featuredCommenter?: boolean | null; } const IndentedComment: FunctionComponent = ({ From b47d759269c2e301233c94b82a40e3d2cd29a0dc Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 18 Dec 2023 10:40:52 -0500 Subject: [PATCH 29/66] add star icon to featured tag and tooltip to comment star icon --- .../stream/tabs/Comments/Comment/Comment.css | 9 ++++ .../stream/tabs/Comments/Comment/Comment.tsx | 47 ++++++++++++++++--- .../Comments/Comment/CommentContainer.tsx | 11 ++++- .../tabs/Comments/Comment/FeaturedTag.css | 5 ++ .../tabs/Comments/Comment/FeaturedTag.tsx | 25 ++++++++-- .../tabs/Comments/Comment/IndentedComment.tsx | 1 + .../tabs/Comments/Stream/StreamContainer.tsx | 22 +++++++-- 7 files changed, 104 insertions(+), 16 deletions(-) create mode 100644 client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.css diff --git a/client/src/core/client/stream/tabs/Comments/Comment/Comment.css b/client/src/core/client/stream/tabs/Comments/Comment/Comment.css index d2f0a7a4f9..e2b044eea3 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/Comment.css +++ b/client/src/core/client/stream/tabs/Comments/Comment/Comment.css @@ -26,6 +26,15 @@ $commentTimestampColor: var(--palette-grey-500); } } +.topCommenterTooltipHeader { + align-items: center; + text-transform: uppercase; +} + +.topCommenterTooltipHeaderIcon { + margin-right: var(--spacing-1); +} + .timestamp { font-family: var(--font-family-primary); font-style: normal; diff --git a/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx b/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx index 5d6a8d0f9d..12c4b7e892 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx @@ -4,8 +4,18 @@ import React, { FunctionComponent } from "react"; import CLASSES from "coral-stream/classes"; import HTMLContent from "coral-stream/common/HTMLContent"; import Timestamp from "coral-stream/common/Timestamp"; -import { RatingStarIcon, SvgIcon } from "coral-ui/components/icons"; -import { Flex, HorizontalGutter, MatchMedia } from "coral-ui/components/v2"; +import { + ButtonSvgIcon, + RatingStarIcon, + SvgIcon, +} from "coral-ui/components/icons"; +import { + Button, + Flex, + HorizontalGutter, + MatchMedia, + Tooltip, +} from "coral-ui/components/v2"; import { StarRating } from "coral-ui/components/v3"; import { CommentContainer_comment as CommentData } from "coral-stream/__generated__/CommentContainer_comment.graphql"; @@ -34,6 +44,7 @@ export interface CommentProps { media?: React.ReactNode; enableJumpToParent?: boolean; featuredCommenter?: boolean | null; + topCommenterEnabled?: boolean | null; } const Comment: FunctionComponent = (props) => { @@ -65,13 +76,35 @@ const Comment: FunctionComponent = (props) => { )} )} - {props.featuredCommenter && ( + {props.topCommenterEnabled && props.featuredCommenter && (
- + + {" "} + Top commenter + + Has been featured in the last 10 days + + } + button={({ toggleVisibility, ref, visible }) => ( + + )} />
diff --git a/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx index 702df7cd7e..1ee304feb6 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx @@ -360,7 +360,12 @@ export const CommentContainer: FunctionComponent = ({ const commentTags = ( <> - {hasFeaturedTag && !isQA && } + {hasFeaturedTag && !isQA && ( + + )} {hasAnsweredTag && isQA && } ); @@ -537,6 +542,7 @@ export const CommentContainer: FunctionComponent = ({ toggleCollapsed={toggleCollapsed} parent={comment.parent} featuredCommenter={comment.author?.featuredCommenter} + topCommenterEnabled={settings.topCommenter?.enabled} staticUsername={ comment.author && ( @@ -910,6 +916,9 @@ const enhanced = withShowAuthPopupMutation( disableCommenting { enabled } + topCommenter { + enabled + } featureFlags ...CaretContainer_settings ...EditCommentFormContainer_settings diff --git a/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.css b/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.css new file mode 100644 index 0000000000..939ad4c286 --- /dev/null +++ b/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.css @@ -0,0 +1,5 @@ +.starIcon { + margin-right: var(--spacing-1); + position: relative; + top: -1px; +} diff --git a/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.tsx b/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.tsx index c7b571ec25..ca1c94bd14 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/FeaturedTag.tsx @@ -3,13 +3,19 @@ import React, { FunctionComponent } from "react"; import CLASSES from "coral-stream/classes"; import { RatingStarIcon, SvgIcon } from "coral-ui/components/icons"; -import { Tag } from "coral-ui/components/v2"; +import { Flex, Tag } from "coral-ui/components/v2"; + +import styles from "./FeaturedTag.css"; interface Props { collapsed?: boolean; + topCommenterEnabled?: boolean | null; } -const FeaturedTag: FunctionComponent = ({ collapsed }) => { +const FeaturedTag: FunctionComponent = ({ + collapsed, + topCommenterEnabled, +}) => { return collapsed ? ( ) : ( @@ -19,9 +25,18 @@ const FeaturedTag: FunctionComponent = ({ collapsed }) => { color="streamBlue" variant="pill" > - - Featured - + + {topCommenterEnabled && ( + + )} + + Featured + +
); diff --git a/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx b/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx index 7b5780d60a..71deab7b12 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/IndentedComment.tsx @@ -24,6 +24,7 @@ export interface IndentedCommentProps extends Omit { enableJumpToParent?: boolean; username?: string | null; featuredCommenter?: boolean | null; + topCommenterEnabled?: boolean | null; } const IndentedComment: FunctionComponent = ({ diff --git a/client/src/core/client/stream/tabs/Comments/Stream/StreamContainer.tsx b/client/src/core/client/stream/tabs/Comments/Stream/StreamContainer.tsx index e55f569a31..d81245dfca 100644 --- a/client/src/core/client/stream/tabs/Comments/Stream/StreamContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Stream/StreamContainer.tsx @@ -30,6 +30,7 @@ import { SetCommentsOrderByEvent, SetCommentsTabEvent, } from "coral-stream/events"; +import { RatingStarIcon, SvgIcon } from "coral-ui/components/icons"; import { AriaInfo, Counter, @@ -363,9 +364,21 @@ export const StreamContainer: FunctionComponent = (props) => { Answered ) : ( - - Featured - + <> + {props.settings.topCommenter?.enabled && ( + + )} + + Featured + + )} ({ disableCommenting { enabled } + topCommenter { + enabled + } ...AnnouncementContainer_settings ...CommunityGuidelinesContainer_settings ...ModerateStreamContainer_settings From c48b6eab1ab772fa070ca82f28a48dd767b84f62 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Mon, 18 Dec 2023 12:55:41 -0500 Subject: [PATCH 30/66] localize --- .../stream/tabs/Comments/Comment/Comment.tsx | 38 +++++++++++++------ locales/en-US/stream.ftl | 3 ++ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx b/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx index 12c4b7e892..3c8b6d5e37 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/Comment.tsx @@ -1,3 +1,4 @@ +import { Localized } from "@fluent/react/compat"; import cn from "classnames"; import React, { FunctionComponent } from "react"; @@ -84,19 +85,34 @@ const Comment: FunctionComponent = (props) => { title="" body={ <> - - {" "} - Top commenter - - Has been featured in the last 10 days + + ), + }} + > + + {" "} + Top commenter + + + + Has been featured in the last 10 days + } - button={({ toggleVisibility, ref, visible }) => ( + button={({ toggleVisibility, ref }) => ( ) : ( - -
- Reporter name not available -
+ +
Anonymous user
)} diff --git a/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx index 17c455350b..56ad7cba76 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/CommentContainer.tsx @@ -749,6 +749,7 @@ export const CommentContainer: FunctionComponent = ({ open={showReportFlow} viewer={viewer} comment={comment} + settings={settings} /> )} @@ -920,6 +921,7 @@ const enhanced = withShowAuthPopupMutation( ...UserTagsContainer_settings ...ArchivedReportFlowContainer_settings ...AuthorBadgesContainer_settings + ...ReportButton_settings } `, })(CommentContainer) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportButton.tsx b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportButton.tsx index 25938cf450..fd9d5419ce 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportButton.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportButton.tsx @@ -15,6 +15,7 @@ import { Flex, MatchMedia } from "coral-ui/components/v2"; import { Button } from "coral-ui/components/v3"; import { ReportButton_comment } from "coral-stream/__generated__/ReportButton_comment.graphql"; +import { ReportButton_settings } from "coral-stream/__generated__/ReportButton_settings.graphql"; import { ReportButton_viewer } from "coral-stream/__generated__/ReportButton_viewer.graphql"; import styles from "./ReportButton.css"; @@ -26,6 +27,7 @@ interface Props { showAuthPopup: MutationProp; comment: ReportButton_comment; viewer: ReportButton_viewer | null; + settings: ReportButton_settings; } const ReportButton: FunctionComponent = ({ @@ -33,6 +35,7 @@ const ReportButton: FunctionComponent = ({ showAuthPopup, comment, viewer, + settings, open, }) => { const isLoggedIn = !!viewer; @@ -47,6 +50,18 @@ const ReportButton: FunctionComponent = ({ void showAuthPopup({ view: "SIGN_IN" }); }, [showAuthPopup]); + const handleOnClick = useCallback(() => { + if (settings.dsa?.enabled) { + onClick(); + return; + } + if (isLoggedIn) { + onClick(); + } else { + signIn(); + } + }, [isLoggedIn, onClick, signIn, settings]); + if (isReported) { return ( = ({ fontSize="small" fontWeight="semiBold" paddingSize="extraSmall" - onClick={isLoggedIn ? onClick : signIn} + onClick={handleOnClick} data-testid="comment-report-button" > @@ -131,6 +146,13 @@ const enhanced = withShowAuthPopupMutation( } } `, + settings: graphql` + fragment ReportButton_settings on Settings { + dsa { + enabled + } + } + `, })(ReportButton) ); diff --git a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx index 6e1b252eb4..8228de2c23 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx @@ -18,7 +18,7 @@ import { ButtonSvgIcon, ShareExternalLinkIcon, } from "coral-ui/components/icons"; -import { Flex, RadioButton } from "coral-ui/components/v2"; +import { Flex, HorizontalGutter, RadioButton } from "coral-ui/components/v2"; import { Button, ValidationMessage } from "coral-ui/components/v3"; import { ReportCommentFormLocal } from "coral-stream/__generated__/ReportCommentFormLocal.graphql"; @@ -51,6 +51,7 @@ interface Props { onSubmit: OnSubmit; biosEnabled: boolean; reportLink: string; + anonymousWithDSA: boolean; } export interface FormProps { @@ -68,6 +69,7 @@ const ReportCommentForm: FunctionComponent = ({ id, reportLink, biosEnabled, + anonymousWithDSA, }) => { const [{ dsaFeaturesEnabled }] = useLocal( graphql` @@ -84,6 +86,48 @@ const ReportCommentForm: FunctionComponent = ({ emitReportEvent({ commentID: id }); }, []); + if (anonymousWithDSA) { + return ( +
+
+ +
Report This Comment
+
+ + +
You have to sign in to report a comment
+
+ +
+
+
+ ); + } + return (
void; + anonymousWithDSA: boolean; } const ReportCommentFormContainer: FunctionComponent = ({ comment, settings, onClose, + anonymousWithDSA, }) => { const [done, setDone] = useState(false); const dontAgreeMutation = useMutation(CreateCommentDisagreeMutation); @@ -109,6 +111,7 @@ const ReportCommentFormContainer: FunctionComponent = ({ onCancel={onClose} biosEnabled={settings.memberBios} reportLink={reportLink} + anonymousWithDSA={anonymousWithDSA} /> ); } diff --git a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportFlowContainer.tsx b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportFlowContainer.tsx index 171b3ac50f..a6173e5771 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportFlowContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportFlowContainer.tsx @@ -25,8 +25,14 @@ const ReportFlowContainer: FunctionComponent = ({ const onFormClose = useCallback(() => { onClose(); }, [onClose]); + + let anonymousWithDSA = false; if (!viewer) { - return null; + if (!settings.dsa?.enabled) { + return null; + } else { + anonymousWithDSA = true; + } } return ( @@ -34,6 +40,7 @@ const ReportFlowContainer: FunctionComponent = ({ comment={comment} onClose={onFormClose} settings={settings} + anonymousWithDSA={anonymousWithDSA} /> ); }; @@ -41,6 +48,9 @@ const ReportFlowContainer: FunctionComponent = ({ const enhanced = withFragmentContainer({ settings: graphql` fragment ReportFlowContainer_settings on Settings { + dsa { + enabled + } ...ReportCommentFormContainer_settings } `, diff --git a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx index 41f80a16ff..046373b9b5 100644 --- a/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx +++ b/client/src/core/client/stream/tabs/Comments/IllegalContentReportView/IllegalContentReportViewContainer.tsx @@ -92,12 +92,12 @@ const IllegalContentReportViewContainer: FunctionComponent = (props) => { const onSubmit = useCallback( async (input: FormProps, form: FormApi) => { const statuses = []; - if (viewer && comment) { + if (comment) { if (additionalComments) { for (const c of additionalComments) { try { await createDSAReport({ - userID: viewer.id, + userID: viewer?.id ?? null, commentID: c.id, lawBrokenDescription: input.lawBrokenDescription, additionalInformation: input.additionalInformation, @@ -117,7 +117,7 @@ const IllegalContentReportViewContainer: FunctionComponent = (props) => { const url = getURLWithCommentID(story.url, comment.id); try { await createDSAReport({ - userID: viewer.id, + userID: viewer?.id ?? null, commentID: comment.id, lawBrokenDescription: input.lawBrokenDescription, additionalInformation: input.additionalInformation, diff --git a/locales/en-US/admin.ftl b/locales/en-US/admin.ftl index e2c5bff43f..91401f1ba9 100644 --- a/locales/en-US/admin.ftl +++ b/locales/en-US/admin.ftl @@ -1937,6 +1937,9 @@ reports-decisionModal-detailedExplanationTextarea = reports-relatedReports-label = Related reports reports-relatedReports-reportIDLabel = Report ID +reports-anonymousUser = Anonymous user +reports-username-not-available = Username not available + # Control panel controlPanel-redis-redis = Redis diff --git a/locales/en-US/stream.ftl b/locales/en-US/stream.ftl index 3c65e33f98..199f049bed 100644 --- a/locales/en-US/stream.ftl +++ b/locales/en-US/stream.ftl @@ -749,6 +749,7 @@ comments-reportPopover-receivedMessage = comments-reportPopover-dismiss = Dismiss comments-reportForm-reportIllegalContent-button = This comment contains illegal content +comments-reportForm-signInToReport = You have to sign in to report a comment ## Archived Report Comment Popover diff --git a/server/src/core/server/graph/schema/schema.graphql b/server/src/core/server/graph/schema/schema.graphql index 3345039c46..c3388a0970 100644 --- a/server/src/core/server/graph/schema/schema.graphql +++ b/server/src/core/server/graph/schema/schema.graphql @@ -6464,7 +6464,6 @@ input SettingsInput { """ flairBadges: FlairBadgeConfigurationInput - """ dsa specifies the configuration for DSA European Union moderation and reporting features. @@ -6910,7 +6909,7 @@ input CreateDSAReportInput { """ id of the user who submitted the DSAReport """ - userID: ID! + userID: ID """ lawBrokenDescription is the text entered by the submitting user to describe diff --git a/server/src/core/server/locales/en-US/common.ftl b/server/src/core/server/locales/en-US/common.ftl index 81fedc75f1..ec4f48384b 100644 --- a/server/src/core/server/locales/en-US/common.ftl +++ b/server/src/core/server/locales/en-US/common.ftl @@ -43,6 +43,8 @@ dsaReportCSV-status-awaitingReview = Awaiting review dsaReportCSV-status-inReview = In review dsaReportCSV-status-completed = Completed dsaReportCSV-status-void = Void +dsaReportCSV-anonymousUser = Anonymous user +dsaReportCSV-usernameNotAvailable = Username not available # Notifications diff --git a/server/src/core/server/models/dsaReport/report.ts b/server/src/core/server/models/dsaReport/report.ts index 4b5b6d18a2..991eab9dd1 100644 --- a/server/src/core/server/models/dsaReport/report.ts +++ b/server/src/core/server/models/dsaReport/report.ts @@ -227,9 +227,10 @@ export async function createDSAReport( submissionIDToUse = uuid(); } - // shorter, url-friendly referenceID generated from the report id, userID, and commentID + // shorter, url-friendly referenceID generated from the report id, userID / submissionID, and commentID + const firstID = userID ?? submissionIDToUse; const referenceID = - userID.slice(0, 4) + "-" + commentID.slice(0, 4) + "-" + id.slice(0, 4); + firstID.slice(0, 4) + "-" + commentID.slice(0, 4) + "-" + id.slice(0, 4); // defaults are the properties set by the application when a new DSAReport is // created. diff --git a/server/src/core/server/services/dsaReports/download.ts b/server/src/core/server/services/dsaReports/download.ts index a4cc7dd54c..5f2efde957 100644 --- a/server/src/core/server/services/dsaReports/download.ts +++ b/server/src/core/server/services/dsaReports/download.ts @@ -141,7 +141,16 @@ export async function sendReportDownload( // Write report info cell data to CSV csv.write([ formatter.format(report.createdAt), - reporter?.username, + reporter + ? reporter.username + ? reporter.username + : translate( + bundle, + "Username not available", + "dsaReportCSV-usernameNotAvailable" + ) + : translate(bundle, "Anonymous user", "dsaReportCSV-anonymousUser"), + translate(bundle, "Anonymous user", "dsaReportCSV-anonymousUser"), translate(bundle, "Report submitted", "dsaReportCSV-reportSubmitted"), reportInfo, ]); From 84d99bb8c6023db918e1a38a0f99d35ae2d64871 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 19 Dec 2023 11:23:12 -0500 Subject: [PATCH 38/66] add tests; update to account for potential null reporter --- .../comments/stream/reportComment.spec.tsx | 22 +++++++++++++++++++ .../core/server/models/dsaReport/report.ts | 2 +- .../server/services/dsaReports/download.ts | 5 ++++- .../server/services/dsaReports/reports.ts | 4 ++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/client/src/core/client/stream/test/comments/stream/reportComment.spec.tsx b/client/src/core/client/stream/test/comments/stream/reportComment.spec.tsx index 3d845f5374..19bcea850f 100644 --- a/client/src/core/client/stream/test/comments/stream/reportComment.spec.tsx +++ b/client/src/core/client/stream/test/comments/stream/reportComment.spec.tsx @@ -212,3 +212,25 @@ it("report comment includes link to report illegal content", async () => { "https://www.test.com/story-0?commentID=comment-0&view=illegalContentReport" ); }); + +it("can report illegal content when not signed in", async () => { + const commentID = stories[0].comments.edges[0].node.id; + await createTestRenderer({ Query: { viewer: () => null } }); + const comment = await screen.findByTestId(`comment-${commentID}`); + const reportButton = screen.getByRole("button", { + name: "Report comment by Markus", + }); + userEvent.click(reportButton); + const form = within(comment).getByTestId("report-comment-form"); + const reportIllegalContentButton = within(form).getByRole("link", { + name: "This comment contains illegal content share-external-link-1", + }); + expect(reportIllegalContentButton).toHaveAttribute( + "href", + "https://www.test.com/story-0?commentID=comment-0&view=illegalContentReport" + ); + const signInToReport = within(form).getByText( + "You have to sign in to report a comment" + ); + expect(signInToReport).toBeVisible(); +}); diff --git a/server/src/core/server/models/dsaReport/report.ts b/server/src/core/server/models/dsaReport/report.ts index 991eab9dd1..d6505c10b8 100644 --- a/server/src/core/server/models/dsaReport/report.ts +++ b/server/src/core/server/models/dsaReport/report.ts @@ -72,7 +72,7 @@ export interface DSAReport extends TenantResource { /** * userID is the id of the user who reported this comment for illegal content. */ - userID: string; + userID?: string | null; /** * createdAt is the date that this DSAReport was created diff --git a/server/src/core/server/services/dsaReports/download.ts b/server/src/core/server/services/dsaReports/download.ts index 5f2efde957..94eeedf55d 100644 --- a/server/src/core/server/services/dsaReports/download.ts +++ b/server/src/core/server/services/dsaReports/download.ts @@ -59,7 +59,10 @@ export async function sendReportDownload( name: `report-${report.referenceID}-${Math.abs(now.getTime())}.csv`, }); - const reporter = await retrieveUser(mongo, tenant.id, report.userID); + let reporter = null; + if (report.userID) { + reporter = await retrieveUser(mongo, tenant.id, report.userID); + } let reportedComment = await retrieveComment( mongo.comments(), diff --git a/server/src/core/server/services/dsaReports/reports.ts b/server/src/core/server/services/dsaReports/reports.ts index caa303adba..3e49ba9733 100644 --- a/server/src/core/server/services/dsaReports/reports.ts +++ b/server/src/core/server/services/dsaReports/reports.ts @@ -31,7 +31,7 @@ import { AugmentedRedis } from "../redis"; export interface CreateDSAReportInput { commentID: string; - userID: string; + userID?: string | null; lawBrokenDescription: string; additionalInformation: string; submissionID?: string; @@ -253,7 +253,7 @@ export async function makeDSAReportDecision( } const report = await retrieveDSAReport(mongo, tenant.id, reportID); - if (report) { + if (report && report.userID) { await notifications.create(tenant.id, tenant.locale, { targetUserID: report.userID, type: GQLNOTIFICATION_TYPE.DSA_REPORT_DECISION_MADE, From 4b4f8a6b02924d9477e84ca2331ddb00317669a1 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 19 Dec 2023 14:21:06 -0500 Subject: [PATCH 39/66] remove extra line in csv download --- server/src/core/server/services/dsaReports/download.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/core/server/services/dsaReports/download.ts b/server/src/core/server/services/dsaReports/download.ts index 94eeedf55d..f41abbf4c1 100644 --- a/server/src/core/server/services/dsaReports/download.ts +++ b/server/src/core/server/services/dsaReports/download.ts @@ -153,7 +153,6 @@ export async function sendReportDownload( "dsaReportCSV-usernameNotAvailable" ) : translate(bundle, "Anonymous user", "dsaReportCSV-anonymousUser"), - translate(bundle, "Anonymous user", "dsaReportCSV-anonymousUser"), translate(bundle, "Report submitted", "dsaReportCSV-reportSubmitted"), reportInfo, ]); From 72fbdee86d39a7995a7334f93bb7e01824d472db Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 19 Dec 2023 14:33:29 -0500 Subject: [PATCH 40/66] refactor --- .../Comment/ReportFlow/ReportCommentForm.tsx | 67 +++++++------------ 1 file changed, 25 insertions(+), 42 deletions(-) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx index 8228de2c23..e3037366e9 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/ReportFlow/ReportCommentForm.tsx @@ -45,6 +45,29 @@ const RadioField: FunctionComponent< ); +const IllegalContentLink: FunctionComponent<{ reportLink: string }> = ({ + reportLink, +}) => ( + +); + interface Props { id: string; onCancel: () => void; @@ -101,27 +124,7 @@ const ReportCommentForm: FunctionComponent = ({
You have to sign in to report a comment
- +
@@ -228,27 +231,7 @@ const ReportCommentForm: FunctionComponent = ({ {dsaFeaturesEnabled && ( - + )} Date: Tue, 19 Dec 2023 15:08:53 -0500 Subject: [PATCH 41/66] update based on review feedback --- server/src/core/server/data/cache/userCache.ts | 4 +++- server/src/core/server/graph/mutators/Comments.ts | 3 +-- server/src/core/server/graph/resolvers/User.ts | 2 +- server/src/core/server/models/comment/comment.ts | 6 +----- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/server/src/core/server/data/cache/userCache.ts b/server/src/core/server/data/cache/userCache.ts index 14a1a97678..3fc321a071 100644 --- a/server/src/core/server/data/cache/userCache.ts +++ b/server/src/core/server/data/cache/userCache.ts @@ -160,7 +160,9 @@ export class UserCache implements IDataCache { return { ...parsed, createdAt: new Date(parsed.createdAt), - lastFeaturedDate: new Date(parsed.lastFeaturedDate), + lastFeaturedDate: parsed.lastFeaturedDate + ? new Date(parsed.lastFeaturedDate) + : parsed.lastFeaturedDate, status: { ...parsed.status, suspension: { diff --git a/server/src/core/server/graph/mutators/Comments.ts b/server/src/core/server/graph/mutators/Comments.ts index 7bb14893d9..d3fcb7a15b 100644 --- a/server/src/core/server/graph/mutators/Comments.ts +++ b/server/src/core/server/graph/mutators/Comments.ts @@ -351,8 +351,7 @@ export const Comments = (ctx: GraphContext) => ({ const latestFeatured = await retrieveLatestFeaturedCommentForAuthor( ctx.mongo, ctx.tenant.id, - comment.authorID!, - comment.id + comment.authorID! ); // if a latest featured comment, update latestFeaturedDate for user to when it was featured diff --git a/server/src/core/server/graph/resolvers/User.ts b/server/src/core/server/graph/resolvers/User.ts index 596c8880bc..8b58f5f1e8 100644 --- a/server/src/core/server/graph/resolvers/User.ts +++ b/server/src/core/server/graph/resolvers/User.ts @@ -103,7 +103,7 @@ export const User: GQLUserTypeResolver = { return lastSeenNotificationDate ?? new Date(0); }, featuredCommenter: ({ lastFeaturedDate }) => { - const tenDaysAgo = new Date(new Date().setDate(new Date().getDate() - 10)); + const tenDaysAgo = new Date(Date.now() - 10 * 24 * 60 * 60 * 1000); return lastFeaturedDate && lastFeaturedDate >= tenDaysAgo; }, }; diff --git a/server/src/core/server/models/comment/comment.ts b/server/src/core/server/models/comment/comment.ts index e1c3801a79..b39ce014c4 100644 --- a/server/src/core/server/models/comment/comment.ts +++ b/server/src/core/server/models/comment/comment.ts @@ -1686,7 +1686,6 @@ export async function retrieveFeaturedComments( tenantID, siteID, "tags.type": GQLTAG.FEATURED, - status: { $in: PUBLISHED_STATUSES }, }; const results = await mongo .comments() @@ -1705,15 +1704,12 @@ export async function retrieveFeaturedComments( export async function retrieveLatestFeaturedCommentForAuthor( mongo: MongoContext, tenantID: string, - userID: string, - excludedCommentID: string + userID: string ) { const $match: FilterQuery = { tenantID, authorID: userID, - commentID: { $ne: excludedCommentID }, "tags.type": GQLTAG.FEATURED, - status: { $in: PUBLISHED_STATUSES }, }; const results = await mongo .comments() From a08cb6fa46dddb1185272c00c03240a8970c4b0e Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Thu, 21 Dec 2023 13:54:20 -0500 Subject: [PATCH 42/66] try out test settings update --- .github/workflows/build-and-test.yml | 8 ++++---- .github/workflows/build-test-deploy.yml | 8 ++++---- client/package.json | 6 +++--- server/package.json | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index fb5e8be124..686f46cfa6 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -108,16 +108,16 @@ jobs: npx @coralproject/package-version-lint - name: Run Server Unit Tests - run: cd server && npm run test:server -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd server && npm run test:server -- --ci --reporters=default --reporters=jest-junit - name: Run Client Stream Unit Tests - run: cd client && npm run test:client:stream -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd client && npm run test:client:stream -- --ci --reporters=default --reporters=jest-junit - name: Run Client Admin Unit Tests - run: cd client && npm run test:client:admin -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd client && npm run test:client:admin -- --ci --reporters=default --reporters=jest-junit - name: Run Client Other Unit Tests - run: cd client && npm run test:client:other -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd client && npm run test:client:other -- --ci --reporters=default --reporters=jest-junit - name: Build env: diff --git a/.github/workflows/build-test-deploy.yml b/.github/workflows/build-test-deploy.yml index 893e15740d..d0c89e8baf 100644 --- a/.github/workflows/build-test-deploy.yml +++ b/.github/workflows/build-test-deploy.yml @@ -108,16 +108,16 @@ jobs: npx @coralproject/package-version-lint - name: Run Server Unit Tests - run: cd server && npm run test:server -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd server && npm run test:server -- --ci --reporters=default --reporters=jest-junit - name: Run Client Stream Unit Tests - run: cd client && npm run test:client:stream -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd client && npm run test:client:stream -- --ci --reporters=default --reporters=jest-junit - name: Run Client Admin Unit Tests - run: cd client && npm run test:client:admin -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd client && npm run test:client:admin -- --ci --reporters=default --reporters=jest-junit - name: Run Client Other Unit Tests - run: cd client && npm run test:client:other -- --ci --runInBand --reporters=default --reporters=jest-junit + run: cd client && npm run test:client:other -- --ci --reporters=default --reporters=jest-junit - name: Build env: diff --git a/client/package.json b/client/package.json index a14be8691f..a36efe291a 100644 --- a/client/package.json +++ b/client/package.json @@ -48,9 +48,9 @@ "migration:create": "ts-node --transpile-only ./scripts/migration/create.ts", "start:webpackDevServer": "ts-node --transpile-only ./scripts/start.ts", "test": "node --trace-warnings scripts/test.js --watch", - "test:client:stream": "node --trace-warnings scripts/testClient.stream.js", - "test:client:admin": "node --trace-warnings scripts/testClient.admin.js", - "test:client:other": "node --trace-warnings scripts/testClient.other.js", + "test:client:stream": "node --trace-warnings scripts/testClient.stream.js --maxWorkers=50%", + "test:client:admin": "node --trace-warnings scripts/testClient.admin.js --maxWorkers=50%", + "test:client:other": "node --trace-warnings scripts/testClient.other.js --maxWorkers=50%", "tscheck:client": "tsc --project ./src/core/client/tsconfig.json --noEmit", "tscheck:scripts": "tsc --project ./tsconfig.json --noEmit", "tscheck": "npm-run-all --parallel tscheck:*", diff --git a/server/package.json b/server/package.json index 8d00b2db9a..e2d8ecdd4d 100644 --- a/server/package.json +++ b/server/package.json @@ -43,7 +43,7 @@ "start:development:withJobs": "NODE_ENV=development TS_NODE_PROJECT=./src/tsconfig.json ts-node-dev --inspect --transpile-only --no-notify -r tsconfig-paths/register --ignore-watch ./docs/ ./src/index.ts", "start": "NODE_ENV=production node dist/index.js", "test": "node --trace-warnings scripts/test.js --watch", - "test:server": "node --trace-warnings scripts/testServer.js", + "test:server": "node --trace-warnings scripts/testServer.js --maxWorkers=50%", "test:cache": "node --trace-warnings scripts/test.cache.js --env=jsdom", "tscheck:scripts": "tsc --project ./tsconfig.json --noEmit", "tscheck:server": "tsc --project ./src/tsconfig.json --noEmit", From d8f8624369ed7340b64da42408d35b556b9cfb48 Mon Sep 17 00:00:00 2001 From: nick-funk Date: Fri, 22 Dec 2023 06:04:16 -0700 Subject: [PATCH 43/66] when auth token is invalid, clear it and reload the stream --- .../framework/lib/bootstrap/createManaged.tsx | 15 +++++++++++++-- .../client/framework/lib/network/createNetwork.ts | 7 ++++++- .../RefreshTokenHandler/RefreshTokenHandler.tsx | 3 ++- .../App/RefreshTokenHandler/missingAuthError.ts | 9 +++++++++ client/src/core/client/stream/stream.tsx | 14 +++++++++++++- 5 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 client/src/core/client/stream/App/RefreshTokenHandler/missingAuthError.ts diff --git a/client/src/core/client/framework/lib/bootstrap/createManaged.tsx b/client/src/core/client/framework/lib/bootstrap/createManaged.tsx index 08f5f993a3..88b7d78086 100644 --- a/client/src/core/client/framework/lib/bootstrap/createManaged.tsx +++ b/client/src/core/client/framework/lib/bootstrap/createManaged.tsx @@ -111,6 +111,8 @@ interface CreateContextArguments { * of the render window */ customScrollContainer?: HTMLElement; + + onAuthError?: () => void; } /** @@ -142,6 +144,7 @@ function createRelayEnvironment( clientID: string, localeBundles: FluentBundle[], tokenRefreshProvider: TokenRefreshProvider, + onAuthError?: () => void, clearCacheBefore?: Date ) { const source = new RecordSource(); @@ -160,6 +163,7 @@ function createRelayEnvironment( clientID, accessTokenProvider, localeBundles, + onAuthError, tokenRefreshProvider.refreshToken, clearCacheBefore ), @@ -203,6 +207,8 @@ function createManagedCoralContextProvider( clientID: string, initLocalState: InitLocalState, localesData: LocalesData, + localStorage: PromisifiedStorage, + onAuthError?: () => void, ErrorBoundary?: React.ComponentType<{ children?: React.ReactNode }>, refreshAccessTokenPromise?: RefreshAccessTokenPromise, staticConfig?: StaticConfig | null @@ -270,6 +276,7 @@ function createManagedCoralContextProvider( clientID, this.state.context.localeBundles, this.state.context.tokenRefreshProvider, + onAuthError, // Disable the cache on requests for the next 30 seconds. new Date(Date.now() + 30 * 1000) ); @@ -339,7 +346,7 @@ function createManagedCoralContextProvider( /* * resolveStorage decides which storage to use in the context */ -function resolveStorage( +export function resolveStorage( type: "localStorage" | "sessionStorage" | "indexedDB" ): PromisifiedStorage { switch (type) { @@ -397,6 +404,7 @@ export default async function createManaged({ refreshAccessTokenPromise, staticConfig = getStaticConfig(window), customScrollContainer, + onAuthError, }: CreateContextArguments): Promise< ComponentType<{ children?: React.ReactNode }> > { @@ -468,7 +476,8 @@ export default async function createManaged({ subscriptionClient, clientID, localeBundles, - tokenRefreshProvider + tokenRefreshProvider, + onAuthError ); // Assemble context. @@ -522,6 +531,8 @@ export default async function createManaged({ clientID, initLocalState, localesData, + localStorage, + onAuthError, reporter?.ErrorBoundary, refreshAccessTokenPromise, staticConfig diff --git a/client/src/core/client/framework/lib/network/createNetwork.ts b/client/src/core/client/framework/lib/network/createNetwork.ts index 290464d69a..ad5995e414 100644 --- a/client/src/core/client/framework/lib/network/createNetwork.ts +++ b/client/src/core/client/framework/lib/network/createNetwork.ts @@ -55,6 +55,7 @@ export default function createNetwork( clientID: string, accessTokenProvider: AccessTokenProvider, localeBundles: FluentBundle[], + onAuthError?: () => void, tokenRefresh?: TokenRefresh, clearCacheBefore?: Date ) { @@ -78,7 +79,11 @@ export default function createNetwork( retryDelays: (attempt: number) => Math.pow(2, attempt + 4) * 100, // or simple array [3200, 6400, 12800, 25600, 51200, 102400, 204800, 409600], statusCodes: [500, 503, 504], - beforeRetry: ({ abort, attempt, lastError }) => { + beforeRetry: async ({ abort, attempt, lastError }) => { + if (lastError?.name === "Missing Auth Error" && onAuthError) { + onAuthError(); + } + if (attempt > 2) { let message = lastError?.message; if (message && lastError?.name !== "RRNLRetryMiddlewareError") { diff --git a/client/src/core/client/stream/App/RefreshTokenHandler/RefreshTokenHandler.tsx b/client/src/core/client/stream/App/RefreshTokenHandler/RefreshTokenHandler.tsx index dea07a6249..56d2526764 100644 --- a/client/src/core/client/stream/App/RefreshTokenHandler/RefreshTokenHandler.tsx +++ b/client/src/core/client/stream/App/RefreshTokenHandler/RefreshTokenHandler.tsx @@ -19,6 +19,7 @@ import { ShowAuthPopupMutation, waitTillAuthPopupIsClosed, } from "../../common/AuthPopup"; +import { MissingAuthError } from "./missingAuthError"; const authControlQuery = graphql` query RefreshTokenHandlerAuthControlQuery { @@ -59,7 +60,7 @@ const RefreshTokenHandler: FunctionComponent = () => { ); if (!data?.settings?.auth) { - throw new Error( + throw new MissingAuthError( "Missing auth data. Make sure has been rendered." ); } diff --git a/client/src/core/client/stream/App/RefreshTokenHandler/missingAuthError.ts b/client/src/core/client/stream/App/RefreshTokenHandler/missingAuthError.ts new file mode 100644 index 0000000000..6b3358a480 --- /dev/null +++ b/client/src/core/client/stream/App/RefreshTokenHandler/missingAuthError.ts @@ -0,0 +1,9 @@ +export class MissingAuthError extends Error { + public readonly name: string; + + constructor(message: string | undefined) { + super(message); + + this.name = "Missing Auth Error"; + } +} diff --git a/client/src/core/client/stream/stream.tsx b/client/src/core/client/stream/stream.tsx index b60b942348..a4118ecabf 100644 --- a/client/src/core/client/stream/stream.tsx +++ b/client/src/core/client/stream/stream.tsx @@ -13,7 +13,10 @@ import { LanguageCode } from "coral-common/common/lib/helpers/i18n/locales"; import { parseQuery } from "coral-common/common/lib/utils"; import { RefreshAccessTokenCallback } from "coral-embed/Coral"; import { createManaged } from "coral-framework/lib/bootstrap"; -import { RefreshAccessTokenPromise } from "coral-framework/lib/bootstrap/createManaged"; +import { + RefreshAccessTokenPromise, + resolveStorage, +} from "coral-framework/lib/bootstrap/createManaged"; import { CSSAsset, EncapsulationContext, @@ -99,6 +102,13 @@ export async function attach(options: AttachOptions) { await new Promise((resolve) => options.refreshAccessToken!(resolve)); } + const onContextAuthError = async () => { + const localStorage = resolveStorage("localStorage"); + await localStorage.removeItem("v2:accessToken"); + await remove(options.element); + await attach(options); + }; + const ManagedCoralContextProvider = await createManaged({ rootURL: options.rootURL, lang: options.locale, @@ -111,6 +121,7 @@ export async function attach(options: AttachOptions) { refreshAccessTokenPromise, staticConfig: options.staticConfig, customScrollContainer: options.customScrollContainer, + onAuthError: onContextAuthError, }); // Amount of initial css files to be loaded. @@ -134,6 +145,7 @@ export async function attach(options: AttachOptions) { // flash of unstyled content. const [isCSSLoaded, setIsCSSLoaded] = useState(false); const [loadError, setLoadError] = useState(false); + const handleLoadError = useCallback((href: string) => { globalErrorReporter.report( // encode href, otherwise sentry will not send it. From e8715ddf513f176907c97d15e77620f6559bfbc2 Mon Sep 17 00:00:00 2001 From: Kathryn Beaty Date: Tue, 2 Jan 2024 08:54:58 -0500 Subject: [PATCH 44/66] including missing username fallbacks in localizations --- .../client/stream/tabs/Comments/Comment/CommentToggle.tsx | 2 +- .../client/stream/tabs/Comments/Comment/IndentedComment.tsx | 2 +- .../tabs/Comments/Comment/PermalinkButton/PermalinkButton.tsx | 2 +- .../tabs/Comments/Comment/ReactionButton/ReactionButton.tsx | 4 ++-- .../core/client/stream/tabs/Comments/Comment/ReplyButton.tsx | 2 +- .../stream/tabs/Comments/Comment/ReportFlow/ReportButton.tsx | 2 +- .../Comment/UserBanPopover/UserBanPopoverContainer.tsx | 2 +- .../Comment/UserIgnorePopover/UserIgnorePopoverContainer.tsx | 2 +- .../Comment/Username/UsernameWithPopoverContainer.tsx | 2 +- .../Stream/AnsweredCommentsTab/AnsweredCommentContainer.tsx | 2 +- .../Stream/FeaturedComments/FeaturedCommentContainer.tsx | 4 ++-- 11 files changed, 13 insertions(+), 13 deletions(-) diff --git a/client/src/core/client/stream/tabs/Comments/Comment/CommentToggle.tsx b/client/src/core/client/stream/tabs/Comments/Comment/CommentToggle.tsx index 1561332a8b..df62f1ce57 100644 --- a/client/src/core/client/stream/tabs/Comments/Comment/CommentToggle.tsx +++ b/client/src/core/client/stream/tabs/Comments/Comment/CommentToggle.tsx @@ -34,7 +34,7 @@ const CommentToggle: FunctionComponent = (props) => { = ({ = ({