From 510e686b7b72eaec00d4bad8e837d6834f9b7dc0 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Wed, 24 May 2023 11:05:09 +0100 Subject: [PATCH] Upgrade ESLint plugins (#13153) GitOrigin-RevId: 9cd0b4429a9c2b3df9c18957aef21ef021e5fdfd --- package-lock.json | 1804 ++++++++++------- services/web/.eslintrc | 5 +- .../file-tree/components/file-tree-doc.js | 2 + .../file-tree/components/file-tree-folder.js | 2 + .../file-view/components/file-view-image.js | 1 - .../file-tree/history-file-tree-folder.tsx | 2 + .../outline/components/outline-item.js | 2 + services/web/package.json | 14 +- .../pdf-preview/pdf-preview.spec.tsx | 32 +- .../shared/start-free-trial-button.spec.tsx | 25 +- .../codemirror-editor-autocomplete.spec.tsx | 73 +- .../codemirror-editor-close-brackets.spec.tsx | 145 +- .../codemirror-editor-cursor.spec.tsx | 33 +- .../codemirror-editor-fundamentals.spec.tsx | 44 +- .../codemirror-editor-shortcuts.spec.tsx | 126 +- .../codemirror-editor-spellchecker.spec.tsx | 8 +- .../codemirror-editor-visual-list.spec.tsx | 80 +- .../codemirror-editor-visual-toolbar.spec.tsx | 8 +- .../codemirror-editor-visual.spec.tsx | 201 +- .../components/codemirror-editor.spec.tsx | 95 +- .../components/new/checkout.spec.tsx | 15 +- ....test.js => use-abort-controller.test.tsx} | 8 +- .../frontend/shared/hooks/use-resize.spec.tsx | 14 +- 23 files changed, 1613 insertions(+), 1126 deletions(-) rename services/web/test/frontend/shared/hooks/{use-abort-controller.test.js => use-abort-controller.test.tsx} (93%) diff --git a/package-lock.json b/package-lock.json index 1228b99c98..6f899e6366 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3090,11 +3090,11 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", + "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" @@ -3491,6 +3491,42 @@ "node": ">=10.0.0" } }, + "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/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", @@ -8655,15 +8691,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, "node_modules/@testing-library/dom/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9426,9 +9453,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "node_modules/@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" }, "node_modules/@types/serve-index": { "version": "1.9.1", @@ -9549,19 +9576,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", - "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", + "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.12.1", - "@typescript-eslint/type-utils": "5.12.1", - "@typescript-eslint/utils": "5.12.1", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/type-utils": "5.59.6", + "@typescript-eslint/utils": "5.59.6", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -9581,6 +9609,23 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/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/@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", @@ -9593,10 +9638,16 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@typescript-eslint/eslint-plugin/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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9615,15 +9666,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", - "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz", + "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.12.1", - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/typescript-estree": "5.12.1", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9641,14 +9692,37 @@ } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", - "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "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, "dependencies": { - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/visitor-keys": "5.12.1" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", + "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9659,13 +9733,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", - "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", + "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.12.1", - "debug": "^4.3.2", + "@typescript-eslint/typescript-estree": "5.59.6", + "@typescript-eslint/utils": "5.59.6", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { @@ -9684,10 +9759,33 @@ } } }, + "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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@typescript-eslint/types": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", - "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", + "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9698,17 +9796,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", - "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", + "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/visitor-keys": "5.12.1", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -9733,6 +9831,23 @@ "node": ">=8" } }, + "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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -9765,10 +9880,16 @@ "node": ">=10" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/@typescript-eslint/typescript-estree/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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9796,17 +9917,19 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", - "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", + "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.12.1", - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/typescript-estree": "5.12.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9819,32 +9942,47 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "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": { - "eslint-visitor-keys": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "node": ">=10" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", - "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.12.1", - "eslint-visitor-keys": "^3.0.0" + "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.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", + "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.59.6", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -9855,12 +9993,15 @@ } }, "node_modules/@typescript-eslint/visitor-keys/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==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@uppy/companion-client": { @@ -10906,16 +11047,12 @@ } }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "deep-equal": "^2.0.5" } }, "node_modules/array-back": { @@ -10931,7 +11068,6 @@ "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==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -10952,15 +11088,15 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" }, "engines": { @@ -11007,14 +11143,15 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11023,6 +11160,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -11247,9 +11397,9 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "node_modules/axe-core": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", - "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.1.tgz", + "integrity": "sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==", "dev": true, "engines": { "node": ">=4" @@ -11264,10 +11414,13 @@ } }, "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } }, "node_modules/babel-loader": { "version": "9.1.2", @@ -16442,30 +16595,44 @@ } }, "node_modules/es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "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.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -16499,6 +16666,28 @@ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, "node_modules/es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -16715,6 +16904,30 @@ "eslint-plugin-promise": "^6.0.0" } }, + "node_modules/eslint-config-standard-jsx": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", + "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -16848,9 +17061,9 @@ } }, "node_modules/eslint-plugin-cypress": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz", - "integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", + "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", "dev": true, "dependencies": { "globals": "^11.12.0" @@ -16933,6 +17146,42 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "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==", + "dev": true, + "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", + "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", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "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-mocha": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", @@ -17084,6 +17333,76 @@ "eslint": "^7.0.0 || ^8.0.0" } }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "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.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "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, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "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": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -19076,6 +19395,23 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "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", @@ -19086,7 +19422,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19455,6 +19790,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": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", @@ -20037,6 +20386,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", @@ -20329,9 +20684,9 @@ } }, "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "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" } @@ -20355,6 +20710,17 @@ "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", @@ -21302,7 +21668,6 @@ "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==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -21362,9 +21727,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "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" }, @@ -23081,13 +23446,13 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "dependencies": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" }, "engines": { "node": ">=4.0" @@ -25869,6 +26234,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "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", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -26531,9 +26902,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -26589,28 +26960,28 @@ } }, "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -26636,13 +27007,13 @@ } }, "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -26661,14 +27032,14 @@ } }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -29437,9 +29808,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/regenerator-transform": { "version": "0.15.1", @@ -29458,7 +29829,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -30024,6 +30394,19 @@ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", "optional": true }, + "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-regex2": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", @@ -31669,43 +32052,61 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", + "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -33225,6 +33626,19 @@ "node": ">= 0.6" } }, + "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/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -33325,13 +33739,13 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -37141,8 +37555,8 @@ "@types/recurly__recurly-js": "^4.22.0", "@types/sinon-chai": "^3.2.8", "@types/uuid": "^8.3.4", - "@typescript-eslint/eslint-plugin": "^5.12.1", - "@typescript-eslint/parser": "^5.3.1", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", "acorn": "^7.1.1", "acorn-walk": "^7.1.1", "angular-mocks": "~1.8.0", @@ -37162,11 +37576,11 @@ "cypress-plugin-tab": "^1.0.5", "es6-promise": "^4.2.8", "escodegen": "^2.0.0", - "eslint-config-standard-jsx": "^11.0.0-0", - "eslint-plugin-cypress": "^2.12.1", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-cypress": "^2.13.3", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", "expose-loader": "^4.1.0", "fetch-mock": "^9.10.2", "glob": "^7.1.6", @@ -37435,15 +37849,6 @@ "node": ">=12" } }, - "services/web/node_modules/@testing-library/cypress/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, "services/web/node_modules/@testing-library/dom": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.0.tgz", @@ -37463,15 +37868,6 @@ "node": ">=14" } }, - "services/web/node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, "services/web/node_modules/@types/aria-query": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", @@ -37721,138 +38117,6 @@ "stream-shift": "^1.0.0" } }, - "services/web/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 - }, - "services/web/node_modules/eslint-config-standard-jsx": { - "version": "11.0.0-0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0-0.tgz", - "integrity": "sha512-KF2HkJoiMH7j9QCLC2OFgE+xfWRXnVpTZzombqdRtOkp6DBGLfGvvonl7AzEbWIxgjOiHkuw+lmYPz5cN2+kJA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" - } - }, - "services/web/node_modules/eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "services/web/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "services/web/node_modules/eslint-plugin-react": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", - "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "services/web/node_modules/eslint-plugin-react-hooks": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", - "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "services/web/node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "services/web/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, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "services/web/node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -38239,19 +38503,6 @@ "node": ">= 8" } }, - "services/web/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "services/web/node_modules/retry-request": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", @@ -40434,11 +40685,11 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "@babel/runtime": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", - "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", + "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } }, "@babel/runtime-corejs2": { @@ -40777,6 +41028,29 @@ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@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" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "dev": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", + "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "dev": true + }, "@eslint/eslintrc": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", @@ -45565,8 +45839,8 @@ "@types/recurly__recurly-js": "^4.22.0", "@types/sinon-chai": "^3.2.8", "@types/uuid": "^8.3.4", - "@typescript-eslint/eslint-plugin": "^5.12.1", - "@typescript-eslint/parser": "^5.3.1", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", "@uppy/core": "^1.15.0", "@uppy/dashboard": "^1.11.0", "@uppy/react": "^1.11.0", @@ -45632,11 +45906,11 @@ "email-addresses": "^5.0.0", "es6-promise": "^4.2.8", "escodegen": "^2.0.0", - "eslint-config-standard-jsx": "^11.0.0-0", - "eslint-plugin-cypress": "^2.12.1", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-cypress": "^2.13.3", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^4.6.0", "events": "^3.3.0", "expose-loader": "^4.1.0", "express": "^4.18.2", @@ -45943,15 +46217,6 @@ "lz-string": "^1.4.4", "pretty-format": "^27.0.2" } - }, - "aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } } } }, @@ -45969,17 +46234,6 @@ "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" - }, - "dependencies": { - "aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - } } }, "@types/aria-query": { @@ -46167,99 +46421,6 @@ "stream-shift": "^1.0.0" } }, - "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 - }, - "eslint-config-standard-jsx": { - "version": "11.0.0-0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0-0.tgz", - "integrity": "sha512-KF2HkJoiMH7j9QCLC2OFgE+xfWRXnVpTZzombqdRtOkp6DBGLfGvvonl7AzEbWIxgjOiHkuw+lmYPz5cN2+kJA==", - "dev": true, - "requires": {} - }, - "eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "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" - } - } - } - }, - "eslint-plugin-react": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", - "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", - "dev": true, - "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.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" - } - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", - "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", - "dev": true, - "requires": {} - }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -46560,16 +46721,6 @@ "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "dev": true }, - "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "retry-request": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz", @@ -47276,12 +47427,6 @@ "color-convert": "^2.0.1" } }, - "aria-query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", - "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", - "dev": true - }, "chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -47995,9 +48140,9 @@ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "@types/semver": { - "version": "7.3.9", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.9.tgz", - "integrity": "sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==" + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" }, "@types/serve-index": { "version": "1.9.1", @@ -48118,22 +48263,32 @@ } }, "@typescript-eslint/eslint-plugin": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.12.1.tgz", - "integrity": "sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", + "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.12.1", - "@typescript-eslint/type-utils": "5.12.1", - "@typescript-eslint/utils": "5.12.1", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/type-utils": "5.59.6", + "@typescript-eslint/utils": "5.59.6", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "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" + } + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -48143,10 +48298,16 @@ "yallist": "^4.0.0" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -48161,56 +48322,91 @@ } }, "@typescript-eslint/parser": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.12.1.tgz", - "integrity": "sha512-6LuVUbe7oSdHxUWoX/m40Ni8gsZMKCi31rlawBHt7VtW15iHzjbpj2WLiToG2758KjtCCiLRKZqfrOdl3cNKuw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz", + "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.12.1", - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/typescript-estree": "5.12.1", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "@typescript-eslint/scope-manager": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.12.1.tgz", - "integrity": "sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", + "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/visitor-keys": "5.12.1" + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6" } }, "@typescript-eslint/type-utils": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.12.1.tgz", - "integrity": "sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", + "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.12.1", - "debug": "^4.3.2", + "@typescript-eslint/typescript-estree": "5.59.6", + "@typescript-eslint/utils": "5.59.6", + "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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "@typescript-eslint/types": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.12.1.tgz", - "integrity": "sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", + "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.12.1.tgz", - "integrity": "sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", + "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/visitor-keys": "5.12.1", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/visitor-keys": "5.59.6", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { @@ -48220,6 +48416,15 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "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" + } + }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -48243,10 +48448,16 @@ "yallist": "^4.0.0" } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -48267,44 +48478,61 @@ } }, "@typescript-eslint/utils": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.12.1.tgz", - "integrity": "sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", + "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.12.1", - "@typescript-eslint/types": "5.12.1", - "@typescript-eslint/typescript-estree": "5.12.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.59.6", + "@typescript-eslint/types": "5.59.6", + "@typescript-eslint/typescript-estree": "5.59.6", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" }, "dependencies": { - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "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": { - "eslint-visitor-keys": "^2.0.0" + "yallist": "^4.0.0" } + }, + "semver": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", + "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "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.12.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.12.1.tgz", - "integrity": "sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==", + "version": "5.59.6", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", + "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.12.1", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.59.6", + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { "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": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", + "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", "dev": true } } @@ -49145,13 +49373,12 @@ "integrity": "sha1-oyeuqA5BByo9hfnCdNtlEeuV5Jw=" }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" } }, "array-back": { @@ -49164,7 +49391,6 @@ "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==", - "dev": true, "requires": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -49182,15 +49408,15 @@ "dev": true }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" } }, @@ -49219,14 +49445,28 @@ } }, "array.prototype.flatmap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz", - "integrity": "sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" } }, "arrify": { @@ -49405,9 +49645,9 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axe-core": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz", - "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.1.tgz", + "integrity": "sha512-sCXXUhA+cljomZ3ZAwb8i1p3oOlkABzPy08ZDAoGcYuvtBPlQ1Ytde129ArXyHWDhfeewq7rlx9F+cUx2SSlkg==", "dev": true }, "axios": { @@ -49419,10 +49659,13 @@ } }, "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } }, "babel-loader": { "version": "9.1.2", @@ -53339,30 +53582,44 @@ } }, "es-abstract": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", - "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "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.1", + "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" } }, "es-get-iterator": { @@ -53387,6 +53644,25 @@ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "es-to-primitive": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", @@ -53637,6 +53913,13 @@ "dev": true, "requires": {} }, + "eslint-config-standard-jsx": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", + "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", + "dev": true, + "requires": {} + }, "eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -53743,9 +54026,9 @@ "requires": {} }, "eslint-plugin-cypress": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.12.1.tgz", - "integrity": "sha512-c2W/uPADl5kospNDihgiLc7n87t5XhUbFDoTl6CfVkmG+kDAb5Ux10V9PoLPu9N+r7znpc+iQlcmAqT1A/89HA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-2.13.3.tgz", + "integrity": "sha512-nAPjZE5WopCsgJwl3vHm5iafpV+ZRO76Z9hMyRygWhmg5ODXDPd+9MaPl7kdJ2azj+sO87H3P1PRnggIrz848g==", "dev": true, "requires": { "globals": "^11.12.0" @@ -53809,6 +54092,38 @@ } } }, + "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==", + "dev": true, + "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", + "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", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "dependencies": { + "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 + } + } + }, "eslint-plugin-mocha": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz", @@ -53901,6 +54216,58 @@ "dev": true, "requires": {} }, + "eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "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.0", + "string.prototype.matchall": "^4.0.8" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "eslint-plugin-react-hooks": { + "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": {} + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -55363,6 +55730,17 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "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", @@ -55372,8 +55750,7 @@ "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==", - "dev": true + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "fuse.js": { "version": "3.6.1", @@ -55666,6 +56043,14 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, + "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": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", @@ -56142,6 +56527,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "graphlib": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", @@ -56398,9 +56789,9 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "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": "4.0.0", @@ -56415,6 +56806,11 @@ "get-intrinsic": "^1.1.1" } }, + "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.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -57137,7 +57533,6 @@ "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==", - "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -57182,9 +57577,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + "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", @@ -58462,13 +58857,13 @@ } }, "jsx-ast-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz", - "integrity": "sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "requires": { - "array-includes": "^3.1.3", - "object.assign": "^4.1.2" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" } }, "just-extend": { @@ -60758,6 +61153,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "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", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -61271,9 +61672,9 @@ "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, "object-is": { "version": "1.1.5", @@ -61308,25 +61709,25 @@ } }, "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.getownpropertydescriptors": { @@ -61340,13 +61741,13 @@ } }, "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.pick": { @@ -61359,14 +61760,14 @@ } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "obuf": { @@ -63679,9 +64080,9 @@ } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "regenerator-transform": { "version": "0.15.1", @@ -63700,7 +64101,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -64139,6 +64539,16 @@ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", "optional": true }, + "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-regex2": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-2.0.0.tgz", @@ -65434,37 +65844,49 @@ } }, "string.prototype.matchall": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", - "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.3.1", + "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" } }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "strip-ansi": { @@ -66699,6 +67121,16 @@ "mime-types": "~2.1.24" } }, + "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" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -66767,13 +67199,13 @@ } }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, diff --git a/services/web/.eslintrc b/services/web/.eslintrc index 2455feba86..499868f53c 100644 --- a/services/web/.eslintrc +++ b/services/web/.eslintrc @@ -180,12 +180,15 @@ // "ignoreRefs": true // },], "react/no-did-update-set-state": "error", - "react/no-unknown-property": "error", "react/no-unused-prop-types": "error", "react/prop-types": "error", // "react/react-in-jsx-scope": "error", // END: inline standard-react rules + "react/no-unknown-property": ["error", { + "ignore": ["dnd-container", "dropdown-toggle"] + }], + "react/jsx-no-target-blank": ["error", { "allowReferrer": true }], diff --git a/services/web/frontend/js/features/file-tree/components/file-tree-doc.js b/services/web/frontend/js/features/file-tree/components/file-tree-doc.js index e55e6e9d72..1c7bd54d53 100644 --- a/services/web/frontend/js/features/file-tree/components/file-tree-doc.js +++ b/services/web/frontend/js/features/file-tree/components/file-tree-doc.js @@ -16,7 +16,9 @@ function FileTreeDoc({ name, id, isFile, isLinkedFile }) { return (
  • ) diff --git a/services/web/frontend/js/features/history/components/file-tree/history-file-tree-folder.tsx b/services/web/frontend/js/features/history/components/file-tree/history-file-tree-folder.tsx index 23d354870c..1ef4866996 100644 --- a/services/web/frontend/js/features/history/components/file-tree/history-file-tree-folder.tsx +++ b/services/web/frontend/js/features/history/components/file-tree/history-file-tree-folder.tsx @@ -46,6 +46,8 @@ function HistoryFileTreeFolder({ return ( <>
  • ', function () { ) // start compiling - cy.findByRole('button', { name: 'Recompile' }) - .click() - .then(() => { - cy.findByRole('button', { name: 'Compiling…' }) + cy.findByRole('button', { name: 'Recompile' }).click() - // trigger a recompile - cy.window().then(win => { - win.dispatchEvent(new CustomEvent('pdf:recompile')) - }) - - // finish the original compile - resolveDeferredCompile() - - // wait for the original compile to finish - cy.waitForCompile({ pdf: true }) - - // NOTE: difficult to assert that a second request won't be sent, at some point - expect(counter).to.equal(1) + cy.findByRole('button', { name: 'Compiling…' }).then(() => { + // trigger a recompile + cy.window().then(win => { + win.dispatchEvent(new CustomEvent('pdf:recompile')) }) + + // finish the original compile + resolveDeferredCompile() + + // wait for the original compile to finish + cy.waitForCompile({ pdf: true }) + + // NOTE: difficult to assert that a second request won't be sent, at some point + expect(counter).to.equal(1) + }) } ) }) diff --git a/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx b/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx index 414c20b070..9ace14b34e 100644 --- a/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx +++ b/services/web/test/frontend/components/shared/start-free-trial-button.spec.tsx @@ -73,18 +73,17 @@ describe('start free trial button', function () { cy.window().then(win => { cy.stub(win, 'open').as('Open') }) - cy.get('button.btn') - .contains('Start Free Trial!') - .click() - .then(() => { - cy.wait('@event-paywall-click') - .its('request.body.paywall-type') - .should('eq', 'cypress-test') - cy.get('@Open').should( - 'have.been.calledOnceWithExactly', - '/user/subscription/choose-your-plan?itm_campaign=cypress-test' - ) - expect(onClickStub).to.be.called - }) + cy.get('button.btn').contains('Start Free Trial!').click() + + cy.wrap(null).then(() => { + cy.wait('@event-paywall-click') + .its('request.body.paywall-type') + .should('eq', 'cypress-test') + cy.get('@Open').should( + 'have.been.calledOnceWithExactly', + '/user/subscription/choose-your-plan?itm_campaign=cypress-test' + ) + expect(onClickStub).to.be.called + }) }) }) diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx index 87b16b64ff..e164dc7218 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-autocomplete.spec.tsx @@ -111,7 +111,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.findAllByRole('listbox').should('have.length', 0) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // single backslash cy.get('@line').type('\\') @@ -161,7 +162,7 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('@line') // .type('{tab}') // Tab not supported in Cypress .type('{rightArrow}{rightArrow}') - .type('fr') + cy.get('@line').type('fr') // select option from autocomplete // disabled as selector not working (Cypress bug?) @@ -282,7 +283,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.contains('\\section{Results}') // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // ---- Basic autocomplete of environments cy.get('@line').type('\\begin{itemi') @@ -318,13 +320,14 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('.cm-line').eq(26).contains('\\end{align}') // ---- Start typing a begin command - cy.get('.cm-line').eq(28).click().as('line') + cy.get('.cm-line').eq(28).as('line') + cy.get('@line').click() cy.get('@line').type('\\begin{{}ab') cy.findAllByRole('option').as('options') cy.get('@options').should('have.length', 5) // ---- The environment being typed should appear in the list - cy.get('@options').contains('\\begin{ab}').should('exist') + cy.get('@options').contains('\\begin{ab}') // ---- A new environment used elsewhere in the doc should appear next cy.get('@options') @@ -399,7 +402,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.findAllByRole('listbox').should('have.length', 0) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // a usepackage command cy.get('@line').type('\\usepackage') @@ -473,7 +477,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.findAllByRole('listbox').should('have.length', 0) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // a cite command with no opening brace cy.get('@line').type('\\cite') @@ -544,7 +549,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.findAllByRole('listbox').should('have.length', 0) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // single backslash cy.get('@line').type('\\') @@ -574,7 +580,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() cy.get('@line').type('\\frac') @@ -589,9 +596,11 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('@line').should('contain.text', '\\frac{\\textbf{}}{}') // go to new line - cy.get('@line').click().type('{enter}') + cy.get('@line').click() + cy.get('@line').type('{enter}') - cy.get('.cm-line').eq(17).click().as('line') + cy.get('.cm-line').eq(17).as('line') + cy.get('@line').click() cy.get('@line').type('\\frac') // select completion @@ -617,7 +626,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // type some commands // note: '{{}' is a single opening brace @@ -651,7 +661,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // type some commands // note: '{{}' is a single opening brace @@ -687,7 +698,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('.cm-editor').as('editor') // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // a new command, then the start of the command on a new blank line cy.get('@line').type('\\foo[bar]{{}baz}{{}zap}') @@ -696,7 +708,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('@editor').trigger('keydown', { key: 'Enter' }) // put the cursor on the new line to type in - cy.get('.cm-line').eq(17).click().as('line') + cy.get('.cm-line').eq(17).as('line') + cy.get('@line').click() // the start of the command cy.get('@line').type('\\foo') @@ -724,7 +737,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('.cm-editor').as('editor') // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // a new command, then the start of the command on a new blank line cy.get('@line').type('$\\somemathcommand$') @@ -733,7 +747,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('@editor').trigger('keydown', { key: 'Enter' }) // put the cursor on the new line to type in - cy.get('.cm-line').eq(17).click().as('line') + cy.get('.cm-line').eq(17).as('line') + cy.get('@line').click() // the start of the command cy.get('@line').type('hello \\somema') @@ -758,7 +773,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('.cm-editor').as('editor') // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // a new command, then the start of the command on a new blank line cy.get('@line').type('\\newcommand{{}\\foo}[1]{{}#1}') @@ -767,7 +783,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('@editor').trigger('keydown', { key: 'Enter' }) // put the cursor on the new line to type in - cy.get('.cm-line').eq(17).click().as('line') + cy.get('.cm-line').eq(17).as('line') + cy.get('@line').click() // the start of the command cy.get('@line').type('\\fo') @@ -829,7 +846,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { cy.get('.cm-editor').as('editor') // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // start typing a command cy.get('@line').type('\\label') @@ -855,7 +873,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // type the name of a symbol cy.get('@line').type(' \\alpha') @@ -893,7 +912,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // Put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // Type \begin{itemize}. // Note: '{{}' is a single opening brace @@ -916,7 +936,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // Put the cursor on a blank line above target line - cy.get('.cm-line').eq(20).click().as('line') + cy.get('.cm-line').eq(20).as('line') + cy.get('@line').click() // Move to the position between the braces then type 'itemize' cy.get('@line').type(`{downArrow}${'{rightArrow}'.repeat(7)}itemize`, { @@ -938,7 +959,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // Put the cursor on a blank line above target line - cy.get('.cm-line').eq(20).click().as('line') + cy.get('.cm-line').eq(20).as('line') + cy.get('@line').click() // Move to the position after the opening brace then type 'itemize}' cy.get('@line').type(`{downArrow}${'{rightArrow}'.repeat(7)}itemize}`, { @@ -999,7 +1021,8 @@ describe('autocomplete', { scrollBehavior: false }, function () { ) // Put the cursor on a blank line and type - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() cy.get('@line').type('\\include{e', { delay: 100 }) cy.findAllByRole('option').contains('example.tex').click() activeEditorLine().contains('\\include{example') diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx index ca7ac2682a..6e25cbcfbe 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-close-brackets.spec.tsx @@ -23,7 +23,8 @@ describe('close brackets', { scrollBehavior: false }, function () { ) - cy.get('.cm-line').eq(20).click().as('active-line') + cy.get('.cm-line').eq(20).as('active-line') + cy.get('@active-line').click() }) afterEach(function () { @@ -32,161 +33,171 @@ describe('close brackets', { scrollBehavior: false }, function () { describe('unprefixed characters', function () { it('auto-closes a curly bracket', function () { - cy.get('@active-line') - .type('{{}') - .should('have.text', '{}') - .type('{backspace}') - .should('have.text', '') + cy.get('@active-line').type('{{}') + cy.get('@active-line').should('have.text', '{}') + cy.get('@active-line').type('{backspace}') + cy.get('@active-line').should('have.text', '') }) it('auto-closes a square bracket', function () { - cy.get('@active-line') - .type('[') - .should('have.text', '[]') - .type('{backspace}') - .should('have.text', '') + cy.get('@active-line').type('[') + cy.get('@active-line').should('have.text', '[]') + cy.get('@active-line').type('{backspace}') + cy.get('@active-line').should('have.text', '') }) it('does not auto-close a round bracket', function () { - cy.get('@active-line').type('(').should('have.text', '(') + cy.get('@active-line').type('(') + cy.get('@active-line').should('have.text', '(') }) it('auto-closes a dollar sign', function () { - cy.get('@active-line') - .type('$') - .should('have.text', '$$') - .type('{backspace}') - .should('have.text', '') + cy.get('@active-line').type('$') + cy.get('@active-line').should('have.text', '$$') + cy.get('@active-line').type('{backspace}') + cy.get('@active-line').should('have.text', '') }) it('auto-closes another dollar sign', function () { - cy.get('@active-line') - .type('$$') - .should('have.text', '$$$$') - .type('{backspace}{backspace}') - .should('have.text', '') + cy.get('@active-line').type('$$') + cy.get('@active-line').should('have.text', '$$$$') + cy.get('@active-line').type('{backspace}{backspace}') + cy.get('@active-line').should('have.text', '') }) it('avoids creating an odd number of adjacent dollar signs', function () { - cy.get('@active-line') - .type('$2') - .should('have.text', '$2$') - .type('{leftArrow}$') - .should('have.text', '$$2$') + cy.get('@active-line').type('$2') + cy.get('@active-line').should('have.text', '$2$') + cy.get('@active-line').type('{leftArrow}$') + cy.get('@active-line').should('have.text', '$$2$') }) }) describe('prefixed characters', function () { it('auto-closes a backslash-prefixed round bracket', function () { - cy.get('@active-line').type('\\(').should('have.text', '\\(\\)') + cy.get('@active-line').type('\\(') + cy.get('@active-line').should('have.text', '\\(\\)') }) it('auto-closes a backslash-prefixed square bracket', function () { - cy.get('@active-line').type('\\[').should('have.text', '\\[\\]') + cy.get('@active-line').type('\\[') + cy.get('@active-line').should('have.text', '\\[\\]') }) it('does not auto-close a backslash-prefixed curly bracket', function () { - cy.get('@active-line').type('\\{{}').should('have.text', '\\{') + cy.get('@active-line').type('\\{{}') + cy.get('@active-line').should('have.text', '\\{') }) it('does not auto-close a backslash-prefixed dollar sign', function () { - cy.get('@active-line').type('\\$').should('have.text', '\\$') + cy.get('@active-line').type('\\$') + cy.get('@active-line').should('have.text', '\\$') }) }) describe('double-prefixed characters', function () { it('auto-closes a double-backslash-prefixed square bracket with a square bracket', function () { - cy.get('@active-line').type('\\\\[').should('have.text', '\\\\[]') + cy.get('@active-line').type('\\\\[') + cy.get('@active-line').should('have.text', '\\\\[]') }) it('auto-closes a double-backslash-prefixed curly bracket with a curly bracket', function () { - cy.get('@active-line').type('\\\\{').should('have.text', '\\\\{}') + cy.get('@active-line').type('\\\\{') + cy.get('@active-line').should('have.text', '\\\\{}') }) it('auto-closes a double-backslash-prefixed dollar sign with a dollar sign', function () { - cy.get('@active-line').type('\\\\$').should('have.text', '\\\\$$') + cy.get('@active-line').type('\\\\$') + cy.get('@active-line').should('have.text', '\\\\$$') }) it('does not auto-close a double-backslash-prefixed round bracket', function () { - cy.get('@active-line').type('\\\\(').should('have.text', '\\\\(') + cy.get('@active-line').type('\\\\(') + cy.get('@active-line').should('have.text', '\\\\(') }) }) describe('adjacent characters', function () { it('does auto-close a dollar sign before punctuation', function () { - cy.get('@active-line') - .type(':2') - .type('{leftArrow}{leftArrow}$') - .should('have.text', '$$:2') + cy.get('@active-line').type(':2') + cy.get('@active-line').type('{leftArrow}{leftArrow}$') + cy.get('@active-line').should('have.text', '$$:2') }) it('does auto-close a dollar sign after punctuation', function () { - cy.get('@active-line').type('2:').type('$').should('have.text', '2:$$') + cy.get('@active-line').type('2:') + cy.get('@active-line').type('$') + cy.get('@active-line').should('have.text', '2:$$') }) it('does not auto-close a dollar sign before text', function () { - cy.get('@active-line') - .type('2') - .type('{leftArrow}$') - .should('have.text', '$2') + cy.get('@active-line').type('2') + cy.get('@active-line').type('{leftArrow}$') + cy.get('@active-line').should('have.text', '$2') }) it('does not auto-close a dollar sign after text', function () { - cy.get('@active-line').type('2').type('$').should('have.text', '2$') + cy.get('@active-line').type('2') + cy.get('@active-line').type('$') + cy.get('@active-line').should('have.text', '2$') }) it('does auto-close a curly bracket before punctuation', function () { - cy.get('@active-line') - .type(':2') - .type('{leftArrow}{leftArrow}{{}') - .should('have.text', '{}:2') + cy.get('@active-line').type(':2') + cy.get('@active-line').type('{leftArrow}{leftArrow}{{}') + cy.get('@active-line').should('have.text', '{}:2') }) it('does auto-close a curly bracket after punctuation', function () { - cy.get('@active-line').type('2:').type('{{}').should('have.text', '2:{}') + cy.get('@active-line').type('2:') + cy.get('@active-line').type('{{}') + cy.get('@active-line').should('have.text', '2:{}') }) it('does not auto-close a curly bracket before text', function () { - cy.get('@active-line') - .type('2') - .type('{leftArrow}{{}') - .should('have.text', '{2') + cy.get('@active-line').type('2') + cy.get('@active-line').type('{leftArrow}{{}') + cy.get('@active-line').should('have.text', '{2') }) it('does auto-close a curly bracket after text', function () { - cy.get('@active-line').type('2').type('{{}').should('have.text', '2{}') + cy.get('@active-line').type('2') + cy.get('@active-line').type('{{}') + cy.get('@active-line').should('have.text', '2{}') }) it('does auto-close $$ before punctuation', function () { - cy.get('@active-line') - .type(':2') - .type('{leftArrow}{leftArrow}$$') - .should('have.text', '$$$$:2') + cy.get('@active-line').type(':2') + cy.get('@active-line').type('{leftArrow}{leftArrow}$$') + cy.get('@active-line').should('have.text', '$$$$:2') }) it('does not auto-close $$ before text', function () { - cy.get('@active-line') - .type('2') - .type('{leftArrow}$$') - .should('have.text', '$$2') + cy.get('@active-line').type('2') + cy.get('@active-line').type('{leftArrow}$$') + cy.get('@active-line').should('have.text', '$$2') }) }) describe('closed brackets', function () { it('does type over a closing dollar sign', function () { - cy.get('@active-line').type('$2$').should('have.text', '$2$') + cy.get('@active-line').type('$2$') + cy.get('@active-line').should('have.text', '$2$') }) it('does type over two closing dollar signs', function () { - cy.get('@active-line').type('$$2$$').should('have.text', '$$2$$') + cy.get('@active-line').type('$$2$$') + cy.get('@active-line').should('have.text', '$$2$$') }) it('does type over a closing curly bracket', function () { - cy.get('@active-line').type('{{}2}').should('have.text', '{2}') + cy.get('@active-line').type('{{}2}') + cy.get('@active-line').should('have.text', '{2}') }) it('does type over a closing square bracket', function () { - cy.get('@active-line').type('[2]').should('have.text', '[2]') + cy.get('@active-line').type('[2]') + cy.get('@active-line').should('have.text', '[2]') }) }) }) diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx index 8fcc0f84c0..fd9c222b84 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-cursor.spec.tsx @@ -40,35 +40,39 @@ ${'long line '.repeat(200)}` it('has cursor', function () { // put the cursor on a blank line to type in - cy.get('.cm-line').eq(1).click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').click() - cy.get('.cm-cursor').as('cursor').should('exist') + cy.get('.cm-cursor').as('cursor') cy.get('.cm-cursor').then(assertIsFullLineHeight) }) it('has cursor on empty line whose height is the same as the line', function () { // Put the cursor on a blank line - cy.get('.cm-line').eq(1).click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').click() - cy.get('.cm-cursor').as('cursor').should('exist') + cy.get('.cm-cursor').as('cursor') cy.get('@cursor').then(assertIsFullLineHeight) }) it('has cursor on non-empty line whose height is the same as the line', function () { // Put the cursor on a blank line - cy.get('.cm-line').eq(1).click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').click() cy.get('@line').type('wombat') - cy.get('.cm-cursor').as('cursor').should('exist') + cy.get('.cm-cursor').as('cursor') cy.get('@cursor').then(assertIsFullLineHeight) }) it('puts cursor in the correct place inside brackets', function () { // Put the cursor on a blank line - cy.get('.cm-line').eq(1).click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').click() cy.get('@line').type('[{Enter}') // Get the line inside the bracket @@ -87,9 +91,10 @@ ${'long line '.repeat(200)}` it('has active line highlight line decoration of same height as line when there is no selection and line does not wrap', function () { // Put the cursor on a blank line - cy.get('.cm-line').eq(1).click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').click() - cy.get('.cm-content .cm-activeLine').as('highlight').should('exist') + cy.get('.cm-content .cm-activeLine').as('highlight') cy.get('.ol-cm-activeLineLayer .cm-activeLine').should('not.exist') cy.get('@highlight').then(assertIsFullLineHeight) @@ -97,11 +102,10 @@ ${'long line '.repeat(200)}` it('has active line highlight layer decoration of same height as non-wrapped line when there is no selection and line wraps', function () { // Put the cursor on a blank line - cy.get('.cm-line').eq(2).click().as('line') + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() - cy.get('.ol-cm-activeLineLayer .cm-activeLine') - .as('highlight') - .should('exist') + cy.get('.ol-cm-activeLineLayer .cm-activeLine').as('highlight') cy.get('.cm-content .cm-activeLine').should('not.exist') cy.get('.cm-line').eq(1).as('line') @@ -111,7 +115,8 @@ ${'long line '.repeat(200)}` it('has no active line highlight when there is a selection', function () { // Put the cursor on a blank line - cy.get('.cm-line').eq(1).click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').click() cy.get('@line').type(isMac ? '{cmd}A' : '{ctrl}A') cy.get('.cm-activeLine').should('not.exist') diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx index 7c683cc678..fdb34acde1 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-fundamentals.spec.tsx @@ -26,48 +26,48 @@ test ) - cy.get('.cm-line').eq(0).click().as('first-line') - cy.get('.cm-line').eq(1).click().as('line') - cy.get('.cm-line').eq(2).click().as('empty-line') + cy.get('.cm-line').eq(0).as('first-line') + cy.get('.cm-line').eq(1).as('line') + cy.get('.cm-line').eq(2).as('empty-line') + + cy.get('@line').click() }) it('deletes with backspace', function () { - cy.get('@line').type('{backspace}').should('have.text', 'tes') + cy.get('@line').type('{backspace}') + cy.get('@line').should('have.text', 'tes') }) it('moves with arrow keys', function () { - cy.get('@line') - .type('{leftArrow}1') - .should('have.text', 'tes1t') - .type('{rightArrow}2') - .should('have.text', 'tes1t2') - .type('{downArrow}3') - .type('{upArrow}{upArrow}4') + cy.get('@line').type('{leftArrow}1') + cy.get('@line').should('have.text', 'tes1t') + cy.get('@line').type('{rightArrow}2') + cy.get('@line').should('have.text', 'tes1t2') + cy.get('@line').type('{downArrow}3') + cy.get('@line').type('{upArrow}{upArrow}4') cy.get('@empty-line').should('have.text', '3') cy.get('@first-line').should('have.text', '4') }) it('deletes with delete', function () { - cy.get('@line').type('{leftArrow}{del}').should('have.text', 'tes') + cy.get('@line').type('{leftArrow}{del}') + cy.get('@line').should('have.text', 'tes') }) it('types characters', function () { - cy.get('@empty-line') - .type('hello codemirror!') - .should('have.text', 'hello codemirror!') + cy.get('@empty-line').type('hello codemirror!') + cy.get('@empty-line').should('have.text', 'hello codemirror!') }) it('replaces selections', function () { - cy.get('@line') - .type('{shift}{leftArrow}{leftArrow}{leftArrow}') - .type('abby cat') - .should('have.text', 'tabby cat') + cy.get('@line').type('{shift}{leftArrow}{leftArrow}{leftArrow}') + cy.get('@line').type('abby cat') + cy.get('@line').should('have.text', 'tabby cat') }) it('inserts LaTeX commands', function () { - cy.get('@empty-line') - .type('\\cmd[opt]{{}arg}') - .should('have.text', '\\cmd[opt]{arg}') + cy.get('@empty-line').type('\\cmd[opt]{{}arg}') + cy.get('@empty-line').should('have.text', '\\cmd[opt]{arg}') }) it('allows line-breaks', function () { diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx index 3a46854119..df99dd99c4 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-shortcuts.spec.tsx @@ -28,7 +28,8 @@ describe('keyboard shortcuts', { scrollBehavior: false }, function () { ) - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() cy.get('.cm-editor').as('editor') }) @@ -37,12 +38,12 @@ describe('keyboard shortcuts', { scrollBehavior: false }, function () { }) it('comment line with {meta+/}', function () { - cy.get('@line') - .type('text') - .type(`{${metaKey}+/}`) - .should('have.text', '% text') + cy.get('@line').type('text') + cy.get('@line').type(`{${metaKey}+/}`) + cy.get('@line').should('have.text', '% text') - cy.get('@line').type(`{${metaKey}+/}`).should('have.text', 'text') + cy.get('@line').type(`{${metaKey}+/}`) + cy.get('@line').should('have.text', 'text') }) it('comment line with {ctrl+#}', function () { @@ -55,23 +56,23 @@ describe('keyboard shortcuts', { scrollBehavior: false }, function () { }) it('undo line with {meta+z}', function () { - cy.get('@line').type('text').type(`{${metaKey}+z}`).should('have.text', '') + cy.get('@line').type('text') + cy.get('@line').type(`{${metaKey}+z}`) + cy.get('@line').should('have.text', '') }) it('redo line with {meta+shift+z}', function () { - cy.get('@line') - .type('text') - .type(`{${metaKey}+z}`) // undo - .type(`{${metaKey}+shift+z}`) // redo - .should('have.text', 'text') + cy.get('@line').type('text') + cy.get('@line').type(`{${metaKey}+z}`) // undo + cy.get('@line').type(`{${metaKey}+shift+z}`) // redo + cy.get('@line').should('have.text', 'text') }) it('redo line with {meta+y}', function () { - cy.get('@line') - .type('text') - .type(`{${metaKey}+z}`) // undo - .type(`{${metaKey}+y}`) // redo - .should('have.text', 'text') + cy.get('@line').type('text') + cy.get('@line').type(`{${metaKey}+z}`) // undo + cy.get('@line').type(`{${metaKey}+y}`) // redo + cy.get('@line').should('have.text', 'text') }) it('delete line with {meta+d}', function () { @@ -83,24 +84,21 @@ describe('keyboard shortcuts', { scrollBehavior: false }, function () { }) it('indent line with {tab}', function () { - cy.get('@line') - .trigger('keydown', { key: 'Tab' }) - .should('have.text', ' ') + cy.get('@line').trigger('keydown', { key: 'Tab' }) + cy.get('@line').should('have.text', ' ') }) it('unindent line with {shift+tab}', function () { - cy.get('@line') - .trigger('keydown', { key: 'Tab' }) // indent - .trigger('keydown', { key: 'Tab', shiftKey: true }) // unindent - .should('have.text', '') + cy.get('@line').trigger('keydown', { key: 'Tab' }) // indent + cy.get('@line').trigger('keydown', { key: 'Tab', shiftKey: true }) // unindent + cy.get('@line').should('have.text', '') }) it('uppercase selection with {ctrl+u}', function () { - cy.get('@line') - .type('a') - .type('{shift+leftArrow}') // select text - .type('{ctrl+u}') - .should('have.text', 'A') + cy.get('@line').type('a') + cy.get('@line').type('{shift+leftArrow}') // select text + cy.get('@line').type('{ctrl+u}') + cy.get('@line').should('have.text', 'A') }) it('lowercase selection with {ctrl+shift+u}', function () { @@ -110,27 +108,24 @@ describe('keyboard shortcuts', { scrollBehavior: false }, function () { this.skip() } - cy.get('@line') - .type('A') - .type('{shift+leftArrow}') // select text - .type('{ctrl+shift+u}') // TODO: ctrl+shift+u is a system shortcut so this fails in CI - .should('have.text', 'a') + cy.get('@line').type('A') + cy.get('@line').type('{shift+leftArrow}') // select text + cy.get('@line').type('{ctrl+shift+u}') // TODO: ctrl+shift+u is a system shortcut so this fails in CI + cy.get('@line').should('have.text', 'a') }) it('wrap selection with "\\textbf{}" by using {meta+b}', function () { - cy.get('@line') - .type('a') - .type('{shift+leftArrow}') // select text - .type(`{${metaKey}+b}`) - .should('have.text', '\\textbf{a}') + cy.get('@line').type('a') + cy.get('@line').type('{shift+leftArrow}') // select text + cy.get('@line').type(`{${metaKey}+b}`) + cy.get('@line').should('have.text', '\\textbf{a}') }) it('wrap selection with "\\textit{}" by using {meta+i}', function () { - cy.get('@line') - .type('a') - .type('{shift+leftArrow}') // select text - .type(`{${metaKey}+i}`) - .should('have.text', '\\textit{a}') + cy.get('@line').type('a') + cy.get('@line').type('{shift+leftArrow}') // select text + cy.get('@line').type(`{${metaKey}+i}`) + cy.get('@line').should('have.text', '\\textit{a}') }) }) @@ -158,7 +153,10 @@ contentLine3 ) - cy.get('.cm-line').eq(1).scrollIntoView().click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').scrollIntoView() + cy.get('@line').click() + cy.get('.cm-editor').as('editor') }) @@ -215,10 +213,9 @@ contentLine3 }) it('toggle comments with M-;', function () { - cy.get('@line') - .should('have.text', '\\documentclass{article}') - .type('{alt};') - .should('have.text', '% \\documentclass{article}') + cy.get('@line').should('have.text', '\\documentclass{article}') + cy.get('@line').type('{alt};') + cy.get('@line').should('have.text', '% \\documentclass{article}') }) it('should jump between start and end with M-S-, and M-S-.', function () { @@ -230,12 +227,11 @@ contentLine3 }) it('can enter characters', function () { - cy.get('.cm-line') - .eq(0) - .scrollIntoView() - .click() - .type(CHARACTERS) - .should('have.text', CHARACTERS) + cy.get('.cm-line').eq(0).as('line') + cy.get('@line').scrollIntoView() + cy.get('@line').click() + cy.get('@line').type(CHARACTERS) + cy.get('@line').should('have.text', CHARACTERS) }) }) @@ -266,7 +262,9 @@ contentLine3 ) - cy.get('.cm-line').eq(1).scrollIntoView().click().as('line') + cy.get('.cm-line').eq(1).as('line') + cy.get('@line').scrollIntoView() + cy.get('@line').click() cy.get('.cm-editor').as('editor') }) @@ -275,12 +273,11 @@ contentLine3 }) it('can enter characters', function () { - cy.get('.cm-line') - .eq(0) - .scrollIntoView() - .click() - .type(`i${CHARACTERS}{esc}`) - .should('have.text', CHARACTERS) + cy.get('.cm-line').eq(0).as('line') + cy.get('@line').scrollIntoView() + cy.get('@line').click() + cy.get('@line').type(`i${CHARACTERS}{esc}`) + cy.get('@line').should('have.text', CHARACTERS) }) it('can move around in normal mode', function () { @@ -293,8 +290,7 @@ contentLine3 activeEditorLine().should('have.text', '\\begin{document}') // Move the cursor left, insert 1, move it right, insert a 2 - cy.get('@line') - .type('hi1{esc}la2{esc}') - .should('have.text', '\\documentclass{article1}2') + cy.get('@line').type('hi1{esc}la2{esc}') + cy.get('@line').should('have.text', '\\documentclass{article1}2') }) }) diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx index f59fb55099..8d129777e0 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-spellchecker.spec.tsx @@ -38,7 +38,8 @@ describe('Spellchecker', function () { ) - cy.get('.cm-line').eq(13).click().as('line') + cy.get('.cm-line').eq(13).as('line') + cy.get('@line').click() }) afterEach(function () { @@ -87,9 +88,6 @@ describe('Spellchecker', function () { cy.get('@line').type('notawombat') cy.wait('@spellCheckRequest') - cy.get('@line') - .get('.ol-cm-spelling-error') - .should('exist') - .contains('notawombat') + cy.get('@line').get('.ol-cm-spelling-error').contains('notawombat') }) }) diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx index 1fe5c37426..2715025d4f 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-list.spec.tsx @@ -96,13 +96,12 @@ describe(' lists in Rich Text mode', function () { mountEditor(content) // move to the start of the item and press Tab - cy.get('.cm-line') - .eq(2) - .click() - .type('{leftArrow}'.repeat(4)) - .trigger('keydown', { - key: 'Tab', - }) + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() + cy.get('@line').type('{leftArrow}'.repeat(4)) + cy.get('@line').trigger('keydown', { + key: 'Tab', + }) cy.get('.cm-content').should( 'have.text', @@ -127,7 +126,9 @@ describe(' lists in Rich Text mode', function () { mountEditor(content) // focus a line (at the end of a list item) and press Tab - cy.get('.cm-line').eq(2).click().trigger('keydown', { + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() + cy.get('@line').trigger('keydown', { key: 'Tab', }) @@ -153,13 +154,12 @@ describe(' lists in Rich Text mode', function () { mountEditor(content) // move to the start of the list item and press Tab - cy.get('.cm-line') - .eq(2) - .click() - .type('{leftArrow}'.repeat(4)) - .trigger('keydown', { - key: 'Tab', - }) + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() + cy.get('@line').type('{leftArrow}'.repeat(4)) + cy.get('@line').trigger('keydown', { + key: 'Tab', + }) cy.get('.cm-content').should( 'have.text', @@ -227,11 +227,10 @@ describe(' lists in Rich Text mode', function () { ].join('\n') mountEditor(content) - cy.get('.cm-line') - .eq(2) - .click() - .type('{leftArrow}'.repeat(3)) // to the start of the item - .type('{upArrow}{Shift}{rightArrow}{rightArrow}{rightArrow}') // up and extend to the end of the item + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() + cy.get('@line').type('{leftArrow}'.repeat(3)) // to the start of the item + cy.get('@line').type('{upArrow}{Shift}{rightArrow}{rightArrow}{rightArrow}') // up and extend to the end of the item cy.window().should(win => { expect(win.getSelection()?.toString()).to.equal('One') @@ -247,11 +246,10 @@ describe(' lists in Rich Text mode', function () { ].join('\n') mountEditor(content) - cy.get('.cm-line') - .eq(2) - .click() - .type('{leftArrow}'.repeat(3)) // to the start of the item - .type('{upArrow}{Shift}{rightArrow}{rightArrow}{rightArrow}') // up and extend to the end of the item + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() + cy.get('@line').type('{leftArrow}'.repeat(3)) // to the start of the item + cy.get('@line').type('{upArrow}{Shift}{rightArrow}{rightArrow}{rightArrow}') // up and extend to the end of the item cy.window().should(win => { expect(win.getSelection()?.toString()).to.equal('One') @@ -267,17 +265,16 @@ describe(' lists in Rich Text mode', function () { ].join('\n') mountEditor(content) - cy.get('.cm-line') - .eq(0) - .click('left') - .type( - '{downArrow}'.repeat(4) + // down to the end line - '{rightArrow}'.repeat(3) + // along a few characters - '{upArrow}'.repeat(2) + // up to the first list item - '{rightArrow}'.repeat(4) + // along to the start of the second list item - '{shift}' + // start extending the selection - '{rightArrow}'.repeat(3) // cover the word - ) + cy.get('.cm-line').eq(0).as('line') + cy.get('@line').click('left') + cy.get('@line').type( + '{downArrow}'.repeat(4) + // down to the end line + '{rightArrow}'.repeat(3) + // along a few characters + '{upArrow}'.repeat(2) + // up to the first list item + '{rightArrow}'.repeat(4) + // along to the start of the second list item + '{shift}' + // start extending the selection + '{rightArrow}'.repeat(3) // cover the word + ) cy.window().should(win => { expect(win.getSelection()?.toString()).to.equal('Two') @@ -293,12 +290,11 @@ describe(' lists in Rich Text mode', function () { ].join('\n') mountEditor(content) - cy.get('.cm-line') - .eq(2) - .click() - .type('\\ite') - .type('{enter}') - .type('second') + cy.get('.cm-line').eq(2).as('line') + cy.get('@line').click() + cy.get('@line').type('\\ite') + cy.get('@line').type('{enter}') + cy.get('@line').type('second') cy.get('.cm-content').should( 'have.text', diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx index 727b74b4e6..a049b3c146 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual-toolbar.spec.tsx @@ -116,9 +116,9 @@ describe(' toolbar in Rich Text mode', function () { clickToolbarButton('Insert Link') cy.get('.cm-content').should('have.text', '\\href{}{test}') + cy.get('.cm-line').eq(0).type('http://example.com') cy.get('.cm-line') .eq(0) - .type('http://example.com') .should('have.text', '\\href{http://example.com}{test}') }) @@ -138,7 +138,8 @@ describe(' toolbar in Rich Text mode', function () { ].join('') ) - cy.get('.cm-line').eq(1).type('ing').should('have.text', ' testing') + cy.get('.cm-line').eq(1).type('ing') + cy.get('.cm-line').eq(1).should('have.text', ' testing') }) it('should insert a numbered list', function () { @@ -157,6 +158,7 @@ describe(' toolbar in Rich Text mode', function () { ].join('') ) - cy.get('.cm-line').eq(1).type('ing').should('have.text', ' testing') + cy.get('.cm-line').eq(1).type('ing') + cy.get('.cm-line').eq(1).should('have.text', ' testing') }) }) diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx index 47dab533aa..b01b2bd53a 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor-visual.spec.tsx @@ -37,23 +37,25 @@ describe(' in Rich Text mode', function () { // wait for the content to be parsed and revealed cy.get('.cm-content').should('have.css', 'opacity', '1') - cy.get('.cm-line').eq(0).click().as('first-line') + cy.get('.cm-line').eq(0).as('first-line') cy.get('.cm-line').eq(1).as('second-line') cy.get('.cm-line').eq(2).as('third-line') cy.get('.cm-line').eq(3).as('fourth-line') cy.get('.ol-cm-toolbar [aria-label="Format Bold"]').as('toolbar-bold') + + cy.get('@first-line').click() }) forEach(['LaTeX', 'TeX']).it('renders the %s logo', function (logo) { - cy.get('@first-line').type(`\\${logo}{{}}{Enter}`).should('have.text', logo) + cy.get('@first-line').type(`\\${logo}{{}}{Enter}`) + cy.get('@first-line').should('have.text', logo) }) it('renders \\dots', function () { - cy.get('@first-line') - .type('\\dots{Esc}') - .should('have.text', '\\dots') - .type('{Enter}') - .should('have.text', '…') + cy.get('@first-line').type('\\dots{Esc}') + cy.get('@first-line').should('have.text', '\\dots') + cy.get('@first-line').type('{Enter}') + cy.get('@first-line').should('have.text', '…') }) it('creates a new list item on Enter', function () { @@ -124,16 +126,15 @@ describe(' in Rich Text mode', function () { forEach(['textbf', 'textit', 'underline']).it( 'handles \\%s text', function (command) { - cy.get('@first-line') - .type(`\\${command}{`) - .should('have.text', `{}`) - .type('{rightArrow} ') - .should('have.text', '{} ') - .type('{Backspace}{leftArrow}test text') - .should('have.text', '{test text}') - .type('{rightArrow} foo') - .should('have.text', 'test text foo') // no braces - .find(`.ol-cm-command-${command}`) + cy.get('@first-line').type(`\\${command}{`) + cy.get('@first-line').should('have.text', `{}`) + cy.get('@first-line').type('{rightArrow} ') + cy.get('@first-line').should('have.text', '{} ') + cy.get('@first-line').type('{Backspace}{leftArrow}test text') + cy.get('@first-line').should('have.text', '{test text}') + cy.get('@first-line').type('{rightArrow} foo') + cy.get('@first-line').should('have.text', 'test text foo') // no braces + cy.get('@first-line').find(`.ol-cm-command-${command}`) } ) @@ -146,43 +147,37 @@ describe(' in Rich Text mode', function () { 'paragraph', 'subparagraph', ]).it('handles \\%s sectioning command', function (command) { - cy.get('@first-line') - .type(`\\${command}{`) - .should('have.text', `\\${command}{}`) - .type('{rightArrow} ') - .should('have.text', `\\${command}{} `) - // Press enter before closing brace - .type('{Backspace}{leftArrow}title{leftArrow}{Enter}') - .should('have.text', 'title') - .find(`.ol-cm-heading.ol-cm-command-${command}`) - .should('exist') + cy.get('@first-line').type(`\\${command}{`) + cy.get('@first-line').should('have.text', `\\${command}{}`) + cy.get('@first-line').type('{rightArrow} ') + cy.get('@first-line').should('have.text', `\\${command}{} `) + // Press enter before closing brace + cy.get('@first-line').type('{Backspace}{leftArrow}title{leftArrow}{Enter}') + cy.get('@first-line').should('have.text', 'title') + cy.get('@first-line').find(`.ol-cm-heading.ol-cm-command-${command}`) }) forEach(['textsc', 'texttt', 'sout', 'emph', 'url', 'caption']).it( 'handles \\%s text', function (command) { - cy.get('@first-line') - .type(`\\${command}{`) - .should('have.text', `\\${command}{}`) - .type('{rightArrow} ') - .should('have.text', `\\${command}{} `) - .type('{Backspace}{leftArrow}test text{rightArrow} ') - .should('have.text', 'test text ') - .find(`.ol-cm-command-${command}`) - .should('exist') + cy.get('@first-line').type(`\\${command}{`) + cy.get('@first-line').should('have.text', `\\${command}{}`) + cy.get('@first-line').type('{rightArrow} ') + cy.get('@first-line').should('have.text', `\\${command}{} `) + cy.get('@first-line').type('{Backspace}{leftArrow}test text{rightArrow} ') + cy.get('@first-line').should('have.text', 'test text ') + cy.get('@first-line').find(`.ol-cm-command-${command}`) } ) it('handles \\verb text', function () { - cy.get('@first-line') - .type(`\\verb|`) - .should('have.text', `\\verb|`) - .type('| ') - .should('have.text', `\\verb|| `) - .type('{Backspace}{leftArrow}test text{rightArrow} ') - .should('have.text', 'test text ') - .find(`.ol-cm-command-verb`) - .should('exist') + cy.get('@first-line').type(`\\verb|`) + cy.get('@first-line').should('have.text', `\\verb|`) + cy.get('@first-line').type('| ') + cy.get('@first-line').should('have.text', `\\verb|| `) + cy.get('@first-line').type('{Backspace}{leftArrow}test text{rightArrow} ') + cy.get('@first-line').should('have.text', 'test text ') + cy.get('@first-line').find(`.ol-cm-command-verb`) }) forEach([ @@ -191,47 +186,56 @@ describe(' in Rich Text mode', function () { ['cite', '📚'], ['include', '🔗'], ]).it('handles \\%s commands', function (command, icon) { - cy.get('@first-line') - .type(`\\${command}{} `) - .should('have.text', `\\${command}{} `) - .type('{Backspace}{leftArrow}key') - .should('have.text', `\\${command}{key}`) - .type('{rightArrow}') - .should('have.text', `\\${command}{key}`) - .type(' ') - .should('have.text', `${icon}key `) + cy.get('@first-line').type(`\\${command}{} `) + cy.get('@first-line').should('have.text', `\\${command}{} `) + cy.get('@first-line').type('{Backspace}{leftArrow}key') + cy.get('@first-line').should('have.text', `\\${command}{key}`) + cy.get('@first-line').type('{rightArrow}') + cy.get('@first-line').should('have.text', `\\${command}{key}`) + cy.get('@first-line').type(' ') + cy.get('@first-line').should('have.text', `${icon}key `) }) it('handles \\href command', function () { - cy.get('@first-line') - .type('\\href{{}https://overleaf.com} ') - .should('have.text', '\\href{https://overleaf.com} ') - .type('{Backspace}{{}{Del}Overleaf ') - .should('have.text', '\\href{https://overleaf.com}{Overleaf ') - .type('{Backspace}} ') - .should('have.text', 'Overleaf ') - .find('.ol-cm-link-text') - .should('exist') + cy.get('@first-line').type('\\href{{}https://overleaf.com} ') + cy.get('@first-line').should('have.text', '\\href{https://overleaf.com} ') + cy.get('@first-line').type('{Backspace}{{}{Del}Overleaf ') + cy.get('@first-line').should( + 'have.text', + '\\href{https://overleaf.com}{Overleaf ' + ) + cy.get('@first-line').type('{Backspace}} ') + cy.get('@first-line').should('have.text', 'Overleaf ') + cy.get('@first-line').find('.ol-cm-link-text') }) it('displays unknown commands unchanged', function () { - cy.get('@first-line') - .type('\\foo[bar]{{}baz} ') - .should('have.text', '\\foo[bar]{baz} ') + cy.get('@first-line').type('\\foo[bar]{{}baz} ') + cy.get('@first-line').should('have.text', '\\foo[bar]{baz} ') }) describe('Figure environments', function () { beforeEach(function () { - cy.get('@first-line').type('\\begin{{}figure').type('{Enter}') // end with cursor in file path + cy.get('@first-line').type('\\begin{{}figure') + cy.get('@first-line').type('{Enter}') // end with cursor in file path }) it('loads figures', function () { cy.get('@third-line').type('path/to/image') - cy.get('@third-line') - .should('have.text', ' \\includegraphics{path/to/image}') - .type('{DownArrow}{DownArrow}{DownArrow}{DownArrow}') - .should('not.exist') // Should be removed from dom when line is hidden + cy.get('@third-line').should( + 'have.text', + ' \\includegraphics{path/to/image}' + ) + + // move the cursor out of the figure + cy.get('@third-line').type('{DownArrow}{DownArrow}{DownArrow}{DownArrow}') + + // Should be removed from dom when line is hidden + cy.get('.cm-content').should( + 'not.contain', + '\\includegraphics{path/to/image}' + ) cy.get('img.ol-cm-graphics').should('have.attr', 'src', 'path/to/image') }) @@ -256,7 +260,8 @@ describe(' in Rich Text mode', function () { cy.get('@second-line') .should('have.text', ' \\centering') .should('have.class', 'ol-cm-environment-centered') - .type('{Backspace}') + cy.get('@second-line').type('{Backspace}') + cy.get('@second-line') .should('have.text', ' \\centerin') .should('not.have.class', 'ol-cm-environment-centered') }) @@ -280,34 +285,32 @@ describe(' in Rich Text mode', function () { }) it('handles range selections inside bold', function () { - cy.get('@first-line') - .type('\\textbf{{}test}') - .type('{LeftArrow}'.repeat(4)) - .type('{Shift}{RightArrow}{RightArrow}') + cy.get('@first-line').type('\\textbf{{}test}') + cy.get('@first-line').type('{LeftArrow}'.repeat(4)) + cy.get('@first-line').type('{Shift}{RightArrow}{RightArrow}') cy.get('@toolbar-bold').should('have.class', 'active') }) it('handles range selections spanning bold', function () { - cy.get('@first-line') - .type('\\textbf{{}test} outside') - .type('{LeftArrow}'.repeat(10)) - .type('{Shift}' + '{RightArrow}'.repeat(5)) + cy.get('@first-line').type('\\textbf{{}test} outside') + cy.get('@first-line').type('{LeftArrow}'.repeat(10)) + cy.get('@first-line').type('{Shift}' + '{RightArrow}'.repeat(5)) cy.get('@toolbar-bold').should('not.have.class', 'active') }) it('does not highlight bold when commands at selection ends are different', function () { - cy.get('@first-line') - .type('\\textbf{{}first} \\textbf{{}second}') - .type('{LeftArrow}'.repeat(12)) - .type('{Shift}' + '{RightArrow}'.repeat(7)) + cy.get('@first-line').type('\\textbf{{}first} \\textbf{{}second}') + cy.get('@first-line').type('{LeftArrow}'.repeat(12)) + cy.get('@first-line').type('{Shift}' + '{RightArrow}'.repeat(7)) cy.get('@toolbar-bold').should('not.have.class', 'active') }) it('highlight when ends share common formatting ancestor', function () { - cy.get('@first-line') - .type('\\textbf{{}\\textit{{}first} \\textit{{}second}}') - .type('{LeftArrow}'.repeat(13)) - .type('{Shift}' + '{RightArrow}'.repeat(7)) + cy.get('@first-line').type( + '\\textbf{{}\\textit{{}first} \\textit{{}second}}' + ) + cy.get('@first-line').type('{LeftArrow}'.repeat(13)) + cy.get('@first-line').type('{Shift}' + '{RightArrow}'.repeat(7)) cy.get('@toolbar-bold').should('have.class', 'active') }) }) @@ -318,16 +321,14 @@ describe(' in Rich Text mode', function () { cy.get('@first-line').type( '\\begin{{}frame}{{}Slide\\\\title}{Enter}\\end{{}frame}{Enter}' ) - cy.get('.ol-cm-divider').should('exist') - cy.get('.ol-cm-frame-title').should('exist') + cy.get('.ol-cm-divider') + cy.get('.ol-cm-frame-title') }) it('typesets title', function () { cy.get('@first-line').type( '\\begin{{}frame}{{}Slide\\\\title}{Enter}\\end{{}frame}{Enter}' ) - cy.get('.ol-cm-frame-title') - .should('exist') - .should('have.html', 'Slide
    title') + cy.get('.ol-cm-frame-title').should('have.html', 'Slide
    title') }) // eslint-disable-next-line mocha/no-skipped-tests @@ -337,16 +338,14 @@ describe(' in Rich Text mode', function () { ) // allow plenty of time for MathJax to load - cy.get('.MathJax', { timeout: 10000 }).should('exist') + cy.get('.MathJax', { timeout: 10000 }) }) it('typesets subtitle', function () { cy.get('@first-line').type( '\\begin{{}frame}{{}Slide title}{{}Slide subtitle}{Enter}\\end{{}frame}{Enter}' ) - cy.get('.ol-cm-frame-subtitle') - .should('exist') - .should('have.html', 'Slide subtitle') + cy.get('.ol-cm-frame-subtitle').should('have.html', 'Slide subtitle') }) }) @@ -364,12 +363,10 @@ describe(' in Rich Text mode', function () { // allow plenty of time for MathJax to load // TODO: re-enable this assertion when stable - // cy.get('.MathJax', { timeout: 10000 }).should('exist') + // cy.get('.MathJax', { timeout: 10000 }) - cy.get('.ol-cm-maketitle').should('exist') - cy.get('.ol-cm-title') - .should('exist') - .should('contain.html', 'Document title
    with') + cy.get('.ol-cm-maketitle') + cy.get('.ol-cm-title').should('contain.html', 'Document title
    with') cy.get('.ol-cm-author').should('have.text', 'Author') }) diff --git a/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx b/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx index cb5ef71d51..b144cfea89 100644 --- a/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx +++ b/services/web/test/frontend/features/source-editor/components/codemirror-editor.spec.tsx @@ -33,14 +33,14 @@ describe('', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() - cy.get('@line') - .type('this is some text') - .should('have.text', 'this is some text') - .type('{shift}{leftArrow}{leftArrow}{leftArrow}{leftArrow}') - .type('{backspace}') - .should('have.text', 'this is some ') + cy.get('@line').type('this is some text') + cy.get('@line').should('have.text', 'this is some text') + cy.get('@line').type('{shift}{leftArrow}{leftArrow}{leftArrow}{leftArrow}') + cy.get('@line').type('{backspace}') + cy.get('@line').should('have.text', 'this is some ') }) it('renders client-side lint annotations in the gutter', function () { @@ -137,7 +137,9 @@ describe('', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().type('foo{enter}') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() + cy.get('@line').type('foo{enter}') activeEditorLine().should('have.text', '') }) @@ -154,7 +156,8 @@ describe('', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() cy.get('@line').type('\\begin{{}itemiz') cy.findAllByRole('listbox').contains('\\begin{itemize}').click() @@ -174,10 +177,12 @@ describe('', { scrollBehavior: false }, function () { ) // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() // Single indentation - cy.get('@line').trigger('keydown', { key: 'Tab' }).type('{enter}') + cy.get('@line').trigger('keydown', { key: 'Tab' }) + cy.get('@line').type('{enter}') activeEditorLine().should('have.text', ' ') @@ -242,7 +247,8 @@ describe('', { scrollBehavior: false }, function () { throw error }) - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() cy.get('@line').type('text') cy.get('@line').should('not.contain.text', 'text') @@ -266,7 +272,7 @@ describe('', { scrollBehavior: false }, function () { pairs.forEach(pair => { activeEditorLine().type(pair).as('line') - cy.get('@line').find('.cm-matchingBracket').should('exist') + cy.get('@line').find('.cm-matchingBracket') cy.get('@line').type('{enter}') }) }) @@ -283,7 +289,8 @@ describe('', { scrollBehavior: false }, function () { ) // select foldable line - cy.get('.cm-line').eq(9).click().as('line') + cy.get('.cm-line').eq(9).as('line') + cy.get('@line').click() const testUnfoldedState = () => { cy.get('.cm-gutterElement').eq(11).should('have.text', '11') @@ -330,7 +337,8 @@ describe('', { scrollBehavior: false }, function () { cy.interceptCompile() // put the cursor on a blank line to type in - cy.get('.cm-line').eq(16).click().as('line') + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() cy.get('.cm-vim-panel').should('have.length', 0) @@ -338,7 +346,8 @@ describe('', { scrollBehavior: false }, function () { cy.get('.cm-vim-panel').should('have.length', 1) - cy.get('.cm-vim-panel input').type('w').type('{enter}') + cy.get('.cm-vim-panel input').type('w') + cy.get('.cm-vim-panel input').type('{enter}') // Compile after save cy.waitForCompile() @@ -355,15 +364,16 @@ describe('', { scrollBehavior: false }, function () { ) - cy.get('.cm-line') - .eq(16) - .click() - .type( - '{enter}text_to_find{enter}abcde 1{enter}abcde 2{enter}abcde 3{enter}ABCDE 4{enter}' - ) + cy.get('.cm-line').eq(16).as('line') + + cy.get('@line').click() + cy.get('@line').type( + '{enter}text_to_find{enter}abcde 1{enter}abcde 2{enter}abcde 3{enter}ABCDE 4{enter}' + ) // select text `text_to_find` - cy.get('.cm-line').eq(17).dblclick().as('lineToFind') + cy.get('.cm-line').eq(17).as('lineToFind') + cy.get('@lineToFind').dblclick() // search panel is not displayed cy.findByRole('search').should('have.length', 0) @@ -382,7 +392,8 @@ describe('', { scrollBehavior: false }, function () { // search input's value should be set to the selected text .should('have.value', 'text_to_find') - cy.get('@search-input').clear().type('abcde') + cy.get('@search-input').clear() + cy.get('@search-input').type('abcde') cy.findByRole('button', { name: 'next' }).as('next-btn') cy.findByRole('button', { name: 'previous' }).as('previous-btn') @@ -411,7 +422,8 @@ describe('', { scrollBehavior: false }, function () { // matches case cy.contains('Aa').click() - cy.get('@search-input').clear().type('ABCDE') + cy.get('@search-input').clear() + cy.get('@search-input').type('ABCDE') cy.get('.cm-searchMatch-selected').should('contain.text', 'ABCDE') cy.get('@search-input').clear() cy.contains('Aa').click() @@ -434,24 +446,29 @@ describe('', { scrollBehavior: false }, function () { .should('not.contain.text', 'abcde') // replace all - cy.get('@search-input').clear().type('abcde') - cy.get('@replace-input').clear().type('test') + cy.get('@search-input').clear() + cy.get('@search-input').type('abcde') + cy.get('@replace-input').clear() + cy.get('@replace-input').type('test') cy.findByRole('button', { name: /replace all/i }).click() cy.get('@search-input').clear() cy.get('@replace-input').clear() cy.should('not.contain.text', 'abcde') // replace all within selection - cy.get('@search-input').clear().type('contentLine') + cy.get('@search-input').clear() + cy.get('@search-input').type('contentLine') cy.get('.ol-cm-search-form-position').should('have.text', '1 of 100') - cy.get('.cm-line') - .eq(27) - .should('contain.text', 'contentLine 0') - .click() - .type('{shift}{downArrow}{downArrow}{downArrow}') + + cy.get('.cm-line').eq(27).as('contentLine') + cy.get('@contentLine').should('contain.text', 'contentLine 0') + cy.get('@contentLine').click() + cy.get('@contentLine').type('{shift}{downArrow}{downArrow}{downArrow}') + cy.findByLabelText('Within selection').click() cy.get('.ol-cm-search-form-position').should('have.text', '1 of 3') - cy.get('@replace-input').clear().type('contentedLine') + cy.get('@replace-input').clear() + cy.get('@replace-input').type('contentedLine') cy.findByRole('button', { name: /replace all/i }).click() cy.get('.cm-line:contains("contentedLine")').should('have.length', 3) cy.findByLabelText('Within selection').click() @@ -475,7 +492,9 @@ describe('', { scrollBehavior: false }, function () { ) // Open the search panel - cy.get('.cm-line').eq(16).click().type(`{${metaKey}+f}`) + cy.get('.cm-line').eq(16).as('line') + cy.get('@line').click() + cy.get('@line').type(`{${metaKey}+f}`) cy.findByRole('search').within(() => { cy.findByLabelText('Find').as('find-input') @@ -526,11 +545,13 @@ describe('', { scrollBehavior: false }, function () { '@within-selection-label', ]) { // Toggle when clicked, then focus the search input - cy.get(option).click().should('have.class', 'checked') + cy.get(option).click() + cy.get(option).should('have.class', 'checked') cy.get('@find-input').should('be.focused') // Toggle when clicked again, then focus the search input - cy.get(option).click().should('not.have.class', 'checked') + cy.get(option).click() + cy.get(option).should('not.have.class', 'checked') cy.get('@find-input').should('be.focused') } }) diff --git a/services/web/test/frontend/features/subscription/components/new/checkout.spec.tsx b/services/web/test/frontend/features/subscription/components/new/checkout.spec.tsx index dd6133560f..1ea49ad20a 100644 --- a/services/web/test/frontend/features/subscription/components/new/checkout.spec.tsx +++ b/services/web/test/frontend/features/subscription/components/new/checkout.spec.tsx @@ -207,9 +207,8 @@ describe('checkout panel', function () { cy.mount() cy.get('@coupon').should('have.been.calledOnce') cy.findByTestId('checkout-form').within(() => { - cy.findByLabelText(/coupon code/i) - .type(couponCode, { delay: 0 }) - .blur() + cy.findByLabelText(/coupon code/i).type(couponCode, { delay: 0 }) + cy.findByLabelText(/coupon code/i).blur() }) cy.get('@coupon') .should('have.been.calledTwice') @@ -239,9 +238,8 @@ describe('checkout panel', function () { }) cy.mount() cy.findByTestId('checkout-form').within(() => { - cy.findByLabelText(/coupon code/i) - .type('promo_code', { delay: 0 }) - .blur() + cy.findByLabelText(/coupon code/i).type('promo_code', { delay: 0 }) + cy.findByLabelText(/coupon code/i).blur() }) cy.findByRole('alert').within(() => { cy.contains(/coupon code is not valid for selected plan/i) @@ -273,9 +271,8 @@ describe('checkout panel', function () { cy.mount() cy.get('@catch').should('have.been.calledOnce') cy.findByTestId('checkout-form').within(() => { - cy.findByLabelText(/coupon code/i) - .type('promo_code', { delay: 0 }) - .blur() + cy.findByLabelText(/coupon code/i).type('promo_code', { delay: 0 }) + cy.findByLabelText(/coupon code/i).blur() }) cy.get('@catch').should('have.been.calledTwice') cy.findByRole('alert').within(() => { diff --git a/services/web/test/frontend/shared/hooks/use-abort-controller.test.js b/services/web/test/frontend/shared/hooks/use-abort-controller.test.tsx similarity index 93% rename from services/web/test/frontend/shared/hooks/use-abort-controller.test.js rename to services/web/test/frontend/shared/hooks/use-abort-controller.test.tsx index 52c2be358a..fd91fa6faa 100644 --- a/services/web/test/frontend/shared/hooks/use-abort-controller.test.js +++ b/services/web/test/frontend/shared/hooks/use-abort-controller.test.tsx @@ -6,7 +6,11 @@ import useAbortController from '../../../../frontend/js/shared/hooks/use-abort-c import { getJSON } from '../../../../frontend/js/infrastructure/fetch-json' describe('useAbortController', function () { - let status + let status: { + loading: boolean + success: boolean | null + error: any | null + } beforeEach(function () { fetchMock.restore() @@ -22,7 +26,7 @@ describe('useAbortController', function () { fetchMock.restore() }) - function AbortableRequest({ url }) { + function AbortableRequest({ url }: { url: string }) { const { signal } = useAbortController() React.useEffect(() => { diff --git a/services/web/test/frontend/shared/hooks/use-resize.spec.tsx b/services/web/test/frontend/shared/hooks/use-resize.spec.tsx index 7ff40394a2..4116eb862a 100644 --- a/services/web/test/frontend/shared/hooks/use-resize.spec.tsx +++ b/services/web/test/frontend/shared/hooks/use-resize.spec.tsx @@ -88,10 +88,9 @@ describe('useResize', function () { const xPos = 400 cy.mount() - cy.get('#handle') - .trigger('mousedown', { button: 0 }) - .trigger('mousemove', { clientX: xPos }) - .trigger('mouseup') + cy.get('#handle').trigger('mousedown', { button: 0 }) + cy.get('#handle').trigger('mousemove', { clientX: xPos }) + cy.get('#handle').trigger('mouseup') cy.get('#target').should('have.css', 'width', `${xPos}px`) }) @@ -100,10 +99,9 @@ describe('useResize', function () { const xPos = 400 cy.mount() - cy.get('#handle') - .trigger('mousedown', { button: 0 }) - .trigger('mousemove', { clientX: xPos }) - .trigger('mouseup') + cy.get('#handle').trigger('mousedown', { button: 0 }) + cy.get('#handle').trigger('mousemove', { clientX: xPos }) + cy.get('#handle').trigger('mouseup') cy.window() .its('localStorage.resizeable-test')