From c8e76bab37da90606e79d2ea0a2f7612b963337e Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 4 Aug 2022 13:15:20 +0500 Subject: [PATCH 01/13] refactor: updated frontend-build version --- .eslintrc.js | 3 +- package-lock.json | 11898 +++++++++++++++++++------------------------- package.json | 2 +- 3 files changed, 5125 insertions(+), 6778 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index b0b3795cd1..28e19bd40c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,5 @@ const { getBaseConfig } = require('@edx/frontend-build'); + const config = getBaseConfig('eslint'); // Ignore linting on module.config.js @@ -8,7 +9,7 @@ config.ignorePatterns = ['module.config.js']; // since they are causing eslint to fail for no apparent reason since // upgrading @edx/frontend-build from v3 to v5: // - TypeError: Cannot read property 'range' of null -config.rules['indent'] = ['error', 2, { 'ignoredNodes': ['TemplateLiteral', 'SwitchCase'] }]; +config.rules.indent = ['error', 2, { ignoredNodes: ['TemplateLiteral', 'SwitchCase'] }]; config.rules['template-curly-spacing'] = 'off'; config.rules['import/prefer-default-export'] = 'off'; diff --git a/package-lock.json b/package-lock.json index 4a4de471d2..020658a441 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "^11.0.2", + "@edx/frontend-build": "^12.0.3", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", @@ -193,6 +193,32 @@ "@algolia/requester-common": "4.6.0" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/cli": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", @@ -223,20 +249,20 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "dependencies": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -272,55 +298,34 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true, - "engines": { - "node": ">=6.9.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "node_modules/@babel/eslint-parser": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" } }, - "node_modules/@babel/core/node_modules/semver": { + "node_modules/@babel/eslint-parser/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", @@ -330,119 +335,53 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", + "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "engines": { @@ -462,18 +401,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -483,13 +422,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" }, "engines": { "node": ">=6.9.0" @@ -499,15 +438,13 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -527,555 +464,244 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-environment-visitor/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dependencies": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, + "node_modules/@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz", + "integrity": "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" }, @@ -1084,9 +710,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz", + "integrity": "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1096,12 +722,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1111,14 +737,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1128,13 +754,14 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -1161,13 +788,13 @@ } }, "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1178,12 +805,12 @@ } }, "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1194,12 +821,12 @@ } }, "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1210,12 +837,12 @@ } }, "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1226,12 +853,12 @@ } }, "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1242,12 +869,12 @@ } }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1258,12 +885,12 @@ } }, "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1293,12 +920,12 @@ } }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1309,13 +936,13 @@ } }, "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -1326,13 +953,13 @@ } }, "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1342,14 +969,14 @@ } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1360,13 +987,13 @@ } }, "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=4" @@ -1475,12 +1102,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1592,12 +1219,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1607,12 +1234,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1622,14 +1249,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1638,47 +1265,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1688,12 +1281,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1703,18 +1296,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" }, "engines": { @@ -1725,12 +1318,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1740,12 +1333,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1755,13 +1348,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1771,12 +1364,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1786,13 +1379,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1802,12 +1395,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1817,14 +1410,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1834,12 +1427,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -1849,12 +1442,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1864,13 +1457,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1881,14 +1474,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1899,15 +1492,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" }, "engines": { @@ -1917,23 +1510,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1943,12 +1527,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1958,12 +1543,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1973,13 +1558,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1989,12 +1574,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2004,12 +1589,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2019,12 +1604,12 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz", - "integrity": "sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz", + "integrity": "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2034,12 +1619,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2049,16 +1634,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", - "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", + "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" @@ -2068,12 +1653,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.7" + "@babel/plugin-transform-react-jsx": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2082,48 +1667,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2133,11 +1684,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" }, "engines": { @@ -2148,12 +1700,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2163,12 +1715,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2178,13 +1730,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2194,12 +1746,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2209,12 +1761,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2224,12 +1776,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2239,14 +1791,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", - "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz", + "integrity": "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-typescript": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-typescript": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2256,12 +1808,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" }, "engines": { "node": ">=6.9.0" @@ -2271,13 +1823,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2374,28 +1926,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/preset-env/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2442,14 +1972,14 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", - "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-typescript": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -2482,81 +2012,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz", + "integrity": "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2564,60 +2046,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", - "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2670,9 +2105,9 @@ "integrity": "sha512-ne2ZKF1r0akkt0rEzCAQAk4cTDTI2GiWCpc+T7ldQpw9X57OnUB16dKsFNe40C9uEjL5h3Ps/ZsFM5dm4cIkEQ==" }, "node_modules/@edx/eslint-config": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@edx/eslint-config/-/eslint-config-3.0.0.tgz", - "integrity": "sha512-3vMX3/vqYxpJK/XKGRjWlsvcIkOQYMxJ1uXcVl70HiQda31xWW4qpg2OTevEdnYo5vThSBVMFe7lRmMpMNDR7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@edx/eslint-config/-/eslint-config-3.1.0.tgz", + "integrity": "sha512-Okv8vkmX+qe+joD7h9DcT9JdRIyy6jJSVWbIHr2dAHKuk5swVFO92JvhC2pYtMg2EPKA1P1Hmz8cmmfw6QoTZw==", "dev": true, "peerDependencies": { "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0", @@ -2684,24 +2119,24 @@ } }, "node_modules/@edx/frontend-build": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-11.0.2.tgz", - "integrity": "sha512-JGR8UEfxX+td1AeNqLVZgvEeHMmoIktHufC168fl55KVkPuQ7gje/anRFETkK9SekvlCeAJ+hecZj6/WSJ+8jA==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.0.3.tgz", + "integrity": "sha512-q/BoMntXSXSXfSTUpr7G051jrqkAvEFRQHG4+R2rPMQX+Ok2FSE9HTa74kkEP2H2Ij6x5VHXhU5F1powu/x6Zw==", "dev": true, "dependencies": { "@babel/cli": "7.16.0", "@babel/core": "7.16.0", + "@babel/eslint-parser": "7.18.2", "@babel/plugin-proposal-class-properties": "7.16.0", "@babel/plugin-proposal-object-rest-spread": "7.16.0", "@babel/plugin-syntax-dynamic-import": "7.8.3", "@babel/preset-env": "7.16.4", "@babel/preset-react": "7.16.0", - "@edx/eslint-config": "3.0.0", + "@edx/eslint-config": "3.1.0", "@edx/new-relic-source-map-webpack-plugin": "1.0.1", "@pmmmwh/react-refresh-webpack-plugin": "0.5.3", "@svgr/webpack": "6.2.1", "autoprefixer": "10.2.6", - "babel-eslint": "10.1.0", "babel-jest": "26.6.3", "babel-loader": "8.2.3", "babel-plugin-react-intl": "7.9.4", @@ -2712,12 +2147,12 @@ "cssnano": "5.0.12", "dotenv": "8.2.0", "dotenv-webpack": "7.0.3", - "eslint": "6.8.0", - "eslint-config-airbnb": "18.1.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-react": "7.19.0", - "eslint-plugin-react-hooks": "1.7.0", + "eslint": "8.18.0", + "eslint-config-airbnb": "19.0.4", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-react": "7.30.0", + "eslint-plugin-react-hooks": "4.6.0", "file-loader": "6.2.0", "html-webpack-plugin": "5.5.0", "identity-obj-proxy": "3.0.0", @@ -3184,10 +2619,75 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@formatjs/ecma402-abstract": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz", - "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz", + "integrity": "sha512-Mv027hcLFjE45K8UJ8PjRpdDGfR0aManEFj1KzoN8zXNveHGEygpZGfFf/FTTMl+QEVSrPAUlyxaCApvmv47AQ==", "dev": true, "dependencies": { "tslib": "^2.0.1" @@ -3316,15 +2816,6 @@ "tslib": "^2.0.1" } }, - "node_modules/@formatjs/intl-numberformat/node_modules/@formatjs/ecma402-abstract": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz", - "integrity": "sha512-Mv027hcLFjE45K8UJ8PjRpdDGfR0aManEFj1KzoN8zXNveHGEygpZGfFf/FTTMl+QEVSrPAUlyxaCApvmv47AQ==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - } - }, "node_modules/@formatjs/intl/node_modules/@formatjs/ecma402-abstract": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", @@ -3353,6 +2844,15 @@ } } }, + "node_modules/@formatjs/ts-transformer/node_modules/@formatjs/ecma402-abstract": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz", + "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + } + }, "node_modules/@formatjs/ts-transformer/node_modules/intl-messageformat-parser": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-6.1.2.tgz", @@ -3433,6 +2933,26 @@ "react": ">=16.x" } }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -4357,9 +3877,9 @@ } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -4428,9 +3948,9 @@ } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz", + "integrity": "sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==", "dev": true, "engines": { "node": ">=10" @@ -4444,9 +3964,9 @@ } }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz", + "integrity": "sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==", "dev": true, "engines": { "node": ">=10" @@ -4460,9 +3980,9 @@ } }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", - "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz", + "integrity": "sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==", "dev": true, "engines": { "node": ">=10" @@ -4476,9 +3996,9 @@ } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", - "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz", + "integrity": "sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==", "dev": true, "engines": { "node": ">=10" @@ -4492,9 +4012,9 @@ } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", - "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz", + "integrity": "sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==", "dev": true, "engines": { "node": ">=10" @@ -4508,9 +4028,9 @@ } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", - "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz", + "integrity": "sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==", "dev": true, "engines": { "node": ">=10" @@ -4524,9 +4044,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", - "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz", + "integrity": "sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==", "dev": true, "engines": { "node": ">=10" @@ -4540,9 +4060,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", - "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz", + "integrity": "sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==", "dev": true, "engines": { "node": ">=12" @@ -4556,19 +4076,19 @@ } }, "node_modules/@svgr/babel-preset": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", - "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.3.1.tgz", + "integrity": "sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==", "dev": true, "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", - "@svgr/babel-plugin-transform-svg-component": "^6.2.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.3.1", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.3.1", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.3.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.3.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.3.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.3.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.3.1", + "@svgr/babel-plugin-transform-svg-component": "^6.3.1" }, "engines": { "node": ">=10" @@ -4582,12 +4102,12 @@ } }, "node_modules/@svgr/core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", - "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz", + "integrity": "sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==", "dev": true, "dependencies": { - "@svgr/plugin-jsx": "^6.2.1", + "@svgr/plugin-jsx": "^6.3.1", "camelcase": "^6.2.0", "cosmiconfig": "^7.0.1" }, @@ -4600,13 +4120,13 @@ } }, "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", - "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.3.1.tgz", + "integrity": "sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==", "dev": true, "dependencies": { - "@babel/types": "^7.15.6", - "entities": "^3.0.1" + "@babel/types": "^7.18.4", + "entities": "^4.3.0" }, "engines": { "node": ">=10" @@ -4616,32 +4136,10 @@ "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", + "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", "dev": true, "engines": { "node": ">=0.12" @@ -4651,15 +4149,15 @@ } }, "node_modules/@svgr/plugin-jsx": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", - "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz", + "integrity": "sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==", "dev": true, "dependencies": { - "@babel/core": "^7.15.5", - "@svgr/babel-preset": "^6.2.0", - "@svgr/hast-util-to-babel-ast": "^6.2.1", - "svg-parser": "^2.0.2" + "@babel/core": "^7.18.5", + "@svgr/babel-preset": "^6.3.1", + "@svgr/hast-util-to-babel-ast": "^6.3.1", + "svg-parser": "^2.0.4" }, "engines": { "node": ">=10" @@ -4672,15 +4170,54 @@ "@svgr/core": "^6.0.0" } }, + "node_modules/@svgr/plugin-jsx/node_modules/@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@svgr/plugin-jsx/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@svgr/plugin-svgo": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", - "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz", + "integrity": "sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw==", "dev": true, "dependencies": { "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "svgo": "^2.5.0" + "svgo": "^2.8.0" }, "engines": { "node": ">=10" @@ -5041,9 +4578,9 @@ "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" }, "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", "dev": true, "dependencies": { "@types/estree": "*", @@ -5051,9 +4588,9 @@ } }, "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "dependencies": { "@types/eslint": "*", @@ -5079,9 +4616,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -5133,9 +4670,9 @@ "dev": true }, "node_modules/@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "dependencies": { "@types/node": "*" @@ -5190,9 +4727,9 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-fccbsHKqFDXClBZTDLA43zl0+TbxyIwyzIzwwhvoJvhNjOErCdeX2xJbURimv2EbSVUGav001PaCJg4mZxMl4w==", "dev": true }, "node_modules/@types/minimatch": { @@ -5218,9 +4755,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.4.tgz", + "integrity": "sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==", "dev": true }, "node_modules/@types/prop-types": { @@ -5298,12 +4835,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "dependencies": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -5353,9 +4890,9 @@ } }, "node_modules/@types/uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz", + "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==", "dev": true, "dependencies": { "source-map": "^0.6.1" @@ -5401,9 +4938,9 @@ } }, "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -5653,27 +5190,6 @@ "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", @@ -5736,12 +5252,12 @@ } }, "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", + "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", "dev": true, "engines": { - "node": ">= 0.12.0" + "node": ">= 10.0.0" } }, "node_modules/adjust-sourcemap-loader": { @@ -5915,18 +5431,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -5940,9 +5444,9 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } @@ -5995,7 +5499,7 @@ "node_modules/archive-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", "dev": true, "optional": true, "dependencies": { @@ -6008,7 +5512,7 @@ "node_modules/archive-type/node_modules/file-type": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", "dev": true, "optional": true, "engines": { @@ -6055,7 +5559,7 @@ "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6073,16 +5577,16 @@ "node_modules/arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true, "engines": { "node": ">=0.10.0" } }, "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, "node_modules/array-includes": { @@ -6107,7 +5611,7 @@ "node_modules/array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "dependencies": { "array-uniq": "^1.0.1" @@ -6119,7 +5623,7 @@ "node_modules/array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6128,7 +5632,7 @@ "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6183,6 +5687,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -6209,7 +5731,7 @@ "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6221,15 +5743,6 @@ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, - "node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -6308,6 +5821,15 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "node_modules/axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -6347,27 +5869,6 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, "node_modules/babel-jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", @@ -6639,13 +6140,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "peerDependencies": { @@ -6741,7 +6242,7 @@ "node_modules/babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", "dev": true, "dependencies": { "babel-runtime": "^6.26.0", @@ -6753,14 +6254,14 @@ "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "dev": true, "hasInstallScript": true }, "node_modules/babel-polyfill/node_modules/regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==", "dev": true }, "node_modules/babel-preset-current-node-syntax": { @@ -6805,7 +6306,7 @@ "node_modules/babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "dev": true, "dependencies": { "core-js": "^2.4.0", @@ -6816,7 +6317,7 @@ "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", "dev": true, "hasInstallScript": true }, @@ -6852,7 +6353,7 @@ "node_modules/base/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { "is-descriptor": "^1.0.0" @@ -6861,44 +6362,6 @@ "node": ">=0.10.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -6923,7 +6386,7 @@ "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "node_modules/bcrypt-pbkdf": { @@ -6964,7 +6427,7 @@ "node_modules/bin-build/node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "optional": true, "dependencies": { @@ -6976,7 +6439,7 @@ "node_modules/bin-build/node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "optional": true, "dependencies": { @@ -6995,30 +6458,48 @@ "node_modules/bin-build/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { "node": ">=4" } }, - "node_modules/bin-build/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/bin-build/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "optional": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/bin-build/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "node_modules/bin-build/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-build/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } }, "node_modules/bin-check": { "version": "4.1.0", @@ -7037,7 +6518,7 @@ "node_modules/bin-check/node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "optional": true, "dependencies": { @@ -7049,7 +6530,7 @@ "node_modules/bin-check/node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "optional": true, "dependencies": { @@ -7068,30 +6549,48 @@ "node_modules/bin-check/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { "node": ">=4" } }, - "node_modules/bin-check/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/bin-check/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "optional": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/bin-check/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "node_modules/bin-check/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bin-check/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } }, "node_modules/bin-version": { "version": "3.1.0", @@ -7167,7 +6666,7 @@ "node_modules/bin-wrapper/node_modules/download/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true, "engines": { @@ -7187,7 +6686,7 @@ "node_modules/bin-wrapper/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { @@ -7226,7 +6725,7 @@ "node_modules/bin-wrapper/node_modules/got/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true, "engines": { @@ -7249,7 +6748,7 @@ "node_modules/bin-wrapper/node_modules/make-dir/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true, "engines": { @@ -7295,7 +6794,7 @@ "node_modules/bin-wrapper/node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true, "optional": true, "engines": { @@ -7305,7 +6804,7 @@ "node_modules/bin-wrapper/node_modules/url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "optional": true, "dependencies": { @@ -7359,6 +6858,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7371,7 +6879,7 @@ "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/body-parser/node_modules/qs": { @@ -7392,7 +6900,7 @@ "node_modules/bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", "dev": true, "dependencies": { "array-flatten": "^2.1.0", @@ -7403,12 +6911,6 @@ "multicast-dns-service-types": "^1.1.0" } }, - "node_modules/bonjour/node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -7456,9 +6958,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "funding": [ { @@ -7471,11 +6973,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" }, "bin": { "browserslist": "cli.js" @@ -7539,7 +7040,7 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "optional": true, "engines": { @@ -7549,7 +7050,7 @@ "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", "dev": true, "optional": true }, @@ -7566,9 +7067,9 @@ "dev": true }, "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, "engines": { "node": ">= 0.8" @@ -7602,7 +7103,7 @@ "node_modules/cacheable-request": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", "dev": true, "optional": true, "dependencies": { @@ -7618,7 +7119,7 @@ "node_modules/cacheable-request/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { @@ -7628,7 +7129,7 @@ "node_modules/cacheable-request/node_modules/lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", "dev": true, "optional": true, "engines": { @@ -7653,7 +7154,7 @@ "node_modules/cacheable-request/node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true, "optional": true, "engines": { @@ -7663,7 +7164,7 @@ "node_modules/cacheable-request/node_modules/sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, "optional": true, "dependencies": { @@ -7728,9 +7229,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "version": "1.0.30001374", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", + "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", "dev": true, "funding": [ { @@ -7807,12 +7308,6 @@ "node": ">=10" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "node_modules/charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -7924,7 +7419,7 @@ "node_modules/class-utils/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -7933,6 +7428,83 @@ "node": ">=0.10.0" } }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/classnames": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", @@ -7984,27 +7556,6 @@ "webpack": "*" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -8033,7 +7584,7 @@ "node_modules/clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "dev": true, "optional": true, "dependencies": { @@ -8043,7 +7594,7 @@ "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { "iojs": ">= 1.0.0", @@ -8059,7 +7610,7 @@ "node_modules/collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, "dependencies": { "map-visit": "^1.0.0", @@ -8142,7 +7693,7 @@ "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "node_modules/component-emitter": { @@ -8181,15 +7732,6 @@ "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -8202,7 +7744,7 @@ "node_modules/compression/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/concat-map": { @@ -8256,15 +7798,6 @@ "redux": "^3.6.0 || ^4.0.0" } }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -8325,7 +7858,7 @@ "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "node_modules/cookiejar": { @@ -8337,7 +7870,7 @@ "node_modules/copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8354,12 +7887,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", + "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", "dev": true, "dependencies": { - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", "semver": "7.0.0" }, "funding": { @@ -8428,19 +7961,17 @@ } }, "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4.8" + "node": ">= 8" } }, "node_modules/crypt": { @@ -8463,9 +7994,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", + "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", "dev": true, "engines": { "node": "^10 || ^12 || >=14" @@ -8502,6 +8033,18 @@ "webpack": "^4.27.0 || ^5.0.0" } }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/css-loader/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -8517,6 +8060,12 @@ "node": ">=10" } }, + "node_modules/css-loader/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/css-mediaquery": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", @@ -8622,36 +8171,36 @@ } }, "node_modules/cssnano-preset-default": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", - "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", + "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", "dev": true, "dependencies": { - "css-declaration-sorter": "^6.2.2", + "css-declaration-sorter": "^6.3.0", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.1", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", - "postcss-merge-rules": "^5.1.1", + "postcss-merge-longhand": "^5.1.6", + "postcss-merge-rules": "^5.1.2", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.2", - "postcss-minify-selectors": "^5.2.0", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", "postcss-normalize-charset": "^5.1.0", "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", "postcss-normalize-string": "^5.1.0", "postcss-normalize-timing-functions": "^5.1.0", "postcss-normalize-unicode": "^5.1.0", "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.1", + "postcss-ordered-values": "^5.1.3", "postcss-reduce-initial": "^5.1.0", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", @@ -8790,7 +8339,7 @@ "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -8834,7 +8383,7 @@ "node_modules/decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, "optional": true, "dependencies": { @@ -8862,7 +8411,7 @@ "node_modules/decompress-tar/node_modules/file-type": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "optional": true, "engines": { @@ -8914,7 +8463,7 @@ "node_modules/decompress-targz/node_modules/file-type": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "optional": true, "engines": { @@ -8924,7 +8473,7 @@ "node_modules/decompress-unzip": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", "dev": true, "optional": true, "dependencies": { @@ -8940,7 +8489,7 @@ "node_modules/decompress-unzip/node_modules/file-type": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", "dev": true, "optional": true, "engines": { @@ -8950,7 +8499,7 @@ "node_modules/decompress-unzip/node_modules/get-stream": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", "dev": true, "optional": true, "dependencies": { @@ -8964,7 +8513,7 @@ "node_modules/decompress-unzip/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true, "engines": { @@ -8987,7 +8536,7 @@ "node_modules/decompress/node_modules/make-dir/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true, "engines": { @@ -8997,7 +8546,7 @@ "node_modules/decompress/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true, "engines": { @@ -9048,20 +8597,6 @@ "node": ">= 10" } }, - "node_modules/default-gateway/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/default-gateway/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -9121,51 +8656,6 @@ "node": ">=8" } }, - "node_modules/default-gateway/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/default-gateway/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -9203,44 +8693,6 @@ "node": ">=0.10.0" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -9344,7 +8796,7 @@ "node_modules/detect-port-alt/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/diacritics": { @@ -9382,7 +8834,7 @@ "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "node_modules/dns-packet": { @@ -9398,7 +8850,7 @@ "node_modules/dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", "dev": true, "dependencies": { "buffer-indexof": "^1.0.0" @@ -9589,7 +9041,7 @@ "node_modules/download/node_modules/file-type": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "optional": true, "engines": { @@ -9599,7 +9051,7 @@ "node_modules/download/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { @@ -9622,7 +9074,7 @@ "node_modules/download/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true, "engines": { @@ -9636,9 +9088,9 @@ "dev": true }, "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true, "optional": true }, @@ -9655,13 +9107,13 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz", - "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==", + "version": "1.4.211", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", + "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", "dev": true }, "node_modules/email-prop-type": { @@ -9693,9 +9145,9 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "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/emojis-list": { @@ -9710,7 +9162,7 @@ "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "engines": { "node": ">= 0.8" @@ -9726,9 +9178,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -9860,12 +9312,12 @@ } }, "node_modules/error-stack-parser": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", - "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, "dependencies": { - "stackframe": "^1.1.1" + "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { @@ -9953,7 +9405,7 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "node_modules/escape-string-regexp": { @@ -9986,13 +9438,43 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" } }, "node_modules/escodegen/node_modules/source-map": { @@ -10005,47 +9487,57 @@ "node": ">=0.10.0" } }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -10053,49 +9545,59 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-config-airbnb": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz", - "integrity": "sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", "dev": true, "dependencies": { - "eslint-config-airbnb-base": "^14.1.0", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1" + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" }, "engines": { - "node": ">= 6" + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0", - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.19.0", - "eslint-plugin-react-hooks": "^2.5.0 || ^1.7.0" + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" } }, "node_modules/eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", - "object.entries": "^1.1.2" + "object.entries": "^1.1.5", + "semver": "^6.3.0" }, "engines": { - "node": ">= 6" + "node": "^10.12.0 || >=12.0.0" }, "peerDependencies": { - "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", - "eslint-plugin-import": "^2.22.1" + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/eslint-import-resolver-node": { @@ -10207,30 +9709,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "dependencies": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -10243,111 +9745,104 @@ } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "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", - "isarray": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/eslint-plugin-import/node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "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-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "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.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", + "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": "^2.2.1" + "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" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", - "dev": true, - "dependencies": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, "node_modules/eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", + "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", "dev": true, "dependencies": { - "array-includes": "^3.1.1", + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "string.prototype.matchall": "^4.0.7" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "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": ">=7" + "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + "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": { @@ -10362,6 +9857,34 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-react/node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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-plugin-react/node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -10384,126 +9907,227 @@ "node": ">=8.0.0" } }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=6" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "type-fest": "^0.8.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": ">= 4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "is-glob": "^4.0.3" }, "engines": { - "node": "*" + "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/eslint/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, "bin": { - "semver": "bin/semver.js" + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/eslint/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", "dev": true, "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/esprima": { @@ -10531,15 +10155,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -10552,7 +10167,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -10561,15 +10176,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -10582,7 +10188,7 @@ "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, "engines": { "node": ">= 0.6" @@ -10594,6 +10200,15 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/exec-buffer": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", @@ -10614,7 +10229,7 @@ "node_modules/exec-buffer/node_modules/cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "optional": true, "dependencies": { @@ -10626,7 +10241,7 @@ "node_modules/exec-buffer/node_modules/execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "optional": true, "dependencies": { @@ -10645,40 +10260,58 @@ "node_modules/exec-buffer/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { "node": ">=4" } }, - "node_modules/exec-buffer/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/exec-buffer/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/exec-buffer/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "optional": true, "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/exec-buffer/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/exec-buffer/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "optional": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/exec-buffer/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "node_modules/exec-buffer/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "optional": true + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } }, "node_modules/exec-sh": { "version": "0.3.6", @@ -10704,6 +10337,64 @@ "node": ">=6" } }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/executable": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", @@ -10720,7 +10411,7 @@ "node_modules/executable/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true, "engines": { @@ -10736,7 +10427,7 @@ "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -10745,7 +10436,7 @@ "node_modules/expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, "dependencies": { "debug": "^2.3.3", @@ -10772,7 +10463,7 @@ "node_modules/expand-brackets/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -10784,7 +10475,7 @@ "node_modules/expand-brackets/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -10793,10 +10484,96 @@ "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/expand-brackets/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/expect": { @@ -10850,9 +10627,9 @@ "dev": true }, "node_modules/express": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.0.tgz", - "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", @@ -10891,6 +10668,12 @@ "node": ">= 0.10.0" } }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, "node_modules/express/node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -10912,13 +10695,13 @@ "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/express/node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "node_modules/express/node_modules/qs": { @@ -10992,7 +10775,7 @@ "node_modules/extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, "dependencies": { "assign-symbols": "^1.0.0", @@ -11002,32 +10785,6 @@ "node": ">=0.10.0" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -11050,7 +10807,7 @@ "node_modules/extglob/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { "is-descriptor": "^1.0.0" @@ -11062,7 +10819,7 @@ "node_modules/extglob/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -11071,40 +10828,11 @@ "node": ">=0.10.0" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, "engines": { "node": ">=0.10.0" } @@ -11149,7 +10877,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "node_modules/fast-xml-parser": { @@ -11170,10 +10898,13 @@ } }, "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { "version": "1.13.0", @@ -11208,38 +10939,23 @@ "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "optional": true, "dependencies": { "pend": "~1.2.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/file-loader": { @@ -11274,7 +10990,7 @@ "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, "optional": true, "engines": { @@ -11347,7 +11063,7 @@ "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/find-cache-dir": { @@ -11426,35 +11142,37 @@ } }, "node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flat-cache/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "node_modules/focus-lock": { @@ -11498,7 +11216,7 @@ "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11626,6 +11344,18 @@ "node": ">=8" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -11680,18 +11410,24 @@ "node": ">=6" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" + "node": ">= 6" } }, "node_modules/form-urlencoded": { @@ -11734,7 +11470,7 @@ "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, "dependencies": { "map-cache": "^0.2.2" @@ -11746,7 +11482,7 @@ "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, "engines": { "node": ">= 0.6" @@ -11755,7 +11491,7 @@ "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "optional": true, "dependencies": { @@ -11841,7 +11577,7 @@ "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, "node_modules/functions-have-names": { @@ -11943,7 +11679,7 @@ "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11980,21 +11716,6 @@ "url": "https://github.com/imagemin/gisicle-bin?sponsor=1" } }, - "node_modules/gifsicle/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/gifsicle/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -12058,55 +11779,6 @@ "node": ">=8" } }, - "node_modules/gifsicle/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gifsicle/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -12170,6 +11842,18 @@ "node": ">=6" } }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -12182,7 +11866,7 @@ "node_modules/globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "dependencies": { "array-union": "^1.0.1", @@ -12198,7 +11882,7 @@ "node_modules/globby/node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12233,7 +11917,7 @@ "node_modules/got/node_modules/get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true, "engines": { @@ -12249,7 +11933,7 @@ "node_modules/growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true, "optional": true }, @@ -12325,7 +12009,7 @@ "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "engines": { "node": ">=4" } @@ -12392,7 +12076,7 @@ "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, "dependencies": { "get-value": "^2.0.6", @@ -12406,7 +12090,7 @@ "node_modules/has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -12425,7 +12109,7 @@ "node_modules/has-values/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "dependencies": { "kind-of": "^3.0.2" @@ -12437,7 +12121,7 @@ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -12449,7 +12133,7 @@ "node_modules/has-values/node_modules/kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -12497,7 +12181,7 @@ "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { "inherits": "^2.0.1", @@ -12625,7 +12309,7 @@ "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "node_modules/http-errors": { @@ -12645,9 +12329,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "node_modules/http-proxy": { @@ -12794,7 +12478,7 @@ "node_modules/identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, "dependencies": { "harmony-reflect": "^1.4.6" @@ -12922,21 +12606,6 @@ "node": ">=10" } }, - "node_modules/imagemin-mozjpeg/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/imagemin-mozjpeg/node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -13013,55 +12682,6 @@ "node": ">=8" } }, - "node_modules/imagemin-mozjpeg/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-mozjpeg/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/imagemin-optipng": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz", @@ -13094,21 +12714,6 @@ "node": ">=10" } }, - "node_modules/imagemin-pngquant/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/imagemin-pngquant/node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -13185,55 +12790,6 @@ "node": ">=8" } }, - "node_modules/imagemin-pngquant/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-pngquant/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-pngquant/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imagemin-pngquant/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/imagemin-svgo": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-9.0.0.tgz", @@ -13333,9 +12889,9 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "node_modules/immer": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", - "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==", + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", + "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", "dev": true, "funding": { "type": "opencollective", @@ -13343,13 +12899,10 @@ } }, "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "devOptional": true }, "node_modules/import-fresh": { "version": "3.3.0", @@ -13406,7 +12959,7 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "engines": { "node": ">=0.8.19" @@ -13441,100 +12994,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -13608,7 +13067,7 @@ "node_modules/into-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", "dev": true, "optional": true, "dependencies": { @@ -13628,45 +13087,27 @@ } }, "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true, "engines": { - "node": ">= 0.10" + "node": ">= 10" } }, "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" @@ -13809,30 +13250,12 @@ } }, "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "kind-of": "^6.0.0" }, "engines": { "node": ">=0.10.0" @@ -13853,28 +13276,19 @@ } }, "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -13891,10 +13305,13 @@ } }, "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, "engines": { "node": ">=0.10.0" } @@ -13902,7 +13319,7 @@ "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13964,7 +13381,7 @@ "node_modules/is-invalid-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", - "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", "dev": true, "dependencies": { "is-glob": "^2.0.0" @@ -13976,7 +13393,7 @@ "node_modules/is-invalid-path/node_modules/is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13985,7 +13402,7 @@ "node_modules/is-invalid-path/node_modules/is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dev": true, "dependencies": { "is-extglob": "^1.0.0" @@ -13997,7 +13414,7 @@ "node_modules/is-jpg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", + "integrity": "sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==", "dev": true, "optional": true, "engines": { @@ -14007,7 +13424,7 @@ "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", "dev": true, "optional": true }, @@ -14091,7 +13508,7 @@ "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "optional": true, "engines": { @@ -14180,7 +13597,7 @@ "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14245,7 +13662,7 @@ "node_modules/is-valid-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", - "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", "dev": true, "dependencies": { "is-invalid-path": "^0.1.0" @@ -14294,7 +13711,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "node_modules/iso-639-1": { @@ -14308,7 +13725,7 @@ "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14437,9 +13854,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -14494,20 +13911,6 @@ "node": ">= 10.14.2" } }, - "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/jest-changed-files/node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -14579,49 +13982,228 @@ "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/jest-cli/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/jest-cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "p-locate": "^4.1.0" }, - "bin": { - "node-which": "bin/node-which" + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" }, "engines": { - "node": ">= 8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-cli/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/jest-config": { @@ -15402,19 +14984,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-resolve/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -15424,86 +14993,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-resolve/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-resolve/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15525,15 +15014,6 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", @@ -15815,15 +15295,6 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15989,6 +15460,18 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -16016,6 +15499,12 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/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/jest-util": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", @@ -16313,230 +15802,6 @@ "node": ">=8" } }, - "node_modules/jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/jest/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jquery": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", @@ -16613,20 +15878,6 @@ } } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -16642,7 +15893,7 @@ "node_modules/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", "dev": true, "optional": true }, @@ -16672,7 +15923,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json-stringify-safe": { @@ -16721,13 +15972,13 @@ } }, "node_modules/jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", + "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", "dev": true, "dependencies": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "array-includes": "^3.1.5", + "object.assign": "^4.1.2" }, "engines": { "node": ">=4.0" @@ -16784,6 +16035,21 @@ "node": ">= 8" } }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, "node_modules/lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", @@ -16803,13 +16069,13 @@ } }, "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -16824,9 +16090,9 @@ } }, "node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true, "engines": { "node": ">=10" @@ -16837,42 +16103,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, - "node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -16994,7 +16224,7 @@ "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "node_modules/lodash.uniqby": { @@ -17042,15 +16272,14 @@ } }, "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==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, + "optional": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "node_modules/lz-string": { @@ -17108,7 +16337,7 @@ "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -17117,7 +16346,7 @@ "node_modules/map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "dependencies": { "object-visit": "^1.0.0" @@ -17169,19 +16398,19 @@ "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "dependencies": { - "fs-monkey": "1.0.3" + "fs-monkey": "^1.0.3" }, "engines": { "node": ">= 4.0.0" @@ -17190,7 +16419,7 @@ "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "node_modules/merge-stream": { @@ -17211,7 +16440,7 @@ "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "engines": { "node": ">= 0.6" @@ -17243,21 +16472,21 @@ } }, "node_modules/mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "mime-db": "1.49.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -17332,9 +16561,9 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -17361,18 +16590,6 @@ "node": ">=0.10.0" } }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -17448,19 +16665,13 @@ "node_modules/multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true }, "node_modules/nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -17494,7 +16705,7 @@ "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "node_modules/nearley": { @@ -17568,7 +16779,7 @@ "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node_modules/node-notifier": { @@ -17586,6 +16797,19 @@ "which": "^2.0.2" } }, + "node_modules/node-notifier/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, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-notifier/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -17612,26 +16836,17 @@ "uuid": "dist/bin/uuid" } }, - "node_modules/node-notifier/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/node-notifier/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, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } + "optional": true }, "node_modules/node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "node_modules/normalize-package-data": { @@ -17658,7 +16873,7 @@ "node_modules/normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -17693,7 +16908,7 @@ "node_modules/npm-conf/node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true, "engines": { @@ -17703,7 +16918,7 @@ "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "dependencies": { "path-key": "^2.0.0" @@ -17712,6 +16927,15 @@ "node": ">=4" } }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/nth-check": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", @@ -17725,9 +16949,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", "dev": true }, "node_modules/oauth-sign": { @@ -17750,7 +16974,7 @@ "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "dependencies": { "copy-descriptor": "^0.1.0", @@ -17764,7 +16988,7 @@ "node_modules/object-copy/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -17773,16 +16997,63 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-copy/node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-copy/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -17830,7 +17101,7 @@ "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "dependencies": { "isobject": "^3.0.0" @@ -17886,10 +17157,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "dependencies": { "isobject": "^3.0.1" @@ -17992,17 +17276,17 @@ } }, "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" }, "engines": { "node": ">= 0.8.0" @@ -18039,15 +17323,6 @@ "node": ">=4" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ow": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/ow/-/ow-0.17.0.tgz", @@ -18102,7 +17377,7 @@ "node_modules/p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", "dev": true, "optional": true, "dependencies": { @@ -18115,7 +17390,7 @@ "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { "node": ">=4" @@ -18124,7 +17399,7 @@ "node_modules/p-is-promise": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", "dev": true, "optional": true, "engines": { @@ -18173,7 +17448,7 @@ "node_modules/p-map-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", "dev": true, "optional": true, "dependencies": { @@ -18198,7 +17473,7 @@ "node_modules/p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", "dev": true, "optional": true, "engines": { @@ -18221,7 +17496,7 @@ "node_modules/p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", "dev": true, "optional": true, "dependencies": { @@ -18315,7 +17590,7 @@ "node_modules/pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18341,16 +17616,16 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-parse": { @@ -18377,7 +17652,7 @@ "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true, "optional": true }, @@ -18417,7 +17692,7 @@ "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18426,7 +17701,7 @@ "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "dependencies": { "pinkie": "^2.0.0" @@ -18575,7 +17850,7 @@ "node_modules/pkg-up/node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "engines": { "node": ">=4" @@ -18600,21 +17875,6 @@ "node": ">=10" } }, - "node_modules/pngquant-bin/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/pngquant-bin/node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -18691,55 +17951,6 @@ "node": ">=8" } }, - "node_modules/pngquant-bin/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pngquant-bin/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pngquant-bin/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pngquant-bin/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/popper.js": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", @@ -18777,7 +17988,7 @@ "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -18833,11 +18044,12 @@ } }, "node_modules/postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", "dev": true, "dependencies": { + "browserslist": "^4.20.3", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -18848,9 +18060,9 @@ } }, "node_modules/postcss-discard-comments": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", - "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", "dev": true, "engines": { "node": "^10 || ^12 || >=14.0" @@ -18917,6 +18129,18 @@ "webpack": "^5.0.0" } }, + "node_modules/postcss-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/postcss-loader/node_modules/semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -18932,10 +18156,16 @@ "node": ">=10" } }, + "node_modules/postcss-loader/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/postcss-merge-longhand": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", - "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", + "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0", @@ -18949,9 +18179,9 @@ } }, "node_modules/postcss-merge-rules": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", - "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", "dev": true, "dependencies": { "browserslist": "^4.16.6", @@ -18999,9 +18229,9 @@ } }, "node_modules/postcss-minify-params": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", - "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", "dev": true, "dependencies": { "browserslist": "^4.16.6", @@ -19016,9 +18246,9 @@ } }, "node_modules/postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.5" @@ -19117,9 +18347,9 @@ } }, "node_modules/postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -19132,9 +18362,9 @@ } }, "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", "dev": true, "dependencies": { "postcss-value-parser": "^4.2.0" @@ -19224,9 +18454,9 @@ } }, "node_modules/postcss-ordered-values": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", - "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", "dev": true, "dependencies": { "cssnano-utils": "^3.1.0", @@ -19336,9 +18566,9 @@ "dev": true }, "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -19347,7 +18577,7 @@ "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "dev": true, "optional": true, "engines": { @@ -19431,15 +18661,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -19488,7 +18709,7 @@ "node_modules/proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, "optional": true }, @@ -19505,10 +18726,19 @@ "node": ">= 0.10" } }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true, "optional": true }, @@ -19647,6 +18877,15 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/react": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", @@ -19739,62 +18978,19 @@ "node": ">=14" } }, - "node_modules/react-dev-utils/node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/react-dev-utils/node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/react-dev-utils/node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "node_modules/react-dev-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/react-dev-utils/node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "node": ">=8" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/react-dev-utils/node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/react-dev-utils/node_modules/array-union": { @@ -19822,33 +19018,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/react-dev-utils/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/react-dev-utils/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-dev-utils/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -19867,20 +19036,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/react-dev-utils/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/react-dev-utils/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -19931,36 +19086,6 @@ "node": ">= 12.13.0" } }, - "node_modules/react-dev-utils/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-dev-utils/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/react-dev-utils/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -19970,19 +19095,16 @@ "node": ">=8" } }, - "node_modules/react-dev-utils/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/react-dev-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, "node_modules/react-dom": { @@ -20513,118 +19635,105 @@ } }, "node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "dependencies": { - "pify": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/read-pkg/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/readable-stream": { @@ -20645,7 +19754,7 @@ "node_modules/readable-stream/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, "node_modules/readdirp": { @@ -20684,6 +19793,18 @@ "node": ">=0.10.0" } }, + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -20779,18 +19900,21 @@ } }, "node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "engines": { - "node": ">=6.5.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "dependencies": { "regenerate": "^1.4.2", @@ -20825,7 +19949,7 @@ "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" @@ -20843,7 +19967,7 @@ "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "node_modules/renderkid": { @@ -20871,7 +19995,7 @@ "node_modules/repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, "engines": { "node": ">=0.10" @@ -20948,7 +20072,7 @@ "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -20972,7 +20096,7 @@ "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "node_modules/reselect": { @@ -21021,7 +20145,7 @@ "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, @@ -21054,26 +20178,13 @@ "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "optional": true, "dependencies": { "lowercase-keys": "^1.0.0" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -21148,15 +20259,6 @@ "rtlcss": "bin/rtlcss.js" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -21180,24 +20282,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -21206,7 +20290,7 @@ "node_modules/safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "dependencies": { "ret": "~0.1.10" @@ -21276,7 +20360,7 @@ "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -21288,7 +20372,7 @@ "node_modules/sane/node_modules/fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "dependencies": { "extend-shallow": "^2.0.1", @@ -21303,7 +20387,7 @@ "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -21318,10 +20402,19 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sane/node_modules/is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "dependencies": { "kind-of": "^3.0.2" @@ -21333,7 +20426,7 @@ "node_modules/sane/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -21369,7 +20462,7 @@ "node_modules/sane/node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "dependencies": { "remove-trailing-separator": "^1.0.1" @@ -21381,7 +20474,7 @@ "node_modules/sane/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -21446,12 +20539,6 @@ } } }, - "node_modules/sass/node_modules/immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", - "dev": true - }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -21521,7 +20608,7 @@ "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "node_modules/selfsigned": { @@ -21558,7 +20645,7 @@ "node_modules/semver-truncate": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", "dev": true, "optional": true, "dependencies": { @@ -21604,7 +20691,7 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/send/node_modules/ms": { @@ -21625,7 +20712,7 @@ "node_modules/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -21652,7 +20739,7 @@ "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { "node": ">= 0.6" @@ -21661,7 +20748,7 @@ "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "dependencies": { "depd": "~1.1.2", @@ -21676,13 +20763,13 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { @@ -21694,7 +20781,7 @@ "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "engines": { "node": ">= 0.6" @@ -21718,7 +20805,7 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "node_modules/set-value": { @@ -21739,7 +20826,7 @@ "node_modules/set-value/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -21748,6 +20835,15 @@ "node": ">=0.10.0" } }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -21777,24 +20873,24 @@ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/shell-quote": { @@ -21871,29 +20967,6 @@ "node": ">=6" } }, - "node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -21930,7 +21003,7 @@ "node_modules/snapdragon-node/node_modules/define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "dependencies": { "is-descriptor": "^1.0.0" @@ -21939,44 +21012,6 @@ "node": ">=0.10.0" } }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", @@ -21998,7 +21033,7 @@ "node_modules/snapdragon-util/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -22019,7 +21054,7 @@ "node_modules/snapdragon/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -22031,7 +21066,7 @@ "node_modules/snapdragon/node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "dependencies": { "is-extendable": "^0.1.0" @@ -22040,10 +21075,96 @@ "node": ">=0.10.0" } }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/snapdragon/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "node_modules/snapdragon/node_modules/source-map-resolve": { @@ -22083,7 +21204,7 @@ "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", "dev": true, "optional": true, "dependencies": { @@ -22096,7 +21217,7 @@ "node_modules/sort-keys-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", "dev": true, "optional": true, "dependencies": { @@ -22328,6 +21449,7 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true }, "node_modules/stack-utils": { @@ -22352,15 +21474,15 @@ } }, "node_modules/stackframe": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", - "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true }, "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "dependencies": { "define-property": "^0.2.5", @@ -22373,7 +21495,7 @@ "node_modules/static-extend/node_modules/define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "dependencies": { "is-descriptor": "^0.1.0" @@ -22382,6 +21504,83 @@ "node": ">=0.10.0" } }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -22435,6 +21634,12 @@ "node": ">=8" } }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/string.prototype.matchall": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", @@ -22509,22 +21714,13 @@ "node": ">=8" } }, - "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-dirs": { @@ -22540,7 +21736,7 @@ "node_modules/strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true, "engines": { "node": ">=0.10.0" @@ -22666,6 +21862,20 @@ "ms": "^2.1.1" } }, + "node_modules/superagent/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22711,6 +21921,18 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", @@ -22766,71 +21988,6 @@ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-4.0.0.tgz", "integrity": "sha512-H1XoH1URcBOa/rZZWxLxHCtOdVUEev+9vo5YdYhC9tCY4wnybX+VQrCYuy9ubkg69fCBxCONJOSLGfw0DWMffQ==" }, - "node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/table/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -22862,7 +22019,7 @@ "node_modules/temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, "optional": true, "engines": { @@ -22872,7 +22029,7 @@ "node_modules/tempfile": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", "dev": true, "optional": true, "dependencies": { @@ -22918,15 +22075,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "engines": { @@ -22974,15 +22131,6 @@ "node": ">= 10.13.0" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -23021,7 +22169,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/throat": { @@ -23033,8 +22181,9 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "optional": true }, "node_modules/thunky": { "version": "1.1.0", @@ -23045,7 +22194,7 @@ "node_modules/timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "dev": true, "optional": true, "engines": { @@ -23062,18 +22211,6 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -23098,7 +22235,7 @@ "node_modules/to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "dependencies": { "kind-of": "^3.0.2" @@ -23116,7 +22253,7 @@ "node_modules/to-object-path/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "dependencies": { "is-buffer": "^1.1.5" @@ -23208,7 +22345,7 @@ "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "optional": true, "dependencies": { @@ -23242,6 +22379,15 @@ "json5": "lib/cli.js" } }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", @@ -23266,12 +22412,12 @@ "dev": true }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" @@ -23287,14 +22433,12 @@ } }, "node_modules/type-fest": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.1.tgz", - "integrity": "sha512-hXYyrPFwETT2swFLHeoKtJrvSF/ftG/sA15/8nGaLuaDGfVAaq8DYFpu4yOyV4tzp082WqnTEoMsm3flKMI2FQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "optional": true, - "peer": true, "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -23429,6 +22573,15 @@ "node": ">=0.10.0" } }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/universal-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", @@ -23450,7 +22603,7 @@ "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, "engines": { "node": ">= 0.8" @@ -23459,7 +22612,7 @@ "node_modules/unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "dependencies": { "has-value": "^0.3.1", @@ -23472,7 +22625,7 @@ "node_modules/unset-value/node_modules/has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "dependencies": { "get-value": "^2.0.3", @@ -23486,7 +22639,7 @@ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "dependencies": { "isarray": "1.0.0" @@ -23498,7 +22651,7 @@ "node_modules/unset-value/node_modules/has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -23507,9 +22660,35 @@ "node_modules/unset-value/node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, + "node_modules/update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -23522,7 +22701,7 @@ "node_modules/urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true }, @@ -23556,7 +22735,7 @@ "node_modules/url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "dev": true, "optional": true, "dependencies": { @@ -23569,7 +22748,7 @@ "node_modules/url-to-options": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", "dev": true, "optional": true, "engines": { @@ -23629,7 +22808,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "node_modules/utila": { @@ -23641,7 +22820,7 @@ "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, "engines": { "node": ">= 0.4.0" @@ -23678,9 +22857,9 @@ } }, "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { "node": ">= 8" @@ -23704,7 +22883,7 @@ "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, "engines": { "node": ">= 0.8" @@ -23763,9 +22942,9 @@ } }, "node_modules/watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -24013,50 +23192,6 @@ "node": ">= 10" } }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/webpack-cli/node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -24070,29 +23205,14 @@ "node": ">=10.0.0" } }, - "node_modules/webpack-cli/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, "dependencies": { "colorette": "^2.0.10", - "memfs": "^3.4.1", + "memfs": "^3.4.3", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" @@ -24137,9 +23257,9 @@ } }, "node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { @@ -24268,15 +23388,15 @@ } }, "node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "node_modules/webpack-dev-server/node_modules/del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "dependencies": { "globby": "^11.0.1", @@ -24315,15 +23435,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/webpack-dev-server/node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -24413,9 +23524,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "dev": true, "engines": { "node": ">=10.0.0" @@ -24465,15 +23576,6 @@ "node": ">=0.10.0" } }, - "node_modules/webpack/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/webpack/node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -24536,15 +23638,18 @@ } }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { @@ -24565,7 +23670,7 @@ "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "node_modules/wildcard": { @@ -24638,18 +23743,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "node_modules/write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -24663,9 +23756,9 @@ } }, "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "engines": { "node": ">=8.3.0" @@ -24695,15 +23788,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xregexp": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.1.tgz", - "integrity": "sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==", - "dev": true, - "dependencies": { - "@babel/runtime-corejs3": "^7.12.1" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -24724,10 +23808,11 @@ } }, "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 + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "optional": true }, "node_modules/yaml": { "version": "1.10.2", @@ -24767,7 +23852,7 @@ "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "optional": true, "dependencies": { @@ -24909,6 +23994,28 @@ "@algolia/requester-common": "4.6.0" } }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, "@babel/cli": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.16.0.tgz", @@ -24927,17 +24034,17 @@ } }, "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", "requires": { - "@babel/highlight": "^7.14.5" + "@babel/highlight": "^7.18.6" } }, "@babel/compat-data": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", - "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", "dev": true }, "@babel/core": { @@ -24963,42 +24070,6 @@ "source-map": "^0.5.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -25007,99 +24078,64 @@ } } }, - "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "@babel/eslint-parser": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" }, "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } } } }, + "@babel/generator": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", + "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-compilation-targets": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", - "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", "semver": "^6.3.0" }, "dependencies": { @@ -25112,40 +24148,38 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", - "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", - "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", + "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", "resolve": "^1.14.2", @@ -25161,480 +24195,223 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } - } + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true }, "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "dev": true, "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "dev": true, "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", "dev": true, "requires": { - "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.9" } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "requires": { - "@babel/types": "^7.14.5" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/helper-simple-access": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", - "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", "dev": true, "requires": { - "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", "dev": true, "requires": { - "@babel/types": "^7.16.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.9" } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "dev": true, "requires": { - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.18.6" } }, + "@babel/helper-string-parser": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + }, "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz", + "integrity": "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" } }, "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", "requires": { - "@babel/helper-validator-identifier": "^7.14.5", + "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz", + "integrity": "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, @@ -25649,73 +24426,73 @@ } }, "@babel/plugin-proposal-class-static-block": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", - "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.6", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, @@ -25733,56 +24510,56 @@ } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-async-generators": { @@ -25858,12 +24635,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -25939,449 +24716,389 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz", + "integrity": "sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-destructuring": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", - "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", - "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.17.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", - "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-identifier": "^7.18.6", "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.17.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz", - "integrity": "sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz", + "integrity": "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", - "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", + "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "dependencies": { - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.10" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.7" + "@babel/plugin-transform-react-jsx": "^7.18.6" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", - "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", "dev": true, "requires": { + "@babel/helper-plugin-utils": "^7.18.6", "regenerator-transform": "^0.15.0" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-typescript": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz", - "integrity": "sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz", + "integrity": "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-typescript": "^7.16.7" + "@babel/helper-create-class-features-plugin": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-typescript": "^7.18.6" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.9" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/preset-env": { @@ -26466,22 +25183,6 @@ "semver": "^6.3.0" }, "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -26518,14 +25219,14 @@ } }, "@babel/preset-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz", - "integrity": "sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-typescript": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" } }, "@babel/runtime": { @@ -26546,116 +25247,41 @@ } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" } }, "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz", + "integrity": "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", - "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "requires": { - "@babel/helper-validator-identifier": "^7.14.9", + "@babel/helper-string-parser": "^7.18.10", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -26692,31 +25318,31 @@ "integrity": "sha512-ne2ZKF1r0akkt0rEzCAQAk4cTDTI2GiWCpc+T7ldQpw9X57OnUB16dKsFNe40C9uEjL5h3Ps/ZsFM5dm4cIkEQ==" }, "@edx/eslint-config": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@edx/eslint-config/-/eslint-config-3.0.0.tgz", - "integrity": "sha512-3vMX3/vqYxpJK/XKGRjWlsvcIkOQYMxJ1uXcVl70HiQda31xWW4qpg2OTevEdnYo5vThSBVMFe7lRmMpMNDR7Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@edx/eslint-config/-/eslint-config-3.1.0.tgz", + "integrity": "sha512-Okv8vkmX+qe+joD7h9DcT9JdRIyy6jJSVWbIHr2dAHKuk5swVFO92JvhC2pYtMg2EPKA1P1Hmz8cmmfw6QoTZw==", "dev": true, "requires": {} }, "@edx/frontend-build": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-11.0.2.tgz", - "integrity": "sha512-JGR8UEfxX+td1AeNqLVZgvEeHMmoIktHufC168fl55KVkPuQ7gje/anRFETkK9SekvlCeAJ+hecZj6/WSJ+8jA==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.0.3.tgz", + "integrity": "sha512-q/BoMntXSXSXfSTUpr7G051jrqkAvEFRQHG4+R2rPMQX+Ok2FSE9HTa74kkEP2H2Ij6x5VHXhU5F1powu/x6Zw==", "dev": true, "requires": { "@babel/cli": "7.16.0", "@babel/core": "7.16.0", + "@babel/eslint-parser": "7.18.2", "@babel/plugin-proposal-class-properties": "7.16.0", "@babel/plugin-proposal-object-rest-spread": "7.16.0", "@babel/plugin-syntax-dynamic-import": "7.8.3", "@babel/preset-env": "7.16.4", "@babel/preset-react": "7.16.0", - "@edx/eslint-config": "3.0.0", + "@edx/eslint-config": "3.1.0", "@edx/new-relic-source-map-webpack-plugin": "1.0.1", "@pmmmwh/react-refresh-webpack-plugin": "0.5.3", "@svgr/webpack": "6.2.1", "autoprefixer": "10.2.6", - "babel-eslint": "10.1.0", "babel-jest": "26.6.3", "babel-loader": "8.2.3", "babel-plugin-react-intl": "7.9.4", @@ -26727,12 +25353,12 @@ "cssnano": "5.0.12", "dotenv": "8.2.0", "dotenv-webpack": "7.0.3", - "eslint": "6.8.0", - "eslint-config-airbnb": "18.1.0", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-react": "7.19.0", - "eslint-plugin-react-hooks": "1.7.0", + "eslint": "8.18.0", + "eslint-config-airbnb": "19.0.4", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-jsx-a11y": "6.5.1", + "eslint-plugin-react": "7.30.0", + "eslint-plugin-react-hooks": "4.6.0", "file-loader": "6.2.0", "html-webpack-plugin": "5.5.0", "identity-obj-proxy": "3.0.0", @@ -27111,10 +25737,59 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" }, + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, "@formatjs/ecma402-abstract": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz", - "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz", + "integrity": "sha512-Mv027hcLFjE45K8UJ8PjRpdDGfR0aManEFj1KzoN8zXNveHGEygpZGfFf/FTTMl+QEVSrPAUlyxaCApvmv47AQ==", "dev": true, "requires": { "tslib": "^2.0.1" @@ -27252,17 +25927,6 @@ "requires": { "@formatjs/ecma402-abstract": "1.4.0", "tslib": "^2.0.1" - }, - "dependencies": { - "@formatjs/ecma402-abstract": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz", - "integrity": "sha512-Mv027hcLFjE45K8UJ8PjRpdDGfR0aManEFj1KzoN8zXNveHGEygpZGfFf/FTTMl+QEVSrPAUlyxaCApvmv47AQ==", - "dev": true, - "requires": { - "tslib": "^2.0.1" - } - } } }, "@formatjs/ts-transformer": { @@ -27276,6 +25940,15 @@ "typescript": "^4.0" }, "dependencies": { + "@formatjs/ecma402-abstract": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.5.0.tgz", + "integrity": "sha512-wXv36yo+mfWllweN0Fq7sUs7PUiNopn7I0JpLTe3hGu6ZMR4CV7LqK1llhB18pndwpKoafQKb1et2DCJAOW20Q==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } + }, "intl-messageformat-parser": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-6.1.2.tgz", @@ -27333,6 +26006,23 @@ "prop-types": "^15.7.2" } }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -28018,9 +26708,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -28076,143 +26766,158 @@ } }, "@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz", + "integrity": "sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==", "dev": true, "requires": {} }, "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz", - "integrity": "sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz", + "integrity": "sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==", "dev": true, "requires": {} }, "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz", - "integrity": "sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz", + "integrity": "sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==", "dev": true, "requires": {} }, "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz", - "integrity": "sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz", + "integrity": "sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==", "dev": true, "requires": {} }, "@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz", - "integrity": "sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz", + "integrity": "sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==", "dev": true, "requires": {} }, "@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz", - "integrity": "sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz", + "integrity": "sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==", "dev": true, "requires": {} }, "@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz", - "integrity": "sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz", + "integrity": "sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==", "dev": true, "requires": {} }, "@svgr/babel-plugin-transform-svg-component": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.2.0.tgz", - "integrity": "sha512-bhYIpsORb++wpsp91fymbFkf09Z/YEKR0DnFjxvN+8JHeCUD2unnh18jIMKnDJTWtvpTaGYPXELVe4OOzFI0xg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz", + "integrity": "sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==", "dev": true, "requires": {} }, "@svgr/babel-preset": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.2.0.tgz", - "integrity": "sha512-4WQNY0J71JIaL03DRn0vLiz87JXx0b9dYm2aA8XHlQJQoixMl4r/soYHm8dsaJZ3jWtkCiOYy48dp9izvXhDkQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.3.1.tgz", + "integrity": "sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==", "dev": true, "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "^6.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "^6.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "^6.0.0", - "@svgr/babel-plugin-transform-svg-component": "^6.2.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.3.1", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.3.1", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.3.1", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.3.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.3.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.3.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.3.1", + "@svgr/babel-plugin-transform-svg-component": "^6.3.1" } }, "@svgr/core": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.2.1.tgz", - "integrity": "sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz", + "integrity": "sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==", "dev": true, "requires": { - "@svgr/plugin-jsx": "^6.2.1", + "@svgr/plugin-jsx": "^6.3.1", "camelcase": "^6.2.0", "cosmiconfig": "^7.0.1" } }, "@svgr/hast-util-to-babel-ast": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.2.1.tgz", - "integrity": "sha512-pt7MMkQFDlWJVy9ULJ1h+hZBDGFfSCwlBNW1HkLnVi7jUhyEXUaGYWi1x6bM2IXuAR9l265khBT4Av4lPmaNLQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.3.1.tgz", + "integrity": "sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==", "dev": true, "requires": { - "@babel/types": "^7.15.6", - "entities": "^3.0.1" + "@babel/types": "^7.18.4", + "entities": "^4.3.0" }, "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, "entities": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", + "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", "dev": true } } }, "@svgr/plugin-jsx": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.2.1.tgz", - "integrity": "sha512-u+MpjTsLaKo6r3pHeeSVsh9hmGRag2L7VzApWIaS8imNguqoUwDq/u6U/NDmYs/KAsrmtBjOEaAAPbwNGXXp1g==", - "dev": true, - "requires": { - "@babel/core": "^7.15.5", - "@svgr/babel-preset": "^6.2.0", - "@svgr/hast-util-to-babel-ast": "^6.2.1", - "svg-parser": "^2.0.2" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz", + "integrity": "sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==", + "dev": true, + "requires": { + "@babel/core": "^7.18.5", + "@svgr/babel-preset": "^6.3.1", + "@svgr/hast-util-to-babel-ast": "^6.3.1", + "svg-parser": "^2.0.4" + }, + "dependencies": { + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@svgr/plugin-svgo": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.2.0.tgz", - "integrity": "sha512-oDdMQONKOJEbuKwuy4Np6VdV6qoaLLvoY86hjvQEgU82Vx1MSWRyYms6Sl0f+NtqxLI/rDVufATbP/ev996k3Q==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz", + "integrity": "sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw==", "dev": true, "requires": { "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "svgo": "^2.5.0" + "svgo": "^2.8.0" } }, "@svgr/webpack": { @@ -28489,9 +27194,9 @@ "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" }, "@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", "dev": true, "requires": { "@types/estree": "*", @@ -28499,9 +27204,9 @@ } }, "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", "dev": true, "requires": { "@types/eslint": "*", @@ -28527,9 +27232,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.30", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", + "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", "dev": true, "requires": { "@types/node": "*", @@ -28581,9 +27286,9 @@ "dev": true }, "@types/http-proxy": { - "version": "1.17.8", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", - "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", "dev": true, "requires": { "@types/node": "*" @@ -28638,9 +27343,9 @@ "dev": true }, "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-fccbsHKqFDXClBZTDLA43zl0+TbxyIwyzIzwwhvoJvhNjOErCdeX2xJbURimv2EbSVUGav001PaCJg4mZxMl4w==", "dev": true }, "@types/minimatch": { @@ -28666,9 +27371,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@types/prettier": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.0.tgz", - "integrity": "sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.4.tgz", + "integrity": "sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==", "dev": true }, "@types/prop-types": { @@ -28745,12 +27450,12 @@ } }, "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", "dev": true, "requires": { - "@types/mime": "^1", + "@types/mime": "*", "@types/node": "*" } }, @@ -28800,9 +27505,9 @@ } }, "@types/uglify-js": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.2.tgz", - "integrity": "sha512-/xFrPIo+4zOeNGtVMbf9rUm0N+i4pDf1ynExomqtokIJmVzR3962lJ1UE+MmexMkA0cmN9oTzg5Xcbwge0Ij2Q==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz", + "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -28855,9 +27560,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -29079,23 +27784,6 @@ "requires": { "mime-types": "~2.1.34", "negotiator": "0.6.3" - }, - "dependencies": { - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - } } }, "acorn": { @@ -29143,9 +27831,9 @@ "dev": true }, "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", + "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", "dev": true }, "adjust-sourcemap-loader": { @@ -29277,14 +27965,6 @@ "dev": true, "requires": { "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } } }, "ansi-html-community": { @@ -29294,9 +27974,9 @@ "dev": true }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -29326,7 +28006,7 @@ "archive-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", "dev": true, "optional": true, "requires": { @@ -29336,7 +28016,7 @@ "file-type": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", "dev": true, "optional": true } @@ -29378,7 +28058,7 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", "dev": true }, "arr-flatten": { @@ -29390,13 +28070,13 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true }, "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", "dev": true }, "array-includes": { @@ -29415,7 +28095,7 @@ "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -29424,13 +28104,13 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", "dev": true }, "array.prototype.filter": { @@ -29467,6 +28147,18 @@ "es-shim-unscopables": "^1.0.0" } }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -29490,7 +28182,7 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", "dev": true }, "ast-types-flow": { @@ -29499,12 +28191,6 @@ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, "async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -29558,6 +28244,12 @@ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", "dev": true }, + "axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true + }, "axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -29591,20 +28283,6 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, "babel-jest": { "version": "26.6.3", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", @@ -29814,13 +28492,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", + "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.2", "semver": "^6.1.1" }, "dependencies": { @@ -29900,7 +28578,7 @@ "babel-polyfill": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", - "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "integrity": "sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ==", "dev": true, "requires": { "babel-runtime": "^6.26.0", @@ -29917,7 +28595,7 @@ "regenerator-runtime": { "version": "0.10.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "integrity": "sha512-02YopEIhAgiBHWeoTiA8aitHDt8z6w+rQqNuIftlM+ZtvSl/brTouaU7DW6GO/cHtvxJvS4Hwv2ibKdxIRi24w==", "dev": true } } @@ -29955,7 +28633,7 @@ "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "dev": true, "requires": { "core-js": "^2.4.0", @@ -29999,40 +28677,11 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -30046,7 +28695,7 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, "bcrypt-pbkdf": { @@ -30081,7 +28730,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "optional": true, "requires": { @@ -30093,7 +28742,7 @@ "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "optional": true, "requires": { @@ -30109,27 +28758,36 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "optional": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^1.0.0" } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "optional": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -30147,7 +28805,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "optional": true, "requires": { @@ -30159,7 +28817,7 @@ "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "optional": true, "requires": { @@ -30175,27 +28833,36 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "optional": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^1.0.0" } }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "optional": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "optional": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -30261,7 +28928,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -30277,7 +28944,7 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true }, @@ -30310,7 +28977,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -30329,7 +28996,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -30365,14 +29032,14 @@ "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true, "optional": true }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", "dev": true, "optional": true, "requires": { @@ -30418,6 +29085,12 @@ "unpipe": "1.0.0" }, "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -30430,7 +29103,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "qs": { @@ -30447,7 +29120,7 @@ "bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", "dev": true, "requires": { "array-flatten": "^2.1.0", @@ -30456,14 +29129,6 @@ "dns-txt": "^2.0.2", "multicast-dns": "^6.0.1", "multicast-dns-service-types": "^1.1.0" - }, - "dependencies": { - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - } } }, "boolbase": { @@ -30503,16 +29168,15 @@ "dev": true }, "browserslist": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz", - "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001332", - "electron-to-chromium": "^1.4.118", - "escalade": "^3.1.1", - "node-releases": "^2.0.3", - "picocolors": "^1.0.0" + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" } }, "bser": { @@ -30556,14 +29220,14 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "optional": true }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", "dev": true, "optional": true }, @@ -30580,9 +29244,9 @@ "dev": true }, "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true }, "cache-base": { @@ -30610,7 +29274,7 @@ "cacheable-request": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", "dev": true, "optional": true, "requires": { @@ -30626,14 +29290,14 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true }, "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", "dev": true, "optional": true }, @@ -30652,14 +29316,14 @@ "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", "dev": true, "optional": true }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", "dev": true, "optional": true, "requires": { @@ -30711,9 +29375,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001332", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", - "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "version": "1.0.30001374", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", + "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", "dev": true }, "capture-exit": { @@ -30768,12 +29432,6 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "charenc": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", @@ -30856,11 +29514,74 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -30902,21 +29623,6 @@ "del": "^4.1.1" } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -30942,7 +29648,7 @@ "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "dev": true, "optional": true, "requires": { @@ -30952,7 +29658,7 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, "collect-v8-coverage": { @@ -30964,7 +29670,7 @@ "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "dev": true, "requires": { "map-visit": "^1.0.0", @@ -31038,7 +29744,7 @@ "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, "component-emitter": { @@ -31071,12 +29777,6 @@ "vary": "~1.1.2" }, "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -31089,7 +29789,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -31133,12 +29833,6 @@ "seamless-immutable": "^7.1.3" } }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", - "dev": true - }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -31178,7 +29872,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, "cookiejar": { @@ -31190,7 +29884,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", "dev": true }, "core-js": { @@ -31199,12 +29893,12 @@ "integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==" }, "core-js-compat": { - "version": "3.22.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.2.tgz", - "integrity": "sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", + "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", "dev": true, "requires": { - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", "semver": "7.0.0" }, "dependencies": { @@ -31254,16 +29948,14 @@ } }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypt": { @@ -31291,9 +29983,9 @@ } }, "css-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", + "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", "dev": true, "requires": {} }, @@ -31315,6 +30007,15 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -31323,6 +30024,12 @@ "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 } } }, @@ -31393,36 +30100,36 @@ } }, "cssnano-preset-default": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", - "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", + "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", "dev": true, "requires": { - "css-declaration-sorter": "^6.2.2", + "css-declaration-sorter": "^6.3.0", "cssnano-utils": "^3.1.0", "postcss-calc": "^8.2.3", "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.0", - "postcss-discard-comments": "^5.1.1", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", "postcss-discard-duplicates": "^5.1.0", "postcss-discard-empty": "^5.1.1", "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.4", - "postcss-merge-rules": "^5.1.1", + "postcss-merge-longhand": "^5.1.6", + "postcss-merge-rules": "^5.1.2", "postcss-minify-font-values": "^5.1.0", "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.2", - "postcss-minify-selectors": "^5.2.0", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", "postcss-normalize-charset": "^5.1.0", "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", "postcss-normalize-string": "^5.1.0", "postcss-normalize-timing-functions": "^5.1.0", "postcss-normalize-unicode": "^5.1.0", "postcss-normalize-url": "^5.1.0", "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.1", + "postcss-ordered-values": "^5.1.3", "postcss-reduce-initial": "^5.1.0", "postcss-reduce-transforms": "^5.1.0", "postcss-svgo": "^5.1.0", @@ -31522,7 +30229,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "decimal.js": { @@ -31567,7 +30274,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -31576,7 +30283,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true } @@ -31585,7 +30292,7 @@ "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", "dev": true, "optional": true, "requires": { @@ -31607,7 +30314,7 @@ "file-type": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "optional": true } @@ -31651,7 +30358,7 @@ "file-type": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "optional": true } @@ -31660,7 +30367,7 @@ "decompress-unzip": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", "dev": true, "optional": true, "requires": { @@ -31673,14 +30380,14 @@ "file-type": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", "dev": true, "optional": true }, "get-stream": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", "dev": true, "optional": true, "requires": { @@ -31691,7 +30398,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true } @@ -31732,17 +30439,6 @@ "execa": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -31780,36 +30476,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -31836,37 +30502,6 @@ "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } } }, "del": { @@ -31946,7 +30581,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -31980,7 +30615,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", "dev": true }, "dns-packet": { @@ -31996,7 +30631,7 @@ "dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", "dev": true, "requires": { "buffer-indexof": "^1.0.0" @@ -32150,14 +30785,14 @@ "file-type": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "optional": true }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true }, @@ -32174,7 +30809,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -32187,9 +30822,9 @@ "dev": true }, "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==", "dev": true, "optional": true }, @@ -32206,13 +30841,13 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "electron-to-chromium": { - "version": "1.4.123", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.123.tgz", - "integrity": "sha512-0pHGE53WkYoFbsgwYcVKEpWa6jbzlvkohIEA2CUoZ9b5KC+w/zlMiQHvW/4IBcOh7YoEFqRNavgTk02TBoUTUw==", + "version": "1.4.211", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", + "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", "dev": true }, "email-prop-type": { @@ -32235,9 +30870,9 @@ "dev": true }, "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, "emojis-list": { @@ -32249,7 +30884,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "end-of-stream": { @@ -32262,9 +30897,9 @@ } }, "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -32364,12 +30999,12 @@ } }, "error-stack-parser": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.7.tgz", - "integrity": "sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, "requires": { - "stackframe": "^1.1.1" + "stackframe": "^1.3.4" } }, "es-abstract": { @@ -32442,7 +31077,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { @@ -32463,10 +31098,34 @@ "source-map": "~0.6.1" }, "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true }, "source-map": { @@ -32475,127 +31134,202 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } } } }, "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.18.0.tgz", + "integrity": "sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "color-name": "~1.1.4" } }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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==", "dev": true }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "argparse": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } }, "eslint-config-airbnb": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz", - "integrity": "sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", "dev": true, "requires": { - "eslint-config-airbnb-base": "^14.1.0", - "object.assign": "^4.1.0", - "object.entries": "^1.1.1" + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" } }, "eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "requires": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", - "object.entries": "^1.1.2" + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "eslint-import-resolver-node": { @@ -32690,24 +31424,24 @@ } }, "eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { @@ -32720,88 +31454,73 @@ } }, "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "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", - "isarray": "^1.0.0" + "esutils": "^2.0.2" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } } } }, "eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", - "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "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.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", + "@babel/runtime": "^7.16.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.4", "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", + "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": "^2.2.1" - }, - "dependencies": { - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - } + "jsx-ast-utils": "^3.2.1", + "language-tags": "^1.0.5", + "minimatch": "^3.0.4" } }, "eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "version": "7.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz", + "integrity": "sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A==", "dev": true, "requires": { - "array-includes": "^3.1.1", + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.15.1", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.2", - "xregexp": "^4.3.0" + "string.prototype.matchall": "^4.0.7" }, "dependencies": { "doctrine": { @@ -32813,6 +31532,28 @@ "esutils": "^2.0.2" } }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "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" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -32822,9 +31563,9 @@ } }, "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "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": {} }, @@ -32836,38 +31577,46 @@ "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.1.0" + "eslint-visitor-keys": "^2.0.0" } }, "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", + "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "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==", "dev": true } } @@ -32885,14 +31634,6 @@ "dev": true, "requires": { "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "esrecurse": { @@ -32902,20 +31643,12 @@ "dev": true, "requires": { "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } } }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true }, "esutils": { @@ -32927,7 +31660,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true }, "eventemitter3": { @@ -32936,6 +31669,12 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, "exec-buffer": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", @@ -32953,7 +31692,7 @@ "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "optional": true, "requires": { @@ -32965,7 +31704,7 @@ "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "optional": true, "requires": { @@ -32981,34 +31720,43 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "optional": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "optional": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "shebang-regex": "^1.0.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "optional": true }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "optional": true + "optional": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -33031,6 +31779,51 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "executable": { @@ -33046,7 +31839,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "optional": true } @@ -33061,13 +31854,13 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, "requires": { "debug": "^2.3.3", @@ -33091,7 +31884,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -33100,16 +31893,85 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -33155,9 +32017,9 @@ } }, "express": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.0.tgz", - "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", "dev": true, "requires": { "accepts": "~1.3.8", @@ -33193,6 +32055,12 @@ "vary": "~1.1.2" }, "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, "cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -33211,13 +32079,13 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, "qs": { @@ -33267,33 +32135,11 @@ "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "dev": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" } }, "extglob": { @@ -33315,7 +32161,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" @@ -33324,40 +32170,17 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true } } }, @@ -33395,7 +32218,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, "fast-xml-parser": { @@ -33409,9 +32232,9 @@ } }, "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true }, "fastq": { @@ -33444,29 +32267,20 @@ "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "optional": true, "requires": { "pend": "~1.2.0" } }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "file-loader": { @@ -33488,7 +32302,7 @@ "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, "optional": true }, @@ -33546,7 +32360,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -33605,20 +32419,19 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "dependencies": { "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -33627,9 +32440,9 @@ } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "focus-lock": { @@ -33653,7 +32466,7 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", "dev": true }, "forever-agent": { @@ -33736,6 +32549,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -33770,17 +32592,23 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true } } }, "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, @@ -33810,7 +32638,7 @@ "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, "requires": { "map-cache": "^0.2.2" @@ -33819,13 +32647,13 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "dev": true, "optional": true, "requires": { @@ -33895,7 +32723,7 @@ "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true }, "functions-have-names": { @@ -33967,7 +32795,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true }, "getpass": { @@ -33991,18 +32819,6 @@ "execa": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -34044,40 +32860,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -34127,6 +32909,17 @@ "ini": "^1.3.5", "kind-of": "^6.0.2", "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "globals": { @@ -34138,7 +32931,7 @@ "globby": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -34151,7 +32944,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } @@ -34182,7 +32975,7 @@ "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, "optional": true } @@ -34197,7 +32990,7 @@ "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", "dev": true, "optional": true }, @@ -34254,7 +33047,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.0", @@ -34297,7 +33090,7 @@ "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "dev": true, "requires": { "get-value": "^2.0.6", @@ -34308,7 +33101,7 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -34324,7 +33117,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -34333,7 +33126,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -34344,7 +33137,7 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -34388,7 +33181,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -34486,7 +33279,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", "dev": true }, "http-errors": { @@ -34503,9 +33296,9 @@ } }, "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", "dev": true }, "http-proxy": { @@ -34610,7 +33403,7 @@ "identity-obj-proxy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, "requires": { "harmony-reflect": "^1.4.6" @@ -34744,18 +33537,6 @@ "mozjpeg": "^7.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -34807,40 +33588,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -34870,18 +33617,6 @@ "pngquant-bin": "^6.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -34933,40 +33668,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -34999,16 +33700,16 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "immer": { - "version": "9.0.12", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz", - "integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==", + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", + "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", "dev": true }, "immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", - "optional": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "devOptional": true }, "import-fresh": { "version": "3.3.0", @@ -35046,7 +33747,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -35075,78 +33776,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "internal-slot": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", @@ -35213,7 +33842,7 @@ "into-stream": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", - "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", "dev": true, "optional": true, "requires": { @@ -35230,41 +33859,24 @@ } }, "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "dev": true }, "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "kind-of": "^6.0.0" } }, "is-arguments": { @@ -35356,29 +33968,12 @@ } }, "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "kind-of": "^6.0.0" } }, "is-date-object": { @@ -35390,22 +33985,14 @@ } }, "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-docker": { @@ -35415,15 +34002,18 @@ "dev": true }, "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -35469,7 +34059,7 @@ "is-invalid-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", - "integrity": "sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ=", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", "dev": true, "requires": { "is-glob": "^2.0.0" @@ -35478,13 +34068,13 @@ "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", "dev": true }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", "dev": true, "requires": { "is-extglob": "^1.0.0" @@ -35495,14 +34085,14 @@ "is-jpg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz", - "integrity": "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=", + "integrity": "sha512-ODlO0ruzhkzD3sdynIainVP5eoOFNN85rxA1+cwwnPe4dKyX0r5+hxNO5XpCrxlHcmb9vkOit9mhRD2JVuimHg==", "dev": true, "optional": true }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", "dev": true, "optional": true }, @@ -35559,7 +34149,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "optional": true }, @@ -35624,7 +34214,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true }, "is-string": { @@ -35668,7 +34258,7 @@ "is-valid-path": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", - "integrity": "sha1-EQ+f90w39mPh7HkV60UfLbk6yd8=", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", "dev": true, "requires": { "is-invalid-path": "^0.1.0" @@ -35705,7 +34295,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "iso-639-1": { @@ -35716,7 +34306,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, "isstream": { @@ -35815,9 +34405,9 @@ } }, "istanbul-reports": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -35844,178 +34434,6 @@ "@jest/core": "^26.6.3", "import-local": "^3.0.2", "jest-cli": "^26.6.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } } }, "jest-changed-files": { @@ -36029,17 +34447,6 @@ "throat": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -36086,35 +34493,177 @@ "requires": { "path-key": "^3.0.0" } + } + } + }, + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "isexe": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -36596,170 +35145,102 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "dev": true - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "p-try": "^2.0.0" + "has-flag": "^4.0.0" } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + } + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "color-convert": "^2.0.1" } }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -36774,12 +35255,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true } } }, @@ -37008,12 +35483,6 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -37145,6 +35614,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -37162,6 +35640,12 @@ "requires": { "has-flag": "^4.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 } } }, @@ -37449,19 +35933,6 @@ "whatwg-url": "^8.5.0", "ws": "^7.4.6", "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - } } }, "jsesc": { @@ -37473,7 +35944,7 @@ "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", "dev": true, "optional": true }, @@ -37503,7 +35974,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json-stringify-safe": { @@ -37541,13 +36012,13 @@ } }, "jsx-ast-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", - "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", + "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "array-includes": "^3.1.5", + "object.assign": "^4.1.2" } }, "junk": { @@ -37589,6 +36060,21 @@ "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, "lcov-parse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", @@ -37602,13 +36088,13 @@ "dev": true }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, "lie": { @@ -37620,9 +36106,9 @@ } }, "lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", "dev": true }, "lines-and-columns": { @@ -37630,35 +36116,6 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, "loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -37768,7 +36225,7 @@ "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, "lodash.uniqby": { @@ -37807,12 +36264,14 @@ "optional": true }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, + "optional": true, "requires": { - "yallist": "^4.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "lz-string": { @@ -37863,13 +36322,13 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, "requires": { "object-visit": "^1.0.0" @@ -37920,22 +36379,22 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memfs": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", - "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", + "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", "dev": true, "requires": { - "fs-monkey": "1.0.3" + "fs-monkey": "^1.0.3" } }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", "dev": true }, "merge-stream": { @@ -37953,7 +36412,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true }, "micromatch": { @@ -37973,18 +36432,18 @@ "dev": true }, "mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true }, "mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "requires": { - "mime-db": "1.49.0" + "mime-db": "1.52.0" } }, "mimic-fn": { @@ -38033,9 +36492,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } @@ -38054,17 +36513,6 @@ "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } } }, "mkdirp": { @@ -38123,19 +36571,13 @@ "multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true }, "nanoid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, "nanomatch": { @@ -38160,7 +36602,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, "nearley": { @@ -38220,7 +36662,7 @@ "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, "node-notifier": { @@ -38238,6 +36680,16 @@ "which": "^2.0.2" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -38255,22 +36707,19 @@ "dev": true, "optional": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } + "optional": true } } }, "node-releases": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", - "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, "normalize-package-data": { @@ -38294,7 +36743,7 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-url": { @@ -38317,7 +36766,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "optional": true } @@ -38326,10 +36775,18 @@ "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "requires": { "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + } } }, "nth-check": { @@ -38342,9 +36799,9 @@ } }, "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", "dev": true }, "oauth-sign": { @@ -38361,7 +36818,7 @@ "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, "requires": { "copy-descriptor": "^0.1.0", @@ -38372,22 +36829,59 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -38422,7 +36916,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, "requires": { "isobject": "^3.0.0" @@ -38460,10 +36954,20 @@ "es-abstract": "^1.19.1" } }, + "object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -38536,17 +37040,17 @@ "dev": true }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, "optipng-bin": { @@ -38570,12 +37074,6 @@ "arch": "^2.1.0" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, "ow": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/ow/-/ow-0.17.0.tgz", @@ -38611,7 +37109,7 @@ "p-event": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz", - "integrity": "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=", + "integrity": "sha512-hV1zbA7gwqPVFcapfeATaNjQ3J0NuzorHPyG8GPL9g/Y/TplWVBVoCKCXL6Ej2zscrCEv195QNWJXuBH6XZuzA==", "dev": true, "optional": true, "requires": { @@ -38621,13 +37119,13 @@ "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true }, "p-is-promise": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", "dev": true, "optional": true }, @@ -38658,7 +37156,7 @@ "p-map-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", - "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==", "dev": true, "optional": true, "requires": { @@ -38674,7 +37172,7 @@ "p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==", "dev": true, "optional": true }, @@ -38691,7 +37189,7 @@ "p-timeout": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", "dev": true, "optional": true, "requires": { @@ -38767,7 +37265,7 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true }, "path-exists": { @@ -38784,13 +37282,13 @@ "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { @@ -38814,7 +37312,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true, "optional": true }, @@ -38845,13 +37343,13 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -38960,7 +37458,7 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true } } @@ -38977,18 +37475,6 @@ "execa": "^4.0.0" }, "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "optional": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -39040,40 +37526,6 @@ "requires": { "path-key": "^3.0.0" } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "optional": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "optional": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "optional": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } } } }, @@ -39108,7 +37560,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true }, "postcss": { @@ -39145,18 +37597,19 @@ } }, "postcss-convert-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", - "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", "dev": true, "requires": { + "browserslist": "^4.20.3", "postcss-value-parser": "^4.2.0" } }, "postcss-discard-comments": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", - "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", "dev": true, "requires": {} }, @@ -39192,6 +37645,15 @@ "semver": "^7.3.5" }, "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "semver": { "version": "7.3.7", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", @@ -39200,13 +37662,19 @@ "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 } } }, "postcss-merge-longhand": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", - "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", + "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0", @@ -39214,9 +37682,9 @@ } }, "postcss-merge-rules": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", - "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -39246,9 +37714,9 @@ } }, "postcss-minify-params": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", - "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", "dev": true, "requires": { "browserslist": "^4.16.6", @@ -39257,9 +37725,9 @@ } }, "postcss-minify-selectors": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", - "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", "dev": true, "requires": { "postcss-selector-parser": "^6.0.5" @@ -39318,18 +37786,18 @@ } }, "postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" } }, "postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -39383,9 +37851,9 @@ } }, "postcss-ordered-values": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", - "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", "dev": true, "requires": { "cssnano-utils": "^3.1.0", @@ -39456,15 +37924,15 @@ "dev": true }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "dev": true, "optional": true }, @@ -39529,12 +37997,6 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -39577,7 +38039,7 @@ "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, "optional": true }, @@ -39589,12 +38051,20 @@ "requires": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } } }, "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true, "optional": true }, @@ -39699,6 +38169,14 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + } } }, "react": { @@ -39782,49 +38260,13 @@ "text-table": "^0.2.0" }, "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - } + "color-convert": "^2.0.1" } }, "array-union": { @@ -39841,26 +38283,6 @@ "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } } }, "color-convert": { @@ -39878,17 +38300,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -39921,40 +38332,19 @@ "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", "dev": true }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "isexe": "^2.0.0" + "has-flag": "^4.0.0" } } } @@ -40343,90 +38733,77 @@ "requires": {} }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "dependencies": { - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true } } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } @@ -40449,7 +38826,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true } } @@ -40479,6 +38856,17 @@ "dev": true, "requires": { "minimatch": "3.0.4" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "redent": { @@ -40561,15 +38949,15 @@ } }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", "dev": true, "requires": { "regenerate": "^1.4.2", @@ -40598,7 +38986,7 @@ "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } @@ -40612,7 +39000,7 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true }, "renderkid": { @@ -40637,7 +39025,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "replace-ext": { @@ -40700,7 +39088,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-from-string": { @@ -40718,7 +39106,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, "reselect": { @@ -40758,7 +39146,7 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", "dev": true }, "resolve-url-loader": { @@ -40785,23 +39173,13 @@ "responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dev": true, "optional": true, "requires": { "lowercase-keys": "^1.0.0" } }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -40857,12 +39235,6 @@ "strip-json-comments": "^3.1.1" } }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -40872,23 +39244,6 @@ "queue-microtask": "^1.2.2" } }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -40897,7 +39252,7 @@ "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, "requires": { "ret": "~0.1.10" @@ -40957,7 +39312,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -40968,7 +39323,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -40980,7 +39335,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" @@ -40994,10 +39349,16 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -41006,7 +39367,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -41038,7 +39399,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -41047,7 +39408,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -41065,14 +39426,6 @@ "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" - }, - "dependencies": { - "immutable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", - "dev": true - } } }, "sass-loader": { @@ -41142,7 +39495,7 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true }, "selfsigned": { @@ -41170,7 +39523,7 @@ "semver-truncate": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", + "integrity": "sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==", "dev": true, "optional": true, "requires": { @@ -41210,7 +39563,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true } } @@ -41235,7 +39588,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -41259,13 +39612,13 @@ "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "requires": { "depd": "~1.1.2", @@ -41277,13 +39630,13 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "setprototypeof": { @@ -41295,7 +39648,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true } } @@ -41315,7 +39668,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "set-value": { @@ -41333,11 +39686,17 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true } } }, @@ -41367,18 +39726,18 @@ "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { @@ -41448,25 +39807,6 @@ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - } - } - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -41495,7 +39835,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" @@ -41504,16 +39844,85 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, "source-map-resolve": { @@ -41545,40 +39954,11 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, "requires": { "is-descriptor": "^1.0.0" } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } } } }, @@ -41600,7 +39980,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -41630,7 +40010,7 @@ "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", "dev": true, "optional": true, "requires": { @@ -41640,7 +40020,7 @@ "sort-keys-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", "dev": true, "optional": true, "requires": { @@ -41858,15 +40238,15 @@ } }, "stackframe": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.1.tgz", - "integrity": "sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, "requires": { "define-property": "^0.2.5", @@ -41876,11 +40256,74 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, "requires": { "is-descriptor": "^0.1.0" } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true } } }, @@ -41923,6 +40366,14 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } } }, "string.prototype.matchall": { @@ -41979,20 +40430,12 @@ "dev": true, "requires": { "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - } } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, "strip-dirs": { @@ -42008,7 +40451,7 @@ "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true }, "strip-final-newline": { @@ -42095,6 +40538,17 @@ "requires": { "ms": "^2.1.1" } + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } } } }, @@ -42133,6 +40587,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "svg-parser": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", @@ -42178,58 +40638,6 @@ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-4.0.0.tgz", "integrity": "sha512-H1XoH1URcBOa/rZZWxLxHCtOdVUEev+9vo5YdYhC9tCY4wnybX+VQrCYuy9ubkg69fCBxCONJOSLGfw0DWMffQ==" }, - "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -42255,14 +40663,14 @@ "temp-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, "optional": true }, "tempfile": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "integrity": "sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==", "dev": true, "optional": true, "requires": { @@ -42301,15 +40709,15 @@ } }, "terser-webpack-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", - "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", "dev": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.7", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1", "terser": "^5.7.2" }, "dependencies": { @@ -42330,12 +40738,6 @@ "supports-color": "^8.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -42361,7 +40763,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { @@ -42373,8 +40775,9 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "optional": true }, "thunky": { "version": "1.1.0", @@ -42385,7 +40788,7 @@ "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", "dev": true, "optional": true }, @@ -42399,15 +40802,6 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -42429,7 +40823,7 @@ "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, "requires": { "kind-of": "^3.0.2" @@ -42444,7 +40838,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, "requires": { "is-buffer": "^1.1.5" @@ -42516,7 +40910,7 @@ "trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", "dev": true, "optional": true, "requires": { @@ -42543,6 +40937,12 @@ "requires": { "minimist": "^1.2.0" } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true } } }, @@ -42567,12 +40967,12 @@ "dev": true }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, "type-detect": { @@ -42582,12 +40982,10 @@ "dev": true }, "type-fest": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.1.tgz", - "integrity": "sha512-hXYyrPFwETT2swFLHeoKtJrvSF/ftG/sA15/8nGaLuaDGfVAaq8DYFpu4yOyV4tzp082WqnTEoMsm3flKMI2FQ==", - "dev": true, - "optional": true, - "peer": true + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true }, "type-is": { "version": "1.6.18", @@ -42685,6 +41083,14 @@ "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } } }, "universal-cookie": { @@ -42705,13 +41111,13 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, "requires": { "has-value": "^0.3.1", @@ -42721,7 +41127,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, "requires": { "get-value": "^2.0.3", @@ -42732,7 +41138,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, "requires": { "isarray": "1.0.0" @@ -42743,17 +41149,27 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true } } }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -42766,7 +41182,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", "dev": true }, "url-loader": { @@ -42783,7 +41199,7 @@ "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", "dev": true, "optional": true, "requires": { @@ -42793,7 +41209,7 @@ "url-to-options": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", "dev": true, "optional": true }, @@ -42823,7 +41239,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "utila": { @@ -42835,7 +41251,7 @@ "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { @@ -42862,9 +41278,9 @@ }, "dependencies": { "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true } } @@ -42887,7 +41303,7 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true }, "verror": { @@ -42937,9 +41353,9 @@ } }, "watchpack": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", - "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -42993,12 +41409,6 @@ "webpack-sources": "^3.2.0" }, "dependencies": { - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -43119,38 +41529,6 @@ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -43160,26 +41538,17 @@ "clone-deep": "^4.0.1", "wildcard": "^2.0.0" } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } } } }, "webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", "dev": true, "requires": { "colorette": "^2.0.10", - "memfs": "^3.4.1", + "memfs": "^3.4.3", "mime-types": "^2.1.31", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" @@ -43207,9 +41576,9 @@ } }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "json-schema-traverse": { @@ -43303,15 +41672,15 @@ "dev": true }, "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", "dev": true }, "del": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", - "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", "dev": true, "requires": { "globby": "^11.0.1", @@ -43338,12 +41707,6 @@ "slash": "^3.0.0" } }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, "is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -43402,9 +41765,9 @@ } }, "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "dev": true, "requires": {} } @@ -43482,9 +41845,9 @@ } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -43505,7 +41868,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "wildcard": { @@ -43562,15 +41925,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", @@ -43584,9 +41938,9 @@ } }, "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "requires": {} }, @@ -43602,15 +41956,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "xregexp": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.1.tgz", - "integrity": "sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==", - "dev": true, - "requires": { - "@babel/runtime-corejs3": "^7.12.1" - } - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -43625,10 +41970,11 @@ "dev": true }, "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true, + "optional": true }, "yaml": { "version": "1.10.2", @@ -43659,7 +42005,7 @@ "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "optional": true, "requires": { diff --git a/package.json b/package.json index 6d8c540825..4f4133403f 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "11.0.2", + "@edx/frontend-build": "^12.0.3", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", From 86e15db0030cd8f273b8e6af571d24dfdc16c81a Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 4 Aug 2022 13:15:40 +0500 Subject: [PATCH 02/13] refactor: resolved eslint issues --- .eslintrc.js | 1 + src/components/NotFoundPage/index.jsx | 4 +- src/components/TagCloud/index.jsx | 9 +- src/components/Toasts/ToastsProvider.jsx | 4 +- .../app/EnterpriseAppPageRoutes.jsx | 8 +- src/components/app/LoginRefresh.test.jsx | 28 +- src/components/contact-admin-mailto/index.jsx | 6 +- .../course/CourseAssociatedPrograms.jsx | 6 +- .../course/CourseEnrollmentFailedAlert.jsx | 18 +- .../course/CourseRecommendationCard.jsx | 4 +- .../course/CourseRecommendations.jsx | 4 +- src/components/course/CourseRunCard.jsx | 6 +- src/components/course/CourseRunCards.jsx | 4 +- src/components/course/CourseSidebarPrice.jsx | 4 +- src/components/course/EnrollModal.jsx | 12 +- .../course/LicenseRequestedAlert.jsx | 4 +- .../course/SubsidyRequestButton.jsx | 4 +- .../course/enrollment/EnrollAction.jsx | 6 +- src/components/course/enrollment/common.jsx | 30 +- .../enrollment/components/DisabledEnroll.jsx | 16 +- .../components/ToCoursewarePage.jsx | 6 +- .../components/ToDataSharingConsent.jsx | 4 +- .../components/ToEcomBasketPage.jsx | 4 +- .../enrollment/components/ViewOnDashboard.jsx | 4 +- .../enrollment/tests/EnrollAction.test.jsx | 7 +- .../course/enrollment/tests/hooks.test.jsx | 22 +- .../tests/CourseAssociatedPrograms.test.jsx | 18 +- .../tests/CourseContextProvider.test.jsx | 18 +- .../CourseEnrollmentFailedAlert.test.jsx | 18 +- .../course/tests/CourseHeader.test.jsx | 38 +- .../tests/CourseRecommendationCard.test.jsx | 12 +- .../tests/CourseRecommendations.test.jsx | 16 +- .../course/tests/CourseRunCard.test.jsx | 14 +- .../course/tests/CourseSidebarPrice.test.jsx | 26 +- .../course/tests/CourseSkills.test.jsx | 22 +- .../course/tests/CreatedBy.test.jsx | 16 +- .../course/tests/EnrollModal.test.jsx | 22 +- .../tests/LicenseRequestedAlert.test.jsx | 62 ++-- .../tests/SubsidyRequestButton.test.jsx | 22 +- .../dashboard/SubscriptionExpirationModal.jsx | 12 +- .../main-content/DashboardMainContent.jsx | 4 +- .../main-content/DashboardPopularCourses.jsx | 4 +- .../course-enrollments/CollapsibleIcon.jsx | 16 +- .../course-enrollments/CourseEnrollments.jsx | 24 +- .../CourseEnrollmentsAlert.jsx | 6 +- .../CourseEnrollmentsContextProvider.jsx | 4 +- .../course-enrollments/CourseSection.jsx | 2 +- ...adeableCourseEnrollmentContextProvider.jsx | 4 +- .../course-cards/CompletedCourseCard.jsx | 4 +- .../course-cards/InProgressCourseCard.jsx | 6 +- .../course-cards/Notification.jsx | 50 +-- .../course-cards/RequestedCourseCard.jsx | 16 +- .../course-cards/SavedForLaterCourseCard.jsx | 4 +- .../course-cards/UpcomingCourseCard.jsx | 4 +- .../email-settings/EmailSettingsModal.jsx | 4 +- .../mark-complete-modal/MarkCompleteModal.jsx | 6 +- .../mark-complete-modal/ModalBody.jsx | 4 +- .../mark-complete-modal/ModalError.jsx | 4 +- .../move-to-in-progress-modal/ModalBody.jsx | 4 +- .../move-to-in-progress-modal/ModalError.jsx | 4 +- .../MoveToInProgressModal.jsx | 6 +- .../unenroll/UnenrollModal.test.jsx | 18 +- .../tests/CourseSection.test.jsx | 26 +- .../sidebar/CouponCodesSummaryCard.jsx | 6 +- .../dashboard/sidebar/DashboardSidebar.jsx | 22 +- .../sidebar/EnterpriseOffersSummaryCard.jsx | 78 +++-- .../dashboard/sidebar/SidebarCard.jsx | 24 +- .../sidebar/SubscriptionSummaryCard.jsx | 6 +- .../dashboard/sidebar/SubsidiesSummary.jsx | 6 +- .../dashboard/sidebar/SupportInformation.jsx | 4 +- .../sidebar/tests/DashboardSidebar.test.jsx | 26 +- .../tests/SubscriptionSummaryCard.test.jsx | 16 +- .../dashboard/tests/DashboardPage.test.jsx | 38 +- .../EnterpriseInvitePage.jsx | 4 +- .../enterprise-page/EnterprisePage.test.jsx | 4 +- .../EnterpriseCustomerRedirect.jsx | 4 +- .../EnterprisePageRedirect.jsx | 4 +- .../tests/EnterpriseCustomerRedirect.test.jsx | 14 +- .../tests/EnterprisePageRedirect.test.jsx | 14 +- .../SubsidyRequestsContextProvider.jsx | 4 +- .../SubsidyRequestsContextProvider.test.jsx | 22 +- .../AutoActivateLicense.jsx | 4 +- .../enterprise-user-subsidy/UserSubsidy.jsx | 4 +- .../enterprise-user-subsidy/data/hooks.js | 14 +- .../EnterpriseOffersBalanceAlert.jsx | 4 +- .../EnterpriseOffersBalanceAlert.test.jsx | 24 +- .../tests/AutoActivateLicense.test.jsx | 28 +- .../tests/UserSubsidy.test.jsx | 44 +-- src/components/error-page/ErrorPage.jsx | 42 +-- src/components/error-page/ErrorPage.test.jsx | 4 +- src/components/error-page/ErrorPageHeader.jsx | 4 +- .../IntegrationWarningModal.jsx | 6 +- .../integration-warning-modal/ModalBody.jsx | 20 +- src/components/layout/MainContent.jsx | 12 +- src/components/layout/Sidebar.jsx | 12 +- src/components/layout/SidebarBlock.jsx | 6 +- .../license-activation/LicenseActivation.jsx | 4 +- .../LicenseActivationErrorAlert.jsx | 26 +- .../LicenseActivationPage.jsx | 4 +- .../tests/LicenseActivation.test.jsx | 80 ++--- .../tests/LicenseActivationPage.test.jsx | 38 +- .../loading-spinner/LoadingSpinner.jsx | 14 +- src/components/pathway/PathwayModal.jsx | 16 +- src/components/pathway/SearchPathwayCard.jsx | 10 +- .../pathway/tests/PathwayModal.test.jsx | 20 +- .../pathway/tests/SearchPathwayCard.test.jsx | 20 +- .../CouponCodesWarningModal.jsx | 4 +- .../program-progress/ProgramListingCard.jsx | 4 +- .../program-progress/ProgramListingPage.jsx | 34 +- .../ProgramPathwayOpportunity.jsx | 54 +-- .../ProgramProgressCircle.jsx | 10 +- .../ProgramProgressCourses.jsx | 4 +- .../ProgramProgressHeader.jsx | 60 ++-- .../program-progress/ProgramProgressPage.jsx | 4 +- .../ProgramProgressSidebar.jsx | 4 +- .../SubscriptionExpiringWarningModal.jsx | 6 +- .../tests/ProgramListingCard.test.jsx | 16 +- .../tests/ProgramListingPage.test.jsx | 22 +- .../tests/ProgramProgressCircle.test.jsx | 14 +- .../tests/ProgramProgressCourses.test.jsx | 22 +- .../tests/ProgramProgressHeader.test.jsx | 14 +- .../tests/ProgramProgressSidebar.test.jsx | 14 +- src/components/program/BulletList.jsx | 20 +- src/components/program/ProgramCourses.jsx | 4 +- src/components/program/ProgramDataBar.jsx | 4 +- .../program/ProgramDataBarDetails.jsx | 4 +- .../program/ProgramEndorsements.jsx | 4 +- src/components/program/ProgramHeader.jsx | 4 +- src/components/program/ProgramInstructors.jsx | 8 +- src/components/program/ProgramMainContent.jsx | 4 +- src/components/program/ProgramPage.jsx | 4 +- src/components/program/ProgramSidebar.jsx | 74 ++-- .../program/tests/ProgramCTA.test.jsx | 26 +- .../program/tests/ProgramCourses.test.jsx | 22 +- .../program/tests/ProgramDataBar.test.jsx | 20 +- .../tests/ProgramEndorsements.test.jsx | 22 +- .../program/tests/ProgramFAQ.test.jsx | 22 +- .../program/tests/ProgramHeader.test.jsx | 22 +- .../program/tests/ProgramInstructors.test.jsx | 12 +- .../program/tests/ProgramMainContent.test.jsx | 22 +- .../program/tests/ProgramPage.test.jsx | 22 +- .../program/tests/ProgramSidebar.test.jsx | 22 +- src/components/search/Search.jsx | 4 +- src/components/search/SearchCourse.jsx | 4 +- src/components/search/SearchCourseCard.jsx | 10 +- src/components/search/SearchError.jsx | 4 +- src/components/search/SearchNoResults.jsx | 4 +- src/components/search/SearchPage.jsx | 12 +- src/components/search/SearchPathway.jsx | 4 +- src/components/search/SearchProgram.jsx | 4 +- src/components/search/SearchProgramCard.jsx | 10 +- src/components/search/SearchResults.jsx | 6 +- .../search/data/tests/hooks.test.jsx | 5 +- .../search/popular-results/PopularResults.jsx | 6 +- .../popular-results/PopularResultsIndex.jsx | 4 +- .../search/tests/SearchCourseCard.test.jsx | 20 +- .../search/tests/SearchProgramCard.test.jsx | 20 +- .../search/tests/SearchResults.test.jsx | 24 +- src/components/site-header/AvatarDropdown.jsx | 4 +- src/components/site-header/SiteHeader.jsx | 8 +- .../site-header/tests/SiteHeader.test.jsx | 14 +- .../skills-quiz/CardLoadingSkeleton.jsx | 64 ++-- src/components/skills-quiz/CourseCard.jsx | 6 +- .../skills-quiz/CurrentJobDropdown.jsx | 4 +- src/components/skills-quiz/GoalDropdown.jsx | 4 +- .../skills-quiz/JobCardComponent.jsx | 4 +- .../skills-quiz/SearchCourseCard.jsx | 4 +- .../skills-quiz/SearchCurrentJobCard.jsx | 22 +- src/components/skills-quiz/SearchJobCard.jsx | 22 +- .../skills-quiz/SearchJobDropdown.jsx | 4 +- src/components/skills-quiz/SearchPathways.jsx | 4 +- .../skills-quiz/SearchProgramCard.jsx | 4 +- src/components/skills-quiz/SelectJobCard.jsx | 4 +- .../skills-quiz/SelectedJobSkills.jsx | 4 +- src/components/skills-quiz/SkillsCourses.jsx | 4 +- src/components/skills-quiz/SkillsDropDown.jsx | 4 +- src/components/skills-quiz/SkillsQuiz.jsx | 4 +- .../skills-quiz/SkillsQuizHeader.jsx | 28 +- .../skills-quiz/SkillsQuizStepper.jsx | 324 +++++++++--------- .../__mocks__/react-instantsearch-dom.jsx | 98 +++--- .../skills-quiz/data/tests/hooks.test.jsx | 16 +- .../skills-quiz/tests/GoalsDropdown.test.jsx | 22 +- .../tests/SearchCourseCard.test.jsx | 30 +- .../tests/SearchCurrentJobCard.test.jsx | 22 +- .../skills-quiz/tests/SearchJobCard.test.jsx | 22 +- .../skills-quiz/tests/SearchPathways.test.jsx | 30 +- .../tests/SearchProgramCard.test.jsx | 30 +- .../skills-quiz/tests/SelectJobCard.test.jsx | 22 +- .../tests/SelectedJobSkills.test.jsx | 22 +- .../skills-quiz/tests/SkillsCourses.test.jsx | 30 +- .../skills-quiz/tests/SkillsQuiz.test.jsx | 22 +- .../SystemWideWarningBanner.jsx | 14 +- src/utils/tests.jsx | 6 +- 193 files changed, 1691 insertions(+), 1525 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 28e19bd40c..5b2737cbbd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,4 @@ +// eslint-disable-next-line import/no-extraneous-dependencies const { getBaseConfig } = require('@edx/frontend-build'); const config = getBaseConfig('eslint'); diff --git a/src/components/NotFoundPage/index.jsx b/src/components/NotFoundPage/index.jsx index 24e71abe42..7eda7aa0e0 100644 --- a/src/components/NotFoundPage/index.jsx +++ b/src/components/NotFoundPage/index.jsx @@ -4,7 +4,7 @@ import { Helmet } from 'react-helmet'; import { AppContext } from '@edx/frontend-platform/react'; import { Container } from '@edx/paragon'; -const NotFoundPage = ({ pageTitle, errorHeading, errorMessage }) => { +function NotFoundPage({ pageTitle, errorHeading, errorMessage }) { const { enterpriseConfig } = useContext(AppContext); let PAGE_TITLE = pageTitle; @@ -22,7 +22,7 @@ const NotFoundPage = ({ pageTitle, errorHeading, errorMessage }) => { </div> </Container> ); -}; +} NotFoundPage.defaultProps = { pageTitle: 'Page not found', diff --git a/src/components/TagCloud/index.jsx b/src/components/TagCloud/index.jsx index 6e4defe7fc..3f8f0c736e 100644 --- a/src/components/TagCloud/index.jsx +++ b/src/components/TagCloud/index.jsx @@ -3,8 +3,8 @@ import PropTypes from 'prop-types'; import './styles/TagCloud.scss'; -const TagCloud = ({ tags, onRemove }) => ( - <> +function TagCloud({ tags, onRemove }) { + return ( <div className="skills-tag"> <ul className="item"> { @@ -19,9 +19,8 @@ const TagCloud = ({ tags, onRemove }) => ( } </ul> </div> - - </> -); + ); +} TagCloud.propTypes = { onRemove: PropTypes.func.isRequired, diff --git a/src/components/Toasts/ToastsProvider.jsx b/src/components/Toasts/ToastsProvider.jsx index 47a1d77e44..243dbd4fc5 100644 --- a/src/components/Toasts/ToastsProvider.jsx +++ b/src/components/Toasts/ToastsProvider.jsx @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; export const ToastsContext = createContext(); -const ToastsProvider = ({ children }) => { +function ToastsProvider({ children }) { const [toasts, setToasts] = useState([]); const addToast = (message) => { @@ -30,7 +30,7 @@ const ToastsProvider = ({ children }) => { {children} </ToastsContext.Provider> ); -}; +} ToastsProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/app/EnterpriseAppPageRoutes.jsx b/src/components/app/EnterpriseAppPageRoutes.jsx index b026928e35..4d77597c24 100644 --- a/src/components/app/EnterpriseAppPageRoutes.jsx +++ b/src/components/app/EnterpriseAppPageRoutes.jsx @@ -11,8 +11,8 @@ import AuthenticatedUserSubsidyPage from './AuthenticatedUserSubsidyPage'; import { features } from '../../config'; import { LicenseActivationPage } from '../license-activation'; -const EnterpriseAppPageRoutes = () => ( - <> +function EnterpriseAppPageRoutes() { + return ( <AuthenticatedUserSubsidyPage> <PageRoute exact path="/:enterpriseSlug" component={DashboardPage} /> <PageRoute @@ -28,7 +28,7 @@ const EnterpriseAppPageRoutes = () => ( <PageRoute exact path="/:enterpriseSlug/skills-quiz" component={SkillsQuizPage} /> <PageRoute exact path="/:enterpriseSlug/licenses/:activationKey/activate" component={LicenseActivationPage} /> </AuthenticatedUserSubsidyPage> - </> -); + ); +} export default EnterpriseAppPageRoutes; diff --git a/src/components/app/LoginRefresh.test.jsx b/src/components/app/LoginRefresh.test.jsx index 738174c5c2..3c07ed6435 100644 --- a/src/components/app/LoginRefresh.test.jsx +++ b/src/components/app/LoginRefresh.test.jsx @@ -9,19 +9,21 @@ import * as utils from '../../utils/common'; jest.mock('../../utils/common'); // eslint-disable-next-line react/prop-types -const LoginRefreshWithContext = ({ roles = [] }) => ( - <AppContext.Provider value={{ - authenticatedUser: { - userId: 1, - roles, - }, - }} - > - <LoginRefresh> - <div>Hello!</div> - </LoginRefresh> - </AppContext.Provider> -); /* eslint-enable react/prop-types */ +function LoginRefreshWithContext({ roles = [] }) { + return ( + <AppContext.Provider value={{ + authenticatedUser: { + userId: 1, + roles, + }, + }} + > + <LoginRefresh> + <div>Hello!</div> + </LoginRefresh> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<LoginRefresh />', () => { it('should call loginRefresh if the user has no roles', async () => { diff --git a/src/components/contact-admin-mailto/index.jsx b/src/components/contact-admin-mailto/index.jsx index bb62606ce9..be6c3fd84b 100644 --- a/src/components/contact-admin-mailto/index.jsx +++ b/src/components/contact-admin-mailto/index.jsx @@ -3,9 +3,9 @@ import { AppContext } from '@edx/frontend-platform/react'; import { MailtoLink } from '@edx/paragon'; import PropTypes from 'prop-types'; -const ContactAdminMailto = ({ +function ContactAdminMailto({ children, -}) => { +}) { const { enterpriseConfig: { adminUsers } } = useContext(AppContext); const adminEmails = adminUsers.map(user => user.email); @@ -21,7 +21,7 @@ const ContactAdminMailto = ({ } return children; -}; +} ContactAdminMailto.propTypes = { children: PropTypes.node, diff --git a/src/components/course/CourseAssociatedPrograms.jsx b/src/components/course/CourseAssociatedPrograms.jsx index f6cc74313a..84f1ca93f6 100644 --- a/src/components/course/CourseAssociatedPrograms.jsx +++ b/src/components/course/CourseAssociatedPrograms.jsx @@ -37,12 +37,14 @@ export default function CourseAssociatedPrograms() { : program.marketingUrl} target="_blank" onClick={() => { - sendEnterpriseTrackEvent(enterpriseConfig.uuid, + sendEnterpriseTrackEvent( + enterpriseConfig.uuid, 'edx.ui.enterprise.learner_portal.course.sidebar.program.clicked', { program_title: program.title, program_type: program.type, - }); + }, + ); }} > {program.title} diff --git a/src/components/course/CourseEnrollmentFailedAlert.jsx b/src/components/course/CourseEnrollmentFailedAlert.jsx index 67b1247653..d1b63603f0 100644 --- a/src/components/course/CourseEnrollmentFailedAlert.jsx +++ b/src/components/course/CourseEnrollmentFailedAlert.jsx @@ -67,7 +67,7 @@ const createUpgradeFailureMessages = (contactHelpText, enrollmentSource) => ({ * reasons. The contents of the alert are determined by a ``failureReason`` which is passed * from the Data Sharing Consent (DSC) page as a query parameter. */ -const CourseEnrollmentFailedAlert = ({ className, enrollmentSource }) => { +function CourseEnrollmentFailedAlert({ className, enrollmentSource }) { const { search } = useLocation(); const { enterpriseConfig } = useContext(AppContext); const renderContactHelpText = useRenderContactHelpText(enterpriseConfig); @@ -92,12 +92,14 @@ const CourseEnrollmentFailedAlert = ({ className, enrollmentSource }) => { [courseEnrollmentsByStatus, courseRunKey], ); - const failureReasonMessages = useMemo(() => { - const contactHelpText = renderContactHelpText(Alert.Link); - return isUpgradeAttempt ? createUpgradeFailureMessages(contactHelpText, enrollmentSource) - : createEnrollmentFailureMessages(contactHelpText); - }, - [enrollmentSource, isUpgradeAttempt, renderContactHelpText]); + const failureReasonMessages = useMemo( + () => { + const contactHelpText = renderContactHelpText(Alert.Link); + return isUpgradeAttempt ? createUpgradeFailureMessages(contactHelpText, enrollmentSource) + : createEnrollmentFailureMessages(contactHelpText); + }, + [enrollmentSource, isUpgradeAttempt, renderContactHelpText], + ); if (!hasEnrollmentFailed) { return null; @@ -110,7 +112,7 @@ const CourseEnrollmentFailedAlert = ({ className, enrollmentSource }) => { </Alert> </Container> ); -}; +} CourseEnrollmentFailedAlert.defaultProps = { className: 'mt-3', diff --git a/src/components/course/CourseRecommendationCard.jsx b/src/components/course/CourseRecommendationCard.jsx index 2083181758..042bb01341 100644 --- a/src/components/course/CourseRecommendationCard.jsx +++ b/src/components/course/CourseRecommendationCard.jsx @@ -11,7 +11,7 @@ import { getPrimaryPartnerLogo, isDefinedAndNotNull } from '../../utils/common'; export const COURSE_REC_EVENT_NAME = 'edx.ui.enterprise.learner_portal.recommended.course.clicked'; export const SAME_PART_EVENT_NAME = 'edx.ui.enterprise.learner_portal.same.partner.recommended.course.clicked'; -const CourseRecommendationCard = ({ course, isPartnerRecommendation }) => { +function CourseRecommendationCard({ course, isPartnerRecommendation }) { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const eventName = isPartnerRecommendation ? SAME_PART_EVENT_NAME : COURSE_REC_EVENT_NAME; const history = useHistory(); @@ -87,7 +87,7 @@ const CourseRecommendationCard = ({ course, isPartnerRecommendation }) => { </Card.Footer> </Card> ); -}; +} CourseRecommendationCard.propTypes = { course: PropTypes.shape({ diff --git a/src/components/course/CourseRecommendations.jsx b/src/components/course/CourseRecommendations.jsx index 83eea0b585..1924d78935 100644 --- a/src/components/course/CourseRecommendations.jsx +++ b/src/components/course/CourseRecommendations.jsx @@ -3,7 +3,7 @@ import { CardGrid } from '@edx/paragon'; import { CourseContext } from './CourseContextProvider'; import CourseRecommendationCard from './CourseRecommendationCard'; -const CourseRecommendations = () => { +function CourseRecommendations() { const { state } = useContext(CourseContext); const { course, courseRecommendations } = state; const { allRecommendations, samePartnerRecommendations } = courseRecommendations; @@ -36,6 +36,6 @@ const CourseRecommendations = () => { )} </div> ); -}; +} export default CourseRecommendations; diff --git a/src/components/course/CourseRunCard.jsx b/src/components/course/CourseRunCard.jsx index f917d6b3b4..874b6880f8 100644 --- a/src/components/course/CourseRunCard.jsx +++ b/src/components/course/CourseRunCard.jsx @@ -32,13 +32,13 @@ import { SubsidyRequestsContext } from '../enterprise-subsidy-requests/SubsidyRe const DATE_FORMAT = 'MMM D'; const DEFAULT_BUTTON_LABEL = 'Enroll'; -const CourseRunCard = ({ +function CourseRunCard({ userEntitlements, courseRun, userEnrollments, courseKey, subsidyRequestCatalogsApplicableToCourse, -}) => { +}) { const { availability, pacingType, @@ -224,7 +224,7 @@ const CourseRunCard = ({ </Card.Section> </Card> ); -}; +} CourseRunCard.propTypes = { courseKey: PropTypes.string.isRequired, diff --git a/src/components/course/CourseRunCards.jsx b/src/components/course/CourseRunCards.jsx index 1e8baf2f5e..65f0f11451 100644 --- a/src/components/course/CourseRunCards.jsx +++ b/src/components/course/CourseRunCards.jsx @@ -6,7 +6,7 @@ import { import { CourseContext } from './CourseContextProvider'; import CourseRunCard from './CourseRunCard'; -const CourseRunCards = () => { +function CourseRunCards() { const { state: courseData, subsidyRequestCatalogsApplicableToCourse, @@ -35,6 +35,6 @@ const CourseRunCards = () => { ))} </CardGrid> ); -}; +} export default CourseRunCards; diff --git a/src/components/course/CourseSidebarPrice.jsx b/src/components/course/CourseSidebarPrice.jsx index 3adec9daf5..410a6acd29 100644 --- a/src/components/course/CourseSidebarPrice.jsx +++ b/src/components/course/CourseSidebarPrice.jsx @@ -19,7 +19,7 @@ export const FREE_WHEN_APPROVED_MESSAGE = 'Free to me\n(when approved)'; export const COVERED_BY_ENTERPRISE_OFFER_MESSAGE = 'This course can be purchased with your organization\'s learner credit'; export const INSUFFICIENT_ENTERPRISE_OFFER_BALANCE = 'Your organization doesn\'t have enough learner credit remaining.'; -const CourseSidebarPrice = () => { +function CourseSidebarPrice() { const { enterpriseConfig } = useContext(AppContext); const { state: courseData } = useContext(CourseContext); const { activeCourseRun, userSubsidyApplicableToCourse } = courseData; @@ -117,6 +117,6 @@ const CourseSidebarPrice = () => { <small>{discountedPriceMessage}</small> </> ); -}; +} export default CourseSidebarPrice; diff --git a/src/components/course/EnrollModal.jsx b/src/components/course/EnrollModal.jsx index 8666216ad5..5429e7f2cd 100644 --- a/src/components/course/EnrollModal.jsx +++ b/src/components/course/EnrollModal.jsx @@ -41,14 +41,14 @@ export const MODAL_TEXTS = { }, }; -const EnrollModal = ({ +function EnrollModal({ isModalOpen, setIsModalOpen, enrollmentUrl, courseRunPrice, userSubsidyApplicableToCourse, couponCodesCount, -}) => { +}) { const { state: { activeCourseRun: { key: courseRunKey }, @@ -116,16 +116,14 @@ const EnrollModal = ({ href={enrollmentUrl} onClick={handleEnroll} > - <> - {isLoading && <FontAwesomeIcon icon={faSpinner} alt="loading" className="fa-spin mr-2" />} - {buttonText} - </> + {isLoading && <FontAwesomeIcon icon={faSpinner} alt="loading" className="fa-spin mr-2" />} + {buttonText} </a>, ]} onClose={() => setIsModalOpen(false)} /> ); -}; +} EnrollModal.propTypes = { isModalOpen: PropTypes.bool.isRequired, diff --git a/src/components/course/LicenseRequestedAlert.jsx b/src/components/course/LicenseRequestedAlert.jsx index 4bd0798e99..4dabc3f67a 100644 --- a/src/components/course/LicenseRequestedAlert.jsx +++ b/src/components/course/LicenseRequestedAlert.jsx @@ -15,7 +15,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy/UserSubsidy'; * A component to render an alert when a learner has a license request that is pending review. * Once dismissed, the learner will not see this alert again until the cookies are cleared. */ -const LicenseRequestedAlert = ({ catalogList }) => { +function LicenseRequestedAlert({ catalogList }) { const cookies = new Cookies(); const previouslyDismissed = cookies.get(LICENSE_REQUESTED_ALERT_DISMISSED_COOKIE_NAME); const [isAlertOpen, setIsAlertOpen] = useState(!previouslyDismissed); @@ -56,7 +56,7 @@ const LicenseRequestedAlert = ({ catalogList }) => { </Alert> </Container> ); -}; +} LicenseRequestedAlert.propTypes = { catalogList: PropTypes.arrayOf(PropTypes.string).isRequired, diff --git a/src/components/course/SubsidyRequestButton.jsx b/src/components/course/SubsidyRequestButton.jsx index 62630fece2..b26a0b6905 100644 --- a/src/components/course/SubsidyRequestButton.jsx +++ b/src/components/course/SubsidyRequestButton.jsx @@ -24,7 +24,7 @@ const props = { className: 'mb-4 mt-1', }; -const SubsidyRequestButton = ({ enterpriseSlug }) => { +function SubsidyRequestButton({ enterpriseSlug }) { const history = useHistory(); const { addToast } = useContext(ToastsContext); const [loadingRequest, setLoadingRequest] = useState(false); @@ -122,7 +122,7 @@ const SubsidyRequestButton = ({ enterpriseSlug }) => { return ( <StatefulButton {...props} state={getButtonState()} onClick={handleRequestButtonClick} /> ); -}; +} SubsidyRequestButton.propTypes = { enterpriseSlug: PropTypes.string.isRequired, diff --git a/src/components/course/enrollment/EnrollAction.jsx b/src/components/course/enrollment/EnrollAction.jsx index b153e82321..3209e8230c 100644 --- a/src/components/course/enrollment/EnrollAction.jsx +++ b/src/components/course/enrollment/EnrollAction.jsx @@ -29,14 +29,14 @@ const { * @param {string} args.userEnrollment enrollment if applicable, or null. * @param {string} args.subscriptionLicense user license if applicable, or null. */ -const EnrollAction = ({ +function EnrollAction({ enrollmentType, enrollmentUrl, enrollLabel, userEnrollment, subscriptionLicense, courseRunPrice, -}) => { +}) { switch (enrollmentType) { case TO_COURSEWARE_PAGE: // scenario 1: already enrolled return ( @@ -69,7 +69,7 @@ const EnrollAction = ({ case HIDE_BUTTON: default: return null; } -}; +} EnrollAction.propTypes = { enrollmentType: PropTypes.string.isRequired, diff --git a/src/components/course/enrollment/common.jsx b/src/components/course/enrollment/common.jsx index e26332e804..c17da13751 100644 --- a/src/components/course/enrollment/common.jsx +++ b/src/components/course/enrollment/common.jsx @@ -5,17 +5,19 @@ import { Button } from '@edx/paragon'; // Common UI components for enrollment to avoid duplication, consistent styling etc. // Each enroll component can use the EnrollButtonCta to render the enroll behavior -const EnrollButtonWrapper = ({ +function EnrollButtonWrapper({ as: Component, children, ...props -}) => ( - <div> - <Component {...props}> - {children} - </Component> - </div> -); +}) { + return ( + <div> + <Component {...props}> + {children} + </Component> + </div> + ); +} EnrollButtonWrapper.propTypes = { children: PropTypes.node.isRequired, @@ -26,11 +28,13 @@ EnrollButtonWrapper.defaultProps = { as: Button, }; -const EnrollButtonCta = ({ enrollLabel: EnrollLabel, ...props }) => ( - <EnrollButtonWrapper {...props}> - {EnrollLabel} - </EnrollButtonWrapper> -); +function EnrollButtonCta({ enrollLabel: EnrollLabel, ...props }) { + return ( + <EnrollButtonWrapper {...props}> + {EnrollLabel} + </EnrollButtonWrapper> + ); +} EnrollButtonCta.propTypes = { enrollLabel: PropTypes.node.isRequired }; diff --git a/src/components/course/enrollment/components/DisabledEnroll.jsx b/src/components/course/enrollment/components/DisabledEnroll.jsx index b619d9f7b9..5243cac42d 100644 --- a/src/components/course/enrollment/components/DisabledEnroll.jsx +++ b/src/components/course/enrollment/components/DisabledEnroll.jsx @@ -3,13 +3,15 @@ import PropTypes from 'prop-types'; import { EnrollButtonCta } from '../common'; -const EnrollBtnDisabled = ({ enrollLabel }) => ( - <EnrollButtonCta - enrollLabel={enrollLabel} - as="div" - className="btn btn-light btn-block disabled d-block" - /> -); +function EnrollBtnDisabled({ enrollLabel }) { + return ( + <EnrollButtonCta + enrollLabel={enrollLabel} + as="div" + className="btn btn-light btn-block disabled d-block" + /> + ); +} EnrollBtnDisabled.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ToCoursewarePage.jsx b/src/components/course/enrollment/components/ToCoursewarePage.jsx index 524c18b033..f8cbf038ea 100644 --- a/src/components/course/enrollment/components/ToCoursewarePage.jsx +++ b/src/components/course/enrollment/components/ToCoursewarePage.jsx @@ -13,9 +13,9 @@ import { enrollLinkClass } from '../constants'; * Renders a hyperlink to the course info url (or enrollment url) * Uses the passed in enroll label as the Label shown along with enroll link */ -const ToCoursewarePage = ({ +function ToCoursewarePage({ enrollLabel, enrollmentUrl, userEnrollment, subscriptionLicense, -}) => { +}) { const shouldUseEnrollmentUrl = shouldUpgradeUserEnrollment({ userEnrollment, subscriptionLicense, @@ -36,7 +36,7 @@ const ToCoursewarePage = ({ onClick={handleClick} /> ); -}; +} ToCoursewarePage.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ToDataSharingConsent.jsx b/src/components/course/enrollment/components/ToDataSharingConsent.jsx index 0b1c87e0dc..d7ec75a06f 100644 --- a/src/components/course/enrollment/components/ToDataSharingConsent.jsx +++ b/src/components/course/enrollment/components/ToDataSharingConsent.jsx @@ -13,7 +13,7 @@ import { CourseContext } from '../../CourseContextProvider'; import { CourseEnrollmentsContext } from '../../../dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider'; // Data sharing consent -const ToDataSharingConsentPage = ({ enrollLabel, enrollmentUrl }) => { +function ToDataSharingConsentPage({ enrollLabel, enrollmentUrl }) { const { state: { activeCourseRun: { key: courseRunKey }, @@ -45,7 +45,7 @@ const ToDataSharingConsentPage = ({ enrollLabel, enrollmentUrl }) => { }} /> ); -}; +} ToDataSharingConsentPage.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ToEcomBasketPage.jsx b/src/components/course/enrollment/components/ToEcomBasketPage.jsx index 9c12cb27b3..16615c3143 100644 --- a/src/components/course/enrollment/components/ToEcomBasketPage.jsx +++ b/src/components/course/enrollment/components/ToEcomBasketPage.jsx @@ -15,7 +15,7 @@ import { EnrollButtonCta } from '../common'; * @param {Component} args.enrollLabel An EnrollLabel component * @returns {Component} Rendered enroll button with a enrollment modal behavior included. */ -const ToEcomBasketPage = ({ enrollLabel, enrollmentUrl, courseRunPrice }) => { +function ToEcomBasketPage({ enrollLabel, enrollmentUrl, courseRunPrice }) { const { userSubsidyApplicableToCourse, couponCodesCount } = useSubsidyDataForCourse(); const [isModalOpen, setIsModalOpen] = useState(false); @@ -36,7 +36,7 @@ const ToEcomBasketPage = ({ enrollLabel, enrollmentUrl, courseRunPrice }) => { /> </> ); -}; +} ToEcomBasketPage.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ViewOnDashboard.jsx b/src/components/course/enrollment/components/ViewOnDashboard.jsx index b19c6890c8..14ad0bc37c 100644 --- a/src/components/course/enrollment/components/ViewOnDashboard.jsx +++ b/src/components/course/enrollment/components/ViewOnDashboard.jsx @@ -9,7 +9,7 @@ import { EnrollButtonCta } from '../common'; import { enrollLinkClass } from '../constants'; -const ViewOnDashboard = ({ enrollLabel }) => { +function ViewOnDashboard({ enrollLabel }) { const { enterpriseConfig } = useContext(AppContext); const handleClick = useTrackSearchConversionClickHandler({ eventName: 'edx.ui.enterprise.learner_portal.course.enroll_button.to_dashboard.clicked', @@ -24,7 +24,7 @@ const ViewOnDashboard = ({ enrollLabel }) => { onClick={handleClick} /> ); -}; +} ViewOnDashboard.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/tests/EnrollAction.test.jsx b/src/components/course/enrollment/tests/EnrollAction.test.jsx index a672495b62..1da5daea40 100644 --- a/src/components/course/enrollment/tests/EnrollAction.test.jsx +++ b/src/components/course/enrollment/tests/EnrollAction.test.jsx @@ -52,10 +52,9 @@ const subscriptionLicense = { uuid: 'a-license' }; * @param {object} args Arguments. * @param {string} args.enrollAction */ -const EnrollLabel = (props) => ( - // eslint-disable-next-line react/prop-types - <div>{props.enrollLabelText}</div> -); +function EnrollLabel(props) { + return <div>{props.enrollLabelText}</div>; +} const renderEnrollAction = ({ enrollAction, courseInitState = selfPacedCourseWithLicenseSubsidy, diff --git a/src/components/course/enrollment/tests/hooks.test.jsx b/src/components/course/enrollment/tests/hooks.test.jsx index 11745c04f6..b13fa9c361 100644 --- a/src/components/course/enrollment/tests/hooks.test.jsx +++ b/src/components/course/enrollment/tests/hooks.test.jsx @@ -39,20 +39,22 @@ const baseUserSubsidyState = { }, }; -const ContextWrapper = ({ +function ContextWrapper({ initialCourseState, initialSubsidyRequestContextValue, initialUserSubsidyState, children, -}) => ( - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> - <CourseContextProvider initialState={initialCourseState}> - {children} - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> -); +}) { + return ( + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> + <CourseContextProvider initialState={initialCourseState}> + {children} + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + ); +} ContextWrapper.propTypes = { initialCourseState: PropTypes.shape(), diff --git a/src/components/course/tests/CourseAssociatedPrograms.test.jsx b/src/components/course/tests/CourseAssociatedPrograms.test.jsx index 08f934456e..225ef67479 100644 --- a/src/components/course/tests/CourseAssociatedPrograms.test.jsx +++ b/src/components/course/tests/CourseAssociatedPrograms.test.jsx @@ -11,16 +11,18 @@ const baseSubsidyRequestContextValue = { catalogsForSubsidyRequests: [], }; -const CourseAssociatedProgramsWithCourseContext = ({ +function CourseAssociatedProgramsWithCourseContext({ initialState, subsidyRequestContextValue, -}) => ( - <SubsidyRequestsContext.Provider value={subsidyRequestContextValue}> - <CourseContextProvider initialState={initialState}> - <CourseAssociatedPrograms /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> -); +}) { + return ( + <SubsidyRequestsContext.Provider value={subsidyRequestContextValue}> + <CourseContextProvider initialState={initialState}> + <CourseAssociatedPrograms /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + ); +} CourseAssociatedProgramsWithCourseContext.propTypes = { initialState: PropTypes.shape(), diff --git a/src/components/course/tests/CourseContextProvider.test.jsx b/src/components/course/tests/CourseContextProvider.test.jsx index c4edd99262..0f8b908e8a 100644 --- a/src/components/course/tests/CourseContextProvider.test.jsx +++ b/src/components/course/tests/CourseContextProvider.test.jsx @@ -18,17 +18,19 @@ const baseInitialCourseState = { catalog: { catalogList: [] }, }; -const CourseContextProviderWrapper = ({ +function CourseContextProviderWrapper({ subsidyRequestsContextValue, initialCourseState, children, -}) => ( - <SubsidyRequestsContext.Provider value={subsidyRequestsContextValue}> - <CourseContextProvider initialState={initialCourseState}> - {children} - </CourseContextProvider> - </SubsidyRequestsContext.Provider> -); +}) { + return ( + <SubsidyRequestsContext.Provider value={subsidyRequestsContextValue}> + <CourseContextProvider initialState={initialCourseState}> + {children} + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + ); +} CourseContextProviderWrapper.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx b/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx index 675b031012..d4d2854d34 100644 --- a/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx +++ b/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx @@ -36,17 +36,19 @@ const defaultCourseEnrollmentsState = { }, }; -const CourseEnrollmentFailedAlertWrapper = ({ +function CourseEnrollmentFailedAlertWrapper({ initialAppState = defaultAppState, initialCourseEnrollmentsState = defaultCourseEnrollmentsState, ...rest -}) => ( - <AppContext.Provider value={initialAppState}> - <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> - <CourseEnrollmentFailedAlert {...rest} /> - </CourseEnrollmentsContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> + <CourseEnrollmentFailedAlert {...rest} /> + </CourseEnrollmentsContext.Provider> + </AppContext.Provider> + ); +} describe('<CourseEnrollmentFailedAlert />', () => { describe('Upgraded from dashboard', () => { diff --git a/src/components/course/tests/CourseHeader.test.jsx b/src/components/course/tests/CourseHeader.test.jsx index d8d0caee65..04db125b1c 100644 --- a/src/components/course/tests/CourseHeader.test.jsx +++ b/src/components/course/tests/CourseHeader.test.jsx @@ -21,8 +21,12 @@ useLocation.mockImplementation(() => ({ })); // Stub out the enroll button to avoid testing its implementation here -jest.mock('../CourseRunCards', () => () => <p>Cards</p>); -jest.mock('../SubsidyRequestButton', () => () => <p>SubsidyRequestButton</p>); +jest.mock('../CourseRunCards', () => function () { + return <p>Cards</p>; +}); +jest.mock('../SubsidyRequestButton', () => function () { + return <p>SubsidyRequestButton</p>; +}); const defaultSubsidyRequestsState = { requestsBySubsidyType: { @@ -43,25 +47,27 @@ const defaultCourseEnrollmentsState = { }; /* eslint-disable react/prop-types */ -const CourseHeaderWrapper = ({ +function CourseHeaderWrapper({ initialAppState = {}, initialCourseEnrollmentsState = defaultCourseEnrollmentsState, initialCourseState = {}, initialUserSubsidyState = {}, initialSubsidyRequestsState = defaultSubsidyRequestsState, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> - <CourseContextProvider initialState={initialCourseState}> - <CourseHeader /> - </CourseContextProvider> - </CourseEnrollmentsContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> + <CourseContextProvider initialState={initialCourseState}> + <CourseHeader /> + </CourseContextProvider> + </CourseEnrollmentsContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<CourseHeader />', () => { diff --git a/src/components/course/tests/CourseRecommendationCard.test.jsx b/src/components/course/tests/CourseRecommendationCard.test.jsx index caf254e5ff..6a0a3e934a 100644 --- a/src/components/course/tests/CourseRecommendationCard.test.jsx +++ b/src/components/course/tests/CourseRecommendationCard.test.jsx @@ -26,11 +26,13 @@ const initialAppState = { }; /* eslint-disable react/prop-types */ -const CourseRecommendationCardWithContext = (props) => ( - <AppContext.Provider value={initialAppState}> - <CourseRecommendationCard {...props} /> - </AppContext.Provider> -); +function CourseRecommendationCardWithContext(props) { + return ( + <AppContext.Provider value={initialAppState}> + <CourseRecommendationCard {...props} /> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const TEST_COURSE_KEY = 'test-course-key'; diff --git a/src/components/course/tests/CourseRecommendations.test.jsx b/src/components/course/tests/CourseRecommendations.test.jsx index 76a25b7a7c..e00d049f78 100644 --- a/src/components/course/tests/CourseRecommendations.test.jsx +++ b/src/components/course/tests/CourseRecommendations.test.jsx @@ -54,13 +54,15 @@ const initialCourseState = { }; /* eslint-disable react/prop-types */ -const CourseRecommendationsWithContext = () => ( - <AppContext.Provider value={initialAppState}> - <CourseContext.Provider value={initialCourseState}> - <CourseRecommendations /> - </CourseContext.Provider> - </AppContext.Provider> -); +function CourseRecommendationsWithContext() { + return ( + <AppContext.Provider value={initialAppState}> + <CourseContext.Provider value={initialCourseState}> + <CourseRecommendations /> + </CourseContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<CourseRecommendations />', () => { diff --git a/src/components/course/tests/CourseRunCard.test.jsx b/src/components/course/tests/CourseRunCard.test.jsx index e1fb318eba..0901e1471c 100644 --- a/src/components/course/tests/CourseRunCard.test.jsx +++ b/src/components/course/tests/CourseRunCard.test.jsx @@ -28,12 +28,14 @@ const DATE_FORMAT = 'MMM D'; const COURSE_ID = '123'; jest.mock('../../../config'); -jest.mock('../enrollment/EnrollAction', () => ({ enrollLabel, enrollmentType }) => ( - <> - <span>{enrollLabel}</span> - <span>{enrollmentType}</span> - </> -)); +jest.mock('../enrollment/EnrollAction', () => function ({ enrollLabel, enrollmentType }) { + return ( + <> + <span>{enrollLabel}</span> + <span>{enrollmentType}</span> + </> + ); +}); jest.mock('../data/hooks', () => ({ useUserHasSubsidyRequestForCourse: jest.fn(() => false), useCourseEnrollmentUrl: jest.fn(() => false), diff --git a/src/components/course/tests/CourseSidebarPrice.test.jsx b/src/components/course/tests/CourseSidebarPrice.test.jsx index 913f190734..c9d661bb91 100644 --- a/src/components/course/tests/CourseSidebarPrice.test.jsx +++ b/src/components/course/tests/CourseSidebarPrice.test.jsx @@ -96,22 +96,24 @@ const defaultUserSubsidyState = { }; /* eslint-disable react/prop-types */ -const SidebarWithContext = ({ +function SidebarWithContext({ initialAppState = appStateWithOrigPriceHidden, subsidyRequestsState = defaultSubsidyRequestsState, initialCourseState, initialUserSubsidyState = defaultUserSubsidyState, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={subsidyRequestsState}> - <CourseContextProvider initialState={initialCourseState}> - <CourseSidebarPrice /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={subsidyRequestsState}> + <CourseContextProvider initialState={initialCourseState}> + <CourseSidebarPrice /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const SPONSORED_BY_TEXT = 'Sponsored by test-enterprise'; diff --git a/src/components/course/tests/CourseSkills.test.jsx b/src/components/course/tests/CourseSkills.test.jsx index a4ff82e679..90006598cb 100644 --- a/src/components/course/tests/CourseSkills.test.jsx +++ b/src/components/course/tests/CourseSkills.test.jsx @@ -25,19 +25,21 @@ const baseSubsidyRequestContextValue = { catalogsForSubsidyRequests: [], }; -const CourseSkillsWithContext = ({ +function CourseSkillsWithContext({ initialAppState, initialCourseState, initialSubsidyRequestContextValue, -}) => ( - <AppContext.Provider value={initialAppState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> - <CourseContextProvider initialState={initialCourseState}> - <CourseSkills /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> + <CourseContextProvider initialState={initialCourseState}> + <CourseSkills /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + </AppContext.Provider> + ); +} CourseSkillsWithContext.propTypes = { initialAppState: PropTypes.shape(), diff --git a/src/components/course/tests/CreatedBy.test.jsx b/src/components/course/tests/CreatedBy.test.jsx index 5f69c34588..d85ac81bfe 100644 --- a/src/components/course/tests/CreatedBy.test.jsx +++ b/src/components/course/tests/CreatedBy.test.jsx @@ -13,13 +13,15 @@ const initialSubsidyRequestsState = { }; // eslint-disable-next-line react/prop-types -const CreatedByWithCourseContext = ({ initialState = {} }) => ( - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <CourseContextProvider initialState={initialState}> - <CreatedBy /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> -); +function CreatedByWithCourseContext({ initialState = {} }) { + return ( + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <CourseContextProvider initialState={initialState}> + <CreatedBy /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + ); +} describe('<CreatedBy />', () => { const initialState = { diff --git a/src/components/course/tests/EnrollModal.test.jsx b/src/components/course/tests/EnrollModal.test.jsx index e09e3c1c44..42739ac77e 100644 --- a/src/components/course/tests/EnrollModal.test.jsx +++ b/src/components/course/tests/EnrollModal.test.jsx @@ -14,7 +14,7 @@ jest.mock('../data/hooks', () => ({ useOptimizelyEnrollmentClickHandler: jest.fn(), })); -const EnrollModalWrapper = ({ +function EnrollModalWrapper({ courseContextValue = { state: { activeCourseRun: { @@ -26,13 +26,15 @@ const EnrollModalWrapper = ({ courseEnrollmentsByStatus: {}, }, ...rest -}) => ( - <CourseContext.Provider value={courseContextValue}> - <CourseEnrollmentsContext.Provider value={CourseEnrollmentsContextVAlue}> - <EnrollModal {...rest} /> - </CourseEnrollmentsContext.Provider> - </CourseContext.Provider> -); +}) { + return ( + <CourseContext.Provider value={courseContextValue}> + <CourseEnrollmentsContext.Provider value={CourseEnrollmentsContextVAlue}> + <EnrollModal {...rest} /> + </CourseEnrollmentsContext.Provider> + </CourseContext.Provider> + ); +} describe('<EnrollModal />', () => { const basicProps = { @@ -80,9 +82,7 @@ describe('<EnrollModal />', () => { <EnrollModalWrapper {...props} />, ); expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.title)).toBeInTheDocument(); - expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.body( - props.userSubsidyApplicableToCourse, props.courseRunPrice, - ))).toBeInTheDocument(); + expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.body(props.userSubsidyApplicableToCourse, props.courseRunPrice))).toBeInTheDocument(); expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.button)).toBeInTheDocument(); }); diff --git a/src/components/course/tests/LicenseRequestedAlert.test.jsx b/src/components/course/tests/LicenseRequestedAlert.test.jsx index 2043aae5ce..c69e74a7e5 100644 --- a/src/components/course/tests/LicenseRequestedAlert.test.jsx +++ b/src/components/course/tests/LicenseRequestedAlert.test.jsx @@ -24,36 +24,38 @@ const initialLicenseRequests = [ ]; /* eslint-disable react/prop-types */ -const LicenseRequestedAlertWrapper = ({ +function LicenseRequestedAlertWrapper({ subscriptions = initialSubscriptions, licenseRequests = initialLicenseRequests, -}) => ( - <UserSubsidyContext.Provider value={{ - couponCodes: { - couponCodes: [], - couponCodesCount: 0, - }, - subscriptionLicense: {}, - customerAgreementConfig: { - subscriptions, - }, - }} - > - <SubsidyRequestsContext.Provider value={ - { - subsidyRequestConfiguration: null, - requestsBySubsidyType: { - [SUBSIDY_TYPE.LICENSE]: licenseRequests, - [SUBSIDY_TYPE.COUPON]: [], - }, - } - } +}) { + return ( + <UserSubsidyContext.Provider value={{ + couponCodes: { + couponCodes: [], + couponCodesCount: 0, + }, + subscriptionLicense: {}, + customerAgreementConfig: { + subscriptions, + }, + }} > - <CourseContext.Provider> - <LicenseRequestedAlert catalogList={[mockCatalogUUID]} /> - </CourseContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> -); + <SubsidyRequestsContext.Provider value={ + { + subsidyRequestConfiguration: null, + requestsBySubsidyType: { + [SUBSIDY_TYPE.LICENSE]: licenseRequests, + [SUBSIDY_TYPE.COUPON]: [], + }, + } + } + > + <CourseContext.Provider> + <LicenseRequestedAlert catalogList={[mockCatalogUUID]} /> + </CourseContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<LicenseRequestedAlert />', () => { @@ -89,9 +91,7 @@ describe('<LicenseRequestedAlert />', () => { Cookies.mockReturnValue({ get: jest.fn(), set: mockSetCookies }); const { getByText, queryByText } = render(<LicenseRequestedAlertWrapper />); fireEvent.click(getByText('Dismiss')); - expect(mockSetCookies).toHaveBeenCalledWith( - LICENSE_REQUESTED_ALERT_DISMISSED_COOKIE_NAME, true, { sameSite: 'strict' }, - ); + expect(mockSetCookies).toHaveBeenCalledWith(LICENSE_REQUESTED_ALERT_DISMISSED_COOKIE_NAME, true, { sameSite: 'strict' }); await waitFor(() => { expect(queryByText(LICENSE_REQUESTED_ALERT_HEADING)).toBeNull(); diff --git a/src/components/course/tests/SubsidyRequestButton.test.jsx b/src/components/course/tests/SubsidyRequestButton.test.jsx index a2dcae6431..e66e231f0e 100644 --- a/src/components/course/tests/SubsidyRequestButton.test.jsx +++ b/src/components/course/tests/SubsidyRequestButton.test.jsx @@ -53,18 +53,20 @@ const initialCourseState = { subsidyRequestCatalogsApplicableToCourse: new Set([TEST_CATALOG_UUID]), }; -const SubsidyRequestButtonWrapper = ({ +function SubsidyRequestButtonWrapper({ subsidyRequestsState = {}, courseState = {}, -}) => ( - <ToastsContext.Provider value={initialToastsState}> - <SubsidyRequestsContext.Provider value={{ ...initialSubsidyRequestsState, ...subsidyRequestsState }}> - <CourseContext.Provider value={{ ...initialCourseState, ...courseState }}> - <SubsidyRequestButton enterpriseSlug={mockEnterpriseSlug} /> - </CourseContext.Provider> - </SubsidyRequestsContext.Provider> - </ToastsContext.Provider> -); +}) { + return ( + <ToastsContext.Provider value={initialToastsState}> + <SubsidyRequestsContext.Provider value={{ ...initialSubsidyRequestsState, ...subsidyRequestsState }}> + <CourseContext.Provider value={{ ...initialCourseState, ...courseState }}> + <SubsidyRequestButton enterpriseSlug={mockEnterpriseSlug} /> + </CourseContext.Provider> + </SubsidyRequestsContext.Provider> + </ToastsContext.Provider> + ); +} describe('<SubsidyRequestButton />', () => { afterEach(() => jest.clearAllMocks()); diff --git a/src/components/dashboard/SubscriptionExpirationModal.jsx b/src/components/dashboard/SubscriptionExpirationModal.jsx index 992d70546e..bdebd5474d 100644 --- a/src/components/dashboard/SubscriptionExpirationModal.jsx +++ b/src/components/dashboard/SubscriptionExpirationModal.jsx @@ -18,7 +18,7 @@ export const MODAL_DIALOG_CLASS_NAME = 'subscription-expiration'; export const SUBSCRIPTION_EXPIRED_MODAL_TITLE = 'Your subscription has expired'; export const SUBSCRIPTION_EXPIRING_MODAL_TITLE = 'Your subscription is expiring'; -const SubscriptionExpirationModal = () => { +function SubscriptionExpirationModal() { const { enterpriseConfig: { uuid: enterpriseId, adminUsers }, config, @@ -52,11 +52,9 @@ const SubscriptionExpirationModal = () => { const renderCertificateText = () => { const { username } = getAuthenticatedUser(); return ( - <> - <a href={`${config.LMS_BASE_URL}/u/${username}`} className="font-weight-bold"> - download your completed certificates - </a> - </> + <a href={`${config.LMS_BASE_URL}/u/${username}`} className="font-weight-bold"> + download your completed certificates + </a> ); }; @@ -158,6 +156,6 @@ const SubscriptionExpirationModal = () => { open /> ); -}; +} export default SubscriptionExpirationModal; diff --git a/src/components/dashboard/main-content/DashboardMainContent.jsx b/src/components/dashboard/main-content/DashboardMainContent.jsx index 26a683f157..27c6d70d0d 100644 --- a/src/components/dashboard/main-content/DashboardMainContent.jsx +++ b/src/components/dashboard/main-content/DashboardMainContent.jsx @@ -12,7 +12,7 @@ import SupportInformation from '../sidebar/SupportInformation'; import SubsidiesSummary from '../sidebar/SubsidiesSummary'; import { isExperimentVariant } from '../../../utils/optimizely'; -const DashboardMainContent = () => { +function DashboardMainContent() { const { enterpriseConfig: { name, @@ -61,6 +61,6 @@ const DashboardMainContent = () => { </MediaQuery> </> ); -}; +} export default DashboardMainContent; diff --git a/src/components/dashboard/main-content/DashboardPopularCourses.jsx b/src/components/dashboard/main-content/DashboardPopularCourses.jsx index 4a86f36f03..bf47e27b3e 100644 --- a/src/components/dashboard/main-content/DashboardPopularCourses.jsx +++ b/src/components/dashboard/main-content/DashboardPopularCourses.jsx @@ -11,7 +11,7 @@ import { COURSE_TITLE, SEARCH_FACET_FILTERS } from '../../search/constants'; import { NUM_POPULAR_COURSES_TO_DISPLAY } from './data/constants'; -const DashboardPopularCourses = () => { +function DashboardPopularCourses() { const { algolia } = useContext(AppContext); const config = getConfig(); @@ -30,6 +30,6 @@ const DashboardPopularCourses = () => { </InstantSearch> </SearchData> ); -}; +} export default DashboardPopularCourses; diff --git a/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx b/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx index ed33162a4e..22e4bf0bc2 100644 --- a/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx @@ -2,13 +2,15 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -const CollapsibleIcon = props => ( - <FontAwesomeIcon - className="color-brand-primary mr-2" - icon={props.icon} - size="2x" - /> -); +function CollapsibleIcon(props) { + return ( + <FontAwesomeIcon + className="color-brand-primary mr-2" + icon={props.icon} + size="2x" + /> + ); +} CollapsibleIcon.propTypes = { icon: PropTypes.shape({ diff --git a/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx b/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx index c4f3ce25fd..7c3a01c528 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx @@ -13,7 +13,7 @@ export const COURSE_SECTION_TITLES = { savedForLater: 'Saved for later', }; -const CourseEnrollments = ({ children }) => { +function CourseEnrollments({ children }) { const { courseEnrollmentsByStatus, fetchCourseEnrollmentsError, @@ -23,18 +23,16 @@ const CourseEnrollments = ({ children }) => { setShowMoveToInProgressCourseSuccess, } = useContext(CourseEnrollmentsContext); - const currentCourseEnrollments = useMemo( - () => sortedEnrollmentsByEnrollmentDate( - [ - ...courseEnrollmentsByStatus.inProgress, ...courseEnrollmentsByStatus.upcoming, - ...courseEnrollmentsByStatus.requested, - ], - ), [ - courseEnrollmentsByStatus.inProgress, - courseEnrollmentsByStatus.upcoming, - courseEnrollmentsByStatus.requested, + const currentCourseEnrollments = useMemo(() => sortedEnrollmentsByEnrollmentDate( + [ + ...courseEnrollmentsByStatus.inProgress, ...courseEnrollmentsByStatus.upcoming, + ...courseEnrollmentsByStatus.requested, ], - ); + ), [ + courseEnrollmentsByStatus.inProgress, + courseEnrollmentsByStatus.upcoming, + courseEnrollmentsByStatus.requested, + ]); const completedCourseEnrollments = useMemo( () => sortedEnrollmentsByEnrollmentDate(courseEnrollmentsByStatus.completed), @@ -90,7 +88,7 @@ const CourseEnrollments = ({ children }) => { </> </> ); -}; +} CourseEnrollments.propTypes = { children: PropTypes.node, diff --git a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx index 049b26c2eb..dad03cd9f6 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx @@ -8,11 +8,11 @@ const iconByVariant = { danger: WarningFilled, }; -const CourseEnrollmentsAlert = ({ +function CourseEnrollmentsAlert({ children, variant, onClose, -}) => { +}) { const icon = iconByVariant[variant]; return ( @@ -26,7 +26,7 @@ const CourseEnrollmentsAlert = ({ {children} </Alert> ); -}; +} CourseEnrollmentsAlert.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx index e70c62eff4..e2f6b0130e 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx @@ -11,7 +11,7 @@ import { transformSubsidyRequest } from './data/utils'; export const CourseEnrollmentsContext = createContext(); -const CourseEnrollmentsContextProvider = ({ children }) => { +function CourseEnrollmentsContextProvider({ children }) { const { enterpriseConfig: { uuid: enterpriseUUID, @@ -82,7 +82,7 @@ const CourseEnrollmentsContextProvider = ({ children }) => { {children} </CourseEnrollmentsContext.Provider> ); -}; +} CourseEnrollmentsContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/CourseSection.jsx b/src/components/dashboard/main-content/course-enrollments/CourseSection.jsx index 61ace352c9..d211a1d5b3 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseSection.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseSection.jsx @@ -42,7 +42,7 @@ class CourseSection extends React.Component { const { subtitle } = this.props; if (!subtitle) { return null; } return <p className="mt-3 mb-0">{subtitle}</p>; - } + }; getCourseRunProps = ({ linkToCertificate, diff --git a/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx b/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx index bb10c28ce9..05b75e1457 100644 --- a/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx +++ b/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx @@ -9,7 +9,7 @@ import { UserSubsidyContext } from '../../../enterprise-user-subsidy'; export const UpgradeableCourseEnrollmentContext = createContext({ isLoading: false, upgradeUrl: undefined }); -export const UpgradeableCourseEnrollmentContextProvider = ({ courseEnrollment, children }) => { +export function UpgradeableCourseEnrollmentContextProvider({ courseEnrollment, children }) { const { enterpriseConfig } = useContext(AppContext); const { subscriptionLicense } = useContext(UserSubsidyContext); const location = useLocation(); @@ -30,7 +30,7 @@ export const UpgradeableCourseEnrollmentContextProvider = ({ courseEnrollment, c {children} </UpgradeableCourseEnrollmentContext.Provider> ); -}; +} UpgradeableCourseEnrollmentContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx index 0ede7c7a4c..24c6114c3a 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx @@ -9,7 +9,7 @@ import ContinueLearningButton from './ContinueLearningButton'; import { isCourseEnded } from '../../../../../utils/common'; import CertificateImg from './images/edx-verified-mini-cert.png'; -const CompletedCourseCard = (props) => { +function CompletedCourseCard(props) { const user = getAuthenticatedUser(); const { username } = user; const { @@ -69,7 +69,7 @@ const CompletedCourseCard = (props) => { {renderCertificateInfo()} </BaseCourseCard> ); -}; +} CompletedCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx index 0da14a6c2a..40f43c56ca 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx @@ -13,14 +13,14 @@ import Notification from './Notification'; import { CourseEnrollmentsContext } from '../CourseEnrollmentsContextProvider'; import { UpgradeableCourseEnrollmentContext } from '../UpgradeableCourseEnrollmentContextProvider'; -export const InProgressCourseCard = ({ +export function InProgressCourseCard({ linkToCourse, courseRunId, title, notifications, courseRunStatus, ...rest -}) => { +}) { const { isLoading: isLoadingUpgradeUrl, upgradeUrl, @@ -156,7 +156,7 @@ export const InProgressCourseCard = ({ /> </BaseCourseCard> ); -}; +} InProgressCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx index a03979ab7b..b8a0850c57 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx @@ -3,32 +3,34 @@ import PropTypes from 'prop-types'; import moment from 'moment'; import { sendEnterpriseTrackEvent } from '@edx/frontend-enterprise-utils'; -const Notification = props => ( - <li> - <div className="notification p-2 mb-2 border rounded"> - <div className="row no-gutters"> - <div className="col-12"> - <a - href={props.url} - onClick={() => sendEnterpriseTrackEvent( - props.enterpriseUUID, - 'edx.ui.enterprise.learner_portal.notification.clicked', - { course_run_id: props.courseRunId, name: props.name }, - )} - > - {props.name} - </a> - {' is due '} - <span className="font-weight-bold"> - {moment(props.date).fromNow()} - </span> - {' on '} - {moment(props.date).format('ddd MMMM D, YYYY')} +function Notification(props) { + return ( + <li> + <div className="notification p-2 mb-2 border rounded"> + <div className="row no-gutters"> + <div className="col-12"> + <a + href={props.url} + onClick={() => sendEnterpriseTrackEvent( + props.enterpriseUUID, + 'edx.ui.enterprise.learner_portal.notification.clicked', + { course_run_id: props.courseRunId, name: props.name }, + )} + > + {props.name} + </a> + {' is due '} + <span className="font-weight-bold"> + {moment(props.date).fromNow()} + </span> + {' on '} + {moment(props.date).format('ddd MMMM D, YYYY')} + </div> </div> </div> - </div> - </li> -); + </li> + ); +} Notification.propTypes = { name: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx index becab65b8e..0c7c7b6110 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx @@ -5,13 +5,15 @@ import BaseCourseCard from './BaseCourseCard'; import { COURSE_STATUSES } from '../data/constants'; -const RequestedCourseCard = (props) => ( - <BaseCourseCard - type={COURSE_STATUSES.requested} - hasViewCertificateLink={false} - {...props} - /> -); +function RequestedCourseCard(props) { + return ( + <BaseCourseCard + type={COURSE_STATUSES.requested} + hasViewCertificateLink={false} + {...props} + /> + ); +} RequestedCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx index f5fcbdcbbc..ba3489152f 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx @@ -11,7 +11,7 @@ import { isCourseEnded } from '../../../../../utils/common'; import { COURSE_STATUSES } from '../data/constants'; import { CourseEnrollmentsContext } from '../CourseEnrollmentsContextProvider'; -const SavedForLaterCourseCard = (props) => { +function SavedForLaterCourseCard(props) { const { title, linkToCourse, @@ -122,7 +122,7 @@ const SavedForLaterCourseCard = (props) => { /> </BaseCourseCard> ); -}; +} SavedForLaterCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx index 4cee187557..c5455f75ca 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx @@ -5,7 +5,7 @@ import moment from 'moment'; import { Button } from '@edx/paragon'; import BaseCourseCard from './BaseCourseCard'; -const UpcomingCourseCard = (props) => { +function UpcomingCourseCard(props) { const renderButtons = () => ( <Button className="btn-xs-block" variant="light" disabled> Available on {moment(props.startDate).format('MMM D')} @@ -15,7 +15,7 @@ const UpcomingCourseCard = (props) => { return ( <BaseCourseCard type="upcoming" buttons={renderButtons()} {...props} /> ); -}; +} UpcomingCourseCard.propTypes = { startDate: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/email-settings/EmailSettingsModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/email-settings/EmailSettingsModal.jsx index f0387d3446..c43733c022 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/email-settings/EmailSettingsModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/email-settings/EmailSettingsModal.jsx @@ -41,7 +41,7 @@ class EmailSettingsModal extends Component { } return 'default'; - } + }; getDisabledStates = () => { const { isFormChanged } = this.state; @@ -49,7 +49,7 @@ class EmailSettingsModal extends Component { return ['pending', 'complete']; } return ['pending', 'complete', 'default']; - } + }; handleSaveButtonClick = () => { const { hasEmailsEnabled } = this.state; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx index e338d91cc5..81c7d40cfb 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx @@ -17,14 +17,14 @@ const initialState = { confirmSuccessful: false, }; -const MarkCompleteModal = ({ +function MarkCompleteModal({ courseId, isOpen, courseTitle, courseLink, onSuccess, onClose, -}) => { +}) { const { enterpriseConfig: { uuid } } = useContext(AppContext); const [ { confirmButtonState, confirmError, confirmSuccessful }, @@ -95,7 +95,7 @@ const MarkCompleteModal = ({ /> </MarkCompleteModalContext.Provider> ); -}; +} MarkCompleteModal.propTypes = { courseId: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx index 7efbde7724..fa6812b8e3 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx @@ -3,7 +3,7 @@ import React, { useContext } from 'react'; import ModalError from './ModalError'; import MarkCompleteModalContext from './MarkCompleteModalContext'; -const ModalBody = () => { +function ModalBody() { const { confirmError, courseLink, @@ -26,6 +26,6 @@ const ModalBody = () => { </p> </> ); -}; +} export default ModalBody; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx index 68e44fcc86..0937fc288c 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx @@ -4,13 +4,13 @@ import { Error } from '@edx/paragon/icons'; import MarkCompleteModalContext from './MarkCompleteModalContext'; -const ModalError = () => { +function ModalError() { const { courseLink, courseTitle } = useContext(MarkCompleteModalContext); return ( <Alert variant="danger" icon={Error}> Unable to save <Alert.Link href={courseLink}>{courseTitle}</Alert.Link> for later. Please try again. </Alert> ); -}; +} export default ModalError; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx index 9c2227e2f8..0dc9711a5c 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx @@ -3,7 +3,7 @@ import React, { useContext } from 'react'; import ModalError from './ModalError'; import MoveToInProgressModalContext from './MoveToInProgressModalContext'; -const ModalBody = () => { +function ModalBody() { const { confirmError, courseLink, @@ -24,6 +24,6 @@ const ModalBody = () => { </p> </> ); -}; +} export default ModalBody; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx index a7b41013c5..5034d8c015 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx @@ -4,13 +4,13 @@ import { Error } from '@edx/paragon/icons'; import MoveToInProgressModalContext from './MoveToInProgressModalContext'; -const ModalError = () => { +function ModalError() { const { courseLink, courseTitle } = useContext(MoveToInProgressModalContext); return ( <Alert variant="danger" icon={Error}> An error occurred while unarchiving <Alert.Link href={courseLink}>{courseTitle}</Alert.Link>. Please try again. </Alert> ); -}; +} export default ModalError; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx index ce8423a989..a9b7f6e3b2 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx @@ -17,14 +17,14 @@ const initialState = { confirmSuccessful: false, }; -const MoveToInProgressModal = ({ +function MoveToInProgressModal({ courseId, isOpen, courseTitle, courseLink, onSuccess, onClose, -}) => { +}) { const { enterpriseConfig: { uuid } } = useContext(AppContext); const [ { confirmButtonState, confirmError, confirmSuccessful }, @@ -86,7 +86,7 @@ const MoveToInProgressModal = ({ /> </MoveToInProgressModalContext.Provider> ); -}; +} MoveToInProgressModal.propTypes = { courseId: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx index 8d2928ce28..25237caaa9 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx @@ -34,17 +34,19 @@ const baseUnenrollModalProps = { const mockAddToast = jest.fn(); -const UnenrollModalWrapper = ({ +function UnenrollModalWrapper({ // eslint-disable-next-line react/prop-types courseEnrollmentsContextValue = defaultCourseEnrollmentsContextValue, ...props -}) => ( - <ToastsContext.Provider value={{ addToast: mockAddToast }}> - <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> - <UnenrollModal {...props} /> - </CourseEnrollmentsContext.Provider> - </ToastsContext.Provider> -); +}) { + return ( + <ToastsContext.Provider value={{ addToast: mockAddToast }}> + <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> + <UnenrollModal {...props} /> + </CourseEnrollmentsContext.Provider> + </ToastsContext.Provider> + ); +} describe('<UnenrollModal />', () => { beforeEach(() => { diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx index 7228652ff3..af46b61e4a 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx @@ -32,18 +32,20 @@ const CARD_COMPONENT_BY_COURSE_STATUS = { }; const TEST_ENTERPRISE_UUID = 'test-uuid'; -const CourseSectionWrapper = (props) => ( - <AppContext.Provider value={{ - enterpriseConfig: { - uuid: TEST_ENTERPRISE_UUID, - }, - }} - > - <CourseSection - {...props} - /> - </AppContext.Provider> -); +function CourseSectionWrapper(props) { + return ( + <AppContext.Provider value={{ + enterpriseConfig: { + uuid: TEST_ENTERPRISE_UUID, + }, + }} + > + <CourseSection + {...props} + /> + </AppContext.Provider> + ); +} describe('<CourseSection />', () => { it('should handle collapsible toggle', () => { diff --git a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx index 82d867ad09..43af361691 100644 --- a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx +++ b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx @@ -16,9 +16,9 @@ import { } from './data/constants'; import CouponCodesWarningModal from '../../program-progress/CouponCodesWarningModal'; -const CouponCodesSummaryCard = ({ +function CouponCodesSummaryCard({ couponCodesCount, couponCodeRequestsCount, className, totalCoursesEligibleForCertificate, programProgressPage, -}) => { +}) { const [ isCouponCodeWarningModalOpen, couponCodeWarningModalOpen, @@ -102,7 +102,7 @@ const CouponCodesSummaryCard = ({ )} </> ); -}; +} CouponCodesSummaryCard.propTypes = { couponCodesCount: PropTypes.number, diff --git a/src/components/dashboard/sidebar/DashboardSidebar.jsx b/src/components/dashboard/sidebar/DashboardSidebar.jsx index b020d51b51..c1af5fe06d 100644 --- a/src/components/dashboard/sidebar/DashboardSidebar.jsx +++ b/src/components/dashboard/sidebar/DashboardSidebar.jsx @@ -4,15 +4,17 @@ import { Card } from '@edx/paragon'; import SupportInformation from './SupportInformation'; import SubsidiesSummary from './SubsidiesSummary'; -const DashboardSidebar = () => ( - <div className="mt-3 mt-lg-0"> - <SubsidiesSummary /> - <Card> - <Card.Section> - <SupportInformation /> - </Card.Section> - </Card> - </div> -); +function DashboardSidebar() { + return ( + <div className="mt-3 mt-lg-0"> + <SubsidiesSummary /> + <Card> + <Card.Section> + <SupportInformation /> + </Card.Section> + </Card> + </div> + ); +} export default DashboardSidebar; diff --git a/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx b/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx index 37d1daa8a0..0a170c3277 100644 --- a/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx +++ b/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx @@ -13,51 +13,53 @@ import { } from './data/constants'; import SidebarCard from './SidebarCard'; -const EnterpriseOffersSummaryCard = ({ className, offer, searchCoursesCta }) => ( - <SidebarCard - title={ - ( - <div className="d-flex align-items-center justify-content-between"> - <h3 className="m-0">{ENTERPRISE_OFFER_SUMMARY_CARD_TITLE}</h3> - <Badge - variant={ENTERPRISE_OFFER_ACTIVE_BADGE_VARIANT} - className="ml-2" - data-testid="enterprise-offer-status-badge" - > - {ENTERPRISE_OFFER_ACTIVE_BADGE_LABEL} - </Badge> - </div> - ) - } - cardClassNames={className} - > - {offer.remainingBalanceForUser && offer.remainingBalanceForUser !== Number.MAX_VALUE - ? ( - <p data-testid="offer-summary-text-detailed"> - Apply your <b>${offer.remainingBalanceForUser}</b>{' '} - learner credit balance to enroll into courses with no out of pocket cost. - </p> - ) - : ( - <p data-testid="offer-summary-text"> - Apply your organization's learner credit balance to enroll into courses with no out of pocket cost. - </p> - ) } +function EnterpriseOffersSummaryCard({ className, offer, searchCoursesCta }) { + return ( + <SidebarCard + title={ + ( + <div className="d-flex align-items-center justify-content-between"> + <h3 className="m-0">{ENTERPRISE_OFFER_SUMMARY_CARD_TITLE}</h3> + <Badge + variant={ENTERPRISE_OFFER_ACTIVE_BADGE_VARIANT} + className="ml-2" + data-testid="enterprise-offer-status-badge" + > + {ENTERPRISE_OFFER_ACTIVE_BADGE_LABEL} + </Badge> + </div> + ) + } + cardClassNames={className} + > + {offer.remainingBalanceForUser && offer.remainingBalanceForUser !== Number.MAX_VALUE + ? ( + <p data-testid="offer-summary-text-detailed"> + Apply your <b>${offer.remainingBalanceForUser}</b>{' '} + learner credit balance to enroll into courses with no out of pocket cost. + </p> + ) + : ( + <p data-testid="offer-summary-text"> + Apply your organization's learner credit balance to enroll into courses with no out of pocket cost. + </p> + ) } - {offer.endDatetime + {offer.endDatetime && ( <p data-testid="offer-summary-end-date-text"> Available until <b>{moment(offer.endDatetime).format('MMM D, YYYY')}</b> </p> )} - {searchCoursesCta && ( - <Row className="mt-3 d-flex justify-content-end"> - <Col xl={7}>{searchCoursesCta}</Col> - </Row> - )} - </SidebarCard> -); + {searchCoursesCta && ( + <Row className="mt-3 d-flex justify-content-end"> + <Col xl={7}>{searchCoursesCta}</Col> + </Row> + )} + </SidebarCard> + ); +} EnterpriseOffersSummaryCard.propTypes = { offer: PropTypes.shape({ diff --git a/src/components/dashboard/sidebar/SidebarCard.jsx b/src/components/dashboard/sidebar/SidebarCard.jsx index 0fa3ea598a..02ed1fd39f 100644 --- a/src/components/dashboard/sidebar/SidebarCard.jsx +++ b/src/components/dashboard/sidebar/SidebarCard.jsx @@ -2,21 +2,23 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Card } from '@edx/paragon'; -const SidebarCard = ({ +function SidebarCard({ title, children, cardClassNames, cardSectionClassNames, -}) => ( - <Card className={cardClassNames}> - {title && <Card.Header title={title} />} - <Card.Section - className={cardSectionClassNames} - > - {children} - </Card.Section> - </Card> -); +}) { + return ( + <Card className={cardClassNames}> + {title && <Card.Header title={title} />} + <Card.Section + className={cardSectionClassNames} + > + {children} + </Card.Section> + </Card> + ); +} SidebarCard.propTypes = { title: PropTypes.node, diff --git a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx index 2b1bd3f46c..7cd7c7303d 100644 --- a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx +++ b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx @@ -22,9 +22,9 @@ import { } from './data/constants'; import SubscriptionExpirationWarningModal from '../../program-progress/SubscriptionExpiringWarningModal'; -const SubscriptionSummaryCard = ({ +function SubscriptionSummaryCard({ subscriptionPlan, licenseRequest, className, courseEndDate, programProgressPage, -}) => { +}) { const [ isSubscriptionExpiringWarningModalOpen, subscriptionExpiringWarningModalOpen, @@ -146,7 +146,7 @@ const SubscriptionSummaryCard = ({ )} </> ); -}; +} SubscriptionSummaryCard.propTypes = { subscriptionPlan: PropTypes.shape({ diff --git a/src/components/dashboard/sidebar/SubsidiesSummary.jsx b/src/components/dashboard/sidebar/SubsidiesSummary.jsx index 0b41900010..9cb5ce2ea0 100644 --- a/src/components/dashboard/sidebar/SubsidiesSummary.jsx +++ b/src/components/dashboard/sidebar/SubsidiesSummary.jsx @@ -14,9 +14,9 @@ import SidebarCard from './SidebarCard'; import { CourseEnrollmentsContext } from '../main-content/course-enrollments/CourseEnrollmentsContextProvider'; import { SubsidyRequestsContext, SUBSIDY_TYPE } from '../../enterprise-subsidy-requests'; -const SubsidiesSummary = ({ +function SubsidiesSummary({ className, showSearchCoursesCta, totalCoursesEligibleForCertificate, courseEndDate, programProgressPage, -}) => { +}) { const { enterpriseConfig: { slug, @@ -121,7 +121,7 @@ const SubsidiesSummary = ({ )} </> ); -}; +} SubsidiesSummary.propTypes = { totalCoursesEligibleForCertificate: PropTypes.number, diff --git a/src/components/dashboard/sidebar/SupportInformation.jsx b/src/components/dashboard/sidebar/SupportInformation.jsx index 1403098981..78cfed7dad 100644 --- a/src/components/dashboard/sidebar/SupportInformation.jsx +++ b/src/components/dashboard/sidebar/SupportInformation.jsx @@ -7,7 +7,7 @@ import PropTypes from 'prop-types'; import { SidebarBlock } from '../../layout'; import { CONTACT_HELP_EMAIL_MESSAGE, NEED_HELP_BLOCK_TITLE } from './data/constants'; -const SupportInformation = ({ className }) => { +function SupportInformation({ className }) { const config = getConfig(); const { enterpriseConfig: { @@ -51,7 +51,7 @@ const SupportInformation = ({ className }) => { </p> </SidebarBlock> ); -}; +} SupportInformation.propTypes = { className: PropTypes.string, diff --git a/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx b/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx index edef058841..8acbba31cc 100644 --- a/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx +++ b/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx @@ -20,7 +20,7 @@ import { SubsidyRequestsContext } from '../../../enterprise-subsidy-requests'; import { SUBSIDY_REQUEST_STATE, SUBSIDY_TYPE } from '../../../enterprise-subsidy-requests/constants'; /* eslint-disable react/prop-types */ -const DashboardSidebarWithContext = ({ +function DashboardSidebarWithContext({ initialAppState = { fakeContext: 'foo' }, initialUserSubsidyState = {}, initialSubsidyRequestsState = { @@ -34,17 +34,19 @@ const DashboardSidebarWithContext = ({ initialCourseEnrollmentsState = { courseEnrollmentsByStatus: {}, }, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <CourseEnrollmentsContextProvider value={initialCourseEnrollmentsState}> - <DashboardSidebar /> - </CourseEnrollmentsContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <CourseEnrollmentsContextProvider value={initialCourseEnrollmentsState}> + <DashboardSidebar /> + </CourseEnrollmentsContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<DashboardSidebar />', () => { diff --git a/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx b/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx index 57452becc5..ce6c8d6350 100644 --- a/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx +++ b/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx @@ -42,13 +42,15 @@ const initialUserSubsidyState = { }, }; -const SubscriptionSummaryCardForProgressPageWithContext = (props) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubscriptionSummaryCard {...props} /> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +function SubscriptionSummaryCardForProgressPageWithContext(props) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubscriptionSummaryCard {...props} /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SubscriptionSummaryCard />', () => { const subscriptionPlan = { diff --git a/src/components/dashboard/tests/DashboardPage.test.jsx b/src/components/dashboard/tests/DashboardPage.test.jsx index 684b32e9f7..77badd0cb8 100644 --- a/src/components/dashboard/tests/DashboardPage.test.jsx +++ b/src/components/dashboard/tests/DashboardPage.test.jsx @@ -104,24 +104,26 @@ let mockLocation = { }; /* eslint-disable react/prop-types */ -const DashboardWithContext = ({ +function DashboardWithContext({ initialAppState = defaultAppState, initialUserSubsidyState = defaultUserSubsidyState, initialCourseState = defaultCourseState, initialSubsidyRequestState = defaultSubsidyRequestState, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <CourseEnrollmentsContextProvider> - <CourseContextProvider initialState={initialCourseState}> - <DashboardPage /> - </CourseContextProvider> - </CourseEnrollmentsContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <CourseEnrollmentsContextProvider> + <CourseContextProvider initialState={initialCourseState}> + <DashboardPage /> + </CourseContextProvider> + </CourseEnrollmentsContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ jest.mock('react-router-dom', () => ({ @@ -373,9 +375,7 @@ describe('<Dashboard />', () => { expect(screen.queryByText(SUBSCRIPTION_EXPIRED_MODAL_TITLE)).toBeFalsy(); const modal = screen.getByRole('dialog'); fireEvent.click(modal.querySelector('button')); - expect(mockSetCookies).toHaveBeenCalledWith( - `${SEEN_SUBSCRIPTION_EXPIRATION_MODAL_COOKIE_PREFIX}60-${defaultAppState.enterpriseConfig.uuid}-${subscriptionPlanId}`, true, { sameSite: 'strict' }, - ); + expect(mockSetCookies).toHaveBeenCalledWith(`${SEEN_SUBSCRIPTION_EXPIRATION_MODAL_COOKIE_PREFIX}60-${defaultAppState.enterpriseConfig.uuid}-${subscriptionPlanId}`, true, { sameSite: 'strict' }); }); it('should not show the modal if 60 >= daysUntilExpiration > 30 and the 60 day cookie has been set', () => { @@ -418,9 +418,7 @@ describe('<Dashboard />', () => { expect(screen.queryByText(SUBSCRIPTION_EXPIRED_MODAL_TITLE)).toBeFalsy(); const modal = screen.getByRole('dialog'); fireEvent.click(modal.querySelector('button')); - expect(mockSetCookies).toHaveBeenCalledWith( - `${SEEN_SUBSCRIPTION_EXPIRATION_MODAL_COOKIE_PREFIX}30-${defaultAppState.enterpriseConfig.uuid}-${subscriptionPlanId}`, true, { sameSite: 'strict' }, - ); + expect(mockSetCookies).toHaveBeenCalledWith(`${SEEN_SUBSCRIPTION_EXPIRATION_MODAL_COOKIE_PREFIX}30-${defaultAppState.enterpriseConfig.uuid}-${subscriptionPlanId}`, true, { sameSite: 'strict' }); }); it('should not show the modal if 30 >= daysUntilExpiration > 0 and the 30 day cookie has been set', () => { diff --git a/src/components/enterprise-invite/EnterpriseInvitePage.jsx b/src/components/enterprise-invite/EnterpriseInvitePage.jsx index 2c1f38f57a..2e09af24a6 100644 --- a/src/components/enterprise-invite/EnterpriseInvitePage.jsx +++ b/src/components/enterprise-invite/EnterpriseInvitePage.jsx @@ -31,7 +31,7 @@ export const CTA_BUTTON_TEXT = 'Continue to edX.org'; * If successful, the user is redirected to their enterprise customer's Learner Portal * slug. If an error occurred, an appropriate error page is shown and an error is logged. */ -const EnterpriseInvitePage = () => { +function EnterpriseInvitePage() { const { enterpriseCustomerInviteKey } = useParams(); const [inviteError, setInviteError] = useState(); const [isLoading, setIsLoading] = useState(true); @@ -114,6 +114,6 @@ const EnterpriseInvitePage = () => { )} </LoginRedirect> ); -}; +} export default EnterpriseInvitePage; diff --git a/src/components/enterprise-page/EnterprisePage.test.jsx b/src/components/enterprise-page/EnterprisePage.test.jsx index 1596333296..f15c5ddedd 100644 --- a/src/components/enterprise-page/EnterprisePage.test.jsx +++ b/src/components/enterprise-page/EnterprisePage.test.jsx @@ -56,10 +56,10 @@ describe('<EnterprisePage />', () => { slug: 'test-slug', }; jest.spyOn(hooks, 'useEnterpriseCustomerConfig').mockImplementation(() => [mockEnterpriseConfig, undefined]); - const ChildComponent = () => { + function ChildComponent() { const contextValue = useContext(AppContext); return <div className="did-i-render" data-contextvalue={contextValue} />; - }; + } const wrapper = mount(<EnterprisePage><ChildComponent /></EnterprisePage>); const actualContextValue = wrapper.find('.did-i-render').prop('data-contextvalue'); expect(actualContextValue).toEqual( diff --git a/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx b/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx index 85daaaaf36..4663156f05 100644 --- a/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx +++ b/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx @@ -10,7 +10,7 @@ import { useSelectedEnterpriseUUIDByUserRoles, } from './data/hooks'; -const EnterpriseCustomerRedirect = () => { +function EnterpriseCustomerRedirect() { const { authenticatedUser } = useContext(AppContext); const { roles } = authenticatedUser; const selectedEnterpriseUUID = useSelectedEnterpriseUUIDByUserRoles(roles); @@ -29,6 +29,6 @@ const EnterpriseCustomerRedirect = () => { } return <Redirect to={`/${enterpriseCustomer.slug}`} />; -}; +} export default EnterpriseCustomerRedirect; diff --git a/src/components/enterprise-redirects/EnterprisePageRedirect.jsx b/src/components/enterprise-redirects/EnterprisePageRedirect.jsx index ea555d5826..5756004e47 100644 --- a/src/components/enterprise-redirects/EnterprisePageRedirect.jsx +++ b/src/components/enterprise-redirects/EnterprisePageRedirect.jsx @@ -10,7 +10,7 @@ import { useSelectedEnterpriseUUIDByUserRoles, } from './data/hooks'; -const EnterprisePageRedirect = () => { +function EnterprisePageRedirect() { const { authenticatedUser } = useContext(AppContext); const { redirectPath } = useParams(); const { roles } = authenticatedUser; @@ -34,6 +34,6 @@ const EnterprisePageRedirect = () => { } return <Redirect to={`/${enterpriseCustomer.slug}/${redirectPath}`} />; -}; +} export default EnterprisePageRedirect; diff --git a/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx b/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx index d1fb9a07a5..180f877412 100644 --- a/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx +++ b/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx @@ -25,13 +25,15 @@ const TEST_ENTERPRISES = [ ]; /* eslint-disable react/prop-types */ -const EnterpriseCustomerRedirectWithContext = ({ +function EnterpriseCustomerRedirectWithContext({ initialAppState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <EnterpriseCustomerRedirect /> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <EnterpriseCustomerRedirect /> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<EnterpriseCustomerRedirect />', () => { diff --git a/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx b/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx index 6401340025..abdc2493ea 100644 --- a/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx +++ b/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx @@ -26,13 +26,15 @@ const TEST_ENTERPRISES = [ ]; /* eslint-disable react/prop-types */ -const EnterprisePageRedirectWithContext = ({ +function EnterprisePageRedirectWithContext({ initialAppState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <EnterprisePageRedirect /> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <EnterprisePageRedirect /> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<EnterprisePageRedirect />', () => { diff --git a/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx b/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx index 07ce904463..a074b2bc96 100644 --- a/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx +++ b/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx @@ -13,7 +13,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy'; export const SubsidyRequestsContext = createContext(); -const SubsidyRequestsContextProvider = ({ children }) => { +function SubsidyRequestsContextProvider({ children }) { const { enterpriseConfig: { uuid: enterpriseUUID, @@ -75,7 +75,7 @@ const SubsidyRequestsContextProvider = ({ children }) => { {children} </SubsidyRequestsContext.Provider> ); -}; +} SubsidyRequestsContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx b/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx index 48b9589b71..38f5758eb9 100644 --- a/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx +++ b/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx @@ -15,7 +15,7 @@ const enterpriseConfig = { uuid: 'example-enterprise-uuid', }; -const SubsidyRequestsContextProviderWrapper = ({ +function SubsidyRequestsContextProviderWrapper({ initialAppState = { enterpriseConfig, }, @@ -28,15 +28,17 @@ const SubsidyRequestsContextProviderWrapper = ({ subscriptions: [], }, }, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContextProvider> - <div>children</div> - </SubsidyRequestsContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContextProvider> + <div>children</div> + </SubsidyRequestsContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SubsidyRequestsContextProvider />', () => { beforeEach(() => { diff --git a/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx b/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx index 34c8d60f06..91e537067d 100644 --- a/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx +++ b/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx @@ -8,7 +8,7 @@ import { LICENSE_STATUS } from './data/constants'; /** * Redirects users to the license activation page if they have an assigned license. */ -const AutoActivateLicense = () => { +function AutoActivateLicense() { const { enterpriseConfig } = useContext(AppContext); const { subscriptionLicense } = useContext(UserSubsidyContext); const location = useLocation(); @@ -28,6 +28,6 @@ const AutoActivateLicense = () => { }} /> ); -}; +} export default AutoActivateLicense; diff --git a/src/components/enterprise-user-subsidy/UserSubsidy.jsx b/src/components/enterprise-user-subsidy/UserSubsidy.jsx index 87d8f60106..6a06d92621 100644 --- a/src/components/enterprise-user-subsidy/UserSubsidy.jsx +++ b/src/components/enterprise-user-subsidy/UserSubsidy.jsx @@ -17,7 +17,7 @@ import { LOADING_SCREEN_READER_TEXT } from './data/constants'; export const UserSubsidyContext = createContext(); -const UserSubsidy = ({ children }) => { +function UserSubsidy({ children }) { const { enterpriseConfig } = useContext(AppContext); const [customerAgreementConfig, isLoadingCustomerAgreementConfig] = useCustomerAgreementData(enterpriseConfig.uuid); const { @@ -115,7 +115,7 @@ const UserSubsidy = ({ children }) => { </UserSubsidyContext.Provider> </> ); -}; +} UserSubsidy.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/enterprise-user-subsidy/data/hooks.js b/src/components/enterprise-user-subsidy/data/hooks.js index 5711cc9d4d..ee8b9bce17 100644 --- a/src/components/enterprise-user-subsidy/data/hooks.js +++ b/src/components/enterprise-user-subsidy/data/hooks.js @@ -177,12 +177,14 @@ export function useCouponCodes(enterpriseId) { useEffect( () => { if (features.ENROLL_WITH_CODES) { - fetchCouponCodeAssignments({ - enterprise_uuid: enterpriseId, - full_discount_only: 'True', // Must be a string because the API does a string compare not a true JSON boolean compare. - is_active: 'True', - }, - dispatch); + fetchCouponCodeAssignments( + { + enterprise_uuid: enterpriseId, + full_discount_only: 'True', // Must be a string because the API does a string compare not a true JSON boolean compare. + is_active: 'True', + }, + dispatch, + ); } }, [enterpriseId], diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx index a680856a50..64962b6bac 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx @@ -16,7 +16,7 @@ import { OFFER_BALANCE_CLICK_EVENT, } from './data/constants'; -const EnterpriseOffersBalanceAlert = ({ hasNoEnterpriseOffersBalance }) => { +function EnterpriseOffersBalanceAlert({ hasNoEnterpriseOffersBalance }) { const { enterpriseConfig: { uuid: enterpriseCustomerUUID, adminUsers }, } = useContext(AppContext); @@ -59,7 +59,7 @@ const EnterpriseOffersBalanceAlert = ({ hasNoEnterpriseOffersBalance }) => { </Alert> </Container> ); -}; +} EnterpriseOffersBalanceAlert.propTypes = { hasNoEnterpriseOffersBalance: PropTypes.bool.isRequired, diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx index 8ffa9239a5..8c80b2eb9d 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx @@ -10,21 +10,23 @@ import { NO_BALANCE_ALERT_TEXT, } from '../data/constants'; -const EnterpriseOffersBalanceAlertWrapper = ({ +function EnterpriseOffersBalanceAlertWrapper({ enterpriseConfig = { adminUsers: [], }, hasNoEnterpriseOffersBalance, -}) => ( - <AppContext.Provider value={{ - enterpriseConfig, - }} - > - <EnterpriseOffersBalanceAlert - hasNoEnterpriseOffersBalance={hasNoEnterpriseOffersBalance} - /> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={{ + enterpriseConfig, + }} + > + <EnterpriseOffersBalanceAlert + hasNoEnterpriseOffersBalance={hasNoEnterpriseOffersBalance} + /> + </AppContext.Provider> + ); +} describe('<EnterpriseOffersBalanceAlert />', () => { it('should not render mailto link if there are no enterprise admins', () => { diff --git a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx index 1d06416ac3..a4cb6fb4b8 100644 --- a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx @@ -12,15 +12,17 @@ const TEST_ENTERPRISE_SLUG = 'test-slug'; const initialPathname = `/${TEST_ENTERPRISE_SLUG}`; // eslint-disable-next-line react/prop-types -const AutoActivateLicenseWrapper = ({ subscriptionLicense }) => ( - <Route path={initialPathname} exact> - <AppContext.Provider value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG } }}> - <UserSubsidyContext.Provider value={{ subscriptionLicense }}> - <AutoActivateLicense /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </Route> -); +function AutoActivateLicenseWrapper({ subscriptionLicense }) { + return ( + <Route path={initialPathname} exact> + <AppContext.Provider value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG } }}> + <UserSubsidyContext.Provider value={{ subscriptionLicense }}> + <AutoActivateLicense /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </Route> + ); +} describe('<AutoActivationLicense />', () => { afterEach(() => jest.clearAllMocks()); @@ -45,11 +47,9 @@ describe('<AutoActivationLicense />', () => { test('renders when license status is assigned', () => { const activationKey = 'test-uuid'; const subscriptionLicense = { status: 'assigned', activationKey }; - const { history } = renderWithRouter( - <AutoActivateLicenseWrapper subscriptionLicense={subscriptionLicense} />, { - route: initialPathname, - }, - ); + const { history } = renderWithRouter(<AutoActivateLicenseWrapper subscriptionLicense={subscriptionLicense} />, { + route: initialPathname, + }); expect(history.location.pathname).toEqual(`/test-slug/licenses/${activationKey}/activate`); expect(history.location.state.from).toEqual(initialPathname); }); diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 55bcabfa6a..7fad446394 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -56,37 +56,39 @@ const mockEmptyListResponse = { }; /* eslint-disable react/prop-types */ -const UserSubsidyWithAppContext = ({ +function UserSubsidyWithAppContext({ enterpriseConfig = {}, contextValue = {}, children, -}) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { - slug: TEST_ENTERPRISE_SLUG, - uuid: TEST_ENTERPRISE_UUID, - ...enterpriseConfig, - }, - ...contextValue, - }} - > - <UserSubsidy> - {children} - </UserSubsidy> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { + slug: TEST_ENTERPRISE_SLUG, + uuid: TEST_ENTERPRISE_UUID, + ...enterpriseConfig, + }, + ...contextValue, + }} + > + <UserSubsidy> + {children} + </UserSubsidy> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ -const SubscriptionLicenseConsumer = () => { +function SubscriptionLicenseConsumer() { const { subscriptionLicense } = useContext(UserSubsidyContext); return <div>License status: {subscriptionLicense?.status || 'none'}</div>; -}; +} -const CouponCodesConsumer = () => { +function CouponCodesConsumer() { const { couponCodes } = useContext(UserSubsidyContext); return <div>Coupon codes count: {couponCodes?.couponCodesCount || 'none'}</div>; -}; +} describe('UserSubsidy', () => { describe('without subsidy', () => { diff --git a/src/components/error-page/ErrorPage.jsx b/src/components/error-page/ErrorPage.jsx index 91d00d5a3c..8286123035 100644 --- a/src/components/error-page/ErrorPage.jsx +++ b/src/components/error-page/ErrorPage.jsx @@ -12,30 +12,32 @@ import ErrorPageHeader from './ErrorPageHeader'; * React component for the error case when attempting to link a user to a customer. Renders * a header, error alert, and a footer. */ -const ErrorPage = ({ +function ErrorPage({ title, subtitle, showSiteFooter, children, -}) => ( - <> - <ErrorPageHeader /> - <main id="content" className="error-page-container"> - <Container> - <Col xs={12} lg={{ span: 10, offset: 1 }}> - <h1 className="error-page-title h2">{title}</h1> - {subtitle && ( - <h2 className="error-page-subtitle h3">{subtitle}</h2> - )} - <div className="error-page-message"> - {children} - </div> - </Col> - </Container> - </main> - {showSiteFooter && <SiteFooter />} - </> -); +}) { + return ( + <> + <ErrorPageHeader /> + <main id="content" className="error-page-container"> + <Container> + <Col xs={12} lg={{ span: 10, offset: 1 }}> + <h1 className="error-page-title h2">{title}</h1> + {subtitle && ( + <h2 className="error-page-subtitle h3">{subtitle}</h2> + )} + <div className="error-page-message"> + {children} + </div> + </Col> + </Container> + </main> + {showSiteFooter && <SiteFooter />} + </> + ); +} ErrorPage.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/error-page/ErrorPage.test.jsx b/src/components/error-page/ErrorPage.test.jsx index bf03686320..de190136a8 100644 --- a/src/components/error-page/ErrorPage.test.jsx +++ b/src/components/error-page/ErrorPage.test.jsx @@ -8,7 +8,9 @@ import ErrorPage from './ErrorPage'; jest.mock('@edx/frontend-platform/auth'); jest.mock('@edx/frontend-platform/config'); -jest.mock('@edx/frontend-component-footer', () => () => <div data-testid="site-footer" />); +jest.mock('@edx/frontend-component-footer', () => function () { + return <div data-testid="site-footer" />; +}); getAuthenticatedUser.mockReturnValue({ id: 1, diff --git a/src/components/error-page/ErrorPageHeader.jsx b/src/components/error-page/ErrorPageHeader.jsx index 03cf67a1c7..308c3e0957 100644 --- a/src/components/error-page/ErrorPageHeader.jsx +++ b/src/components/error-page/ErrorPageHeader.jsx @@ -16,7 +16,7 @@ import { getConfig } from '@edx/frontend-platform/config'; * This component also acts as a message page for the logout case, hence adding some checks for * non existent variables. */ -const ErrorPageHeader = () => { +function ErrorPageHeader() { const config = getConfig(); const authenticatedUser = getAuthenticatedUser(); const { username, profileImage } = authenticatedUser || { username: '', profileImage: '' }; @@ -55,6 +55,6 @@ const ErrorPageHeader = () => { </Navbar> </header> ); -}; +} export default ErrorPageHeader; diff --git a/src/components/integration-warning-modal/IntegrationWarningModal.jsx b/src/components/integration-warning-modal/IntegrationWarningModal.jsx index 073557a7d6..d0fee67c57 100644 --- a/src/components/integration-warning-modal/IntegrationWarningModal.jsx +++ b/src/components/integration-warning-modal/IntegrationWarningModal.jsx @@ -6,9 +6,9 @@ import { getConfig } from '@edx/frontend-platform/config'; import { MODAL_BUTTON_TEXT, MODAL_TITLE } from './data/constants'; import ModalBody from './ModalBody'; -const IntegrationWarningModal = ({ +function IntegrationWarningModal({ isOpen, -}) => { +}) { const config = getConfig(); const cookies = new Cookies(); const isWarningDismissed = () => { @@ -45,7 +45,7 @@ const IntegrationWarningModal = ({ /> </div> ); -}; +} IntegrationWarningModal.propTypes = { isOpen: PropTypes.bool, diff --git a/src/components/integration-warning-modal/ModalBody.jsx b/src/components/integration-warning-modal/ModalBody.jsx index bc0e98fed8..90d9a9edc4 100644 --- a/src/components/integration-warning-modal/ModalBody.jsx +++ b/src/components/integration-warning-modal/ModalBody.jsx @@ -1,13 +1,15 @@ import React from 'react'; -const ModalBody = () => ( - <div> - <p className="m-0"> - You are viewing only the edX courses that your organization has made available to you. - There may be other learning resources from different sources available in your learning - management system. - </p> - </div> -); +function ModalBody() { + return ( + <div> + <p className="m-0"> + You are viewing only the edX courses that your organization has made available to you. + There may be other learning resources from different sources available in your learning + management system. + </p> + </div> + ); +} export default ModalBody; diff --git a/src/components/layout/MainContent.jsx b/src/components/layout/MainContent.jsx index ae975940ee..e89b406033 100644 --- a/src/components/layout/MainContent.jsx +++ b/src/components/layout/MainContent.jsx @@ -1,11 +1,13 @@ import React from 'react'; import PropTypes from 'prop-types'; -const MainContent = props => ( - <article className="col-xs-12 col-lg-8"> - {props.children} - </article> -); +function MainContent(props) { + return ( + <article className="col-xs-12 col-lg-8"> + {props.children} + </article> + ); +} MainContent.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/layout/Sidebar.jsx b/src/components/layout/Sidebar.jsx index dd06aca1e7..5789b2396a 100644 --- a/src/components/layout/Sidebar.jsx +++ b/src/components/layout/Sidebar.jsx @@ -1,11 +1,13 @@ import React from 'react'; import PropTypes from 'prop-types'; -const Sidebar = props => ( - <aside className="col-12 col-lg-4 pl-5" {...props}> - {props.children} - </aside> -); +function Sidebar(props) { + return ( + <aside className="col-12 col-lg-4 pl-5" {...props}> + {props.children} + </aside> + ); +} Sidebar.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/layout/SidebarBlock.jsx b/src/components/layout/SidebarBlock.jsx index 91a5da9432..4b9adef600 100644 --- a/src/components/layout/SidebarBlock.jsx +++ b/src/components/layout/SidebarBlock.jsx @@ -2,12 +2,12 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -const SidebarBlock = ({ +function SidebarBlock({ className, title, children, titleOptions, -}) => { +}) { const { tag: TitleTag } = titleOptions; return ( <div className={className}> @@ -19,7 +19,7 @@ const SidebarBlock = ({ {children} </div> ); -}; +} SidebarBlock.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/license-activation/LicenseActivation.jsx b/src/components/license-activation/LicenseActivation.jsx index 127b3de0bd..a326bbf1e4 100644 --- a/src/components/license-activation/LicenseActivation.jsx +++ b/src/components/license-activation/LicenseActivation.jsx @@ -12,7 +12,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy/UserSubsidy'; export const LOADING_MESSAGE = 'Your enterprise license is being activated! You will be automatically redirected to your organization\'s learner portal shortly.'; -const LicenseActivation = () => { +function LicenseActivation() { const { enterpriseConfig } = useContext(AppContext); const renderContactHelpText = useRenderContactHelpText(enterpriseConfig); const location = useLocation(); @@ -66,6 +66,6 @@ const LicenseActivation = () => { </Container> </> ); -}; +} export default LicenseActivation; diff --git a/src/components/license-activation/LicenseActivationErrorAlert.jsx b/src/components/license-activation/LicenseActivationErrorAlert.jsx index 264a821cb4..93f9cf1118 100644 --- a/src/components/license-activation/LicenseActivationErrorAlert.jsx +++ b/src/components/license-activation/LicenseActivationErrorAlert.jsx @@ -4,18 +4,20 @@ import PropTypes from 'prop-types'; import { Helmet } from 'react-helmet'; import { Alert, Container } from '@edx/paragon'; -const LicenseActivationErrorAlert = ({ title, contactHelpText }) => ( - <> - <Helmet title={title} /> - <Container size="lg" className="mt-3"> - <Alert variant="danger"> - We were unable to activate a license for this user. Please double-check that you have an - assigned license and verify the email to which it was sent. If you run into further issues, - please {contactHelpText} for assistance. - </Alert> - </Container> - </> -); +function LicenseActivationErrorAlert({ title, contactHelpText }) { + return ( + <> + <Helmet title={title} /> + <Container size="lg" className="mt-3"> + <Alert variant="danger"> + We were unable to activate a license for this user. Please double-check that you have an + assigned license and verify the email to which it was sent. If you run into further issues, + please {contactHelpText} for assistance. + </Alert> + </Container> + </> + ); +} LicenseActivationErrorAlert.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/license-activation/LicenseActivationPage.jsx b/src/components/license-activation/LicenseActivationPage.jsx index 80b5391598..2499d86ad9 100644 --- a/src/components/license-activation/LicenseActivationPage.jsx +++ b/src/components/license-activation/LicenseActivationPage.jsx @@ -14,7 +14,7 @@ import { useRenderContactHelpText } from '../../utils/hooks'; export const LOADING_MESSAGE = 'Your enterprise license is being activated! You will be automatically redirected to your organization\'s learner portal shortly.'; -const LicenseActivationPage = () => { +function LicenseActivationPage() { const user = getAuthenticatedUser(); const { enterpriseConfig } = useContext(AppContext); const { subscriptionLicense } = useContext(UserSubsidyContext); @@ -55,6 +55,6 @@ const LicenseActivationPage = () => { } return <LicenseActivation />; -}; +} export default LicenseActivationPage; diff --git a/src/components/license-activation/tests/LicenseActivation.test.jsx b/src/components/license-activation/tests/LicenseActivation.test.jsx index e3891a515c..a61dfe6fab 100644 --- a/src/components/license-activation/tests/LicenseActivation.test.jsx +++ b/src/components/license-activation/tests/LicenseActivation.test.jsx @@ -21,27 +21,29 @@ const TEST_ENTERPRISE_SLUG = 'test-enterprise-slug'; const TEST_ACTIVATION_KEY = '00000000-0000-0000-0000-000000000000'; const TEST_ROUTE = `/${TEST_ENTERPRISE_SLUG}/licenses/${TEST_ACTIVATION_KEY}/activate`; -const LicenseActivationWithAppContext = ({ +function LicenseActivationWithAppContext({ initialUserSubsidyState = { activateUserLicense: jest.fn(() => true), }, -}) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { - uuid: TEST_ENTERPRISE_UUID, - slug: TEST_ENTERPRISE_SLUG, - name: 'Test Enterprise', - }, - }} - > - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <Route exact path="/:enterpriseSlug/licenses/:activationKey/activate"> - <LicenseActivation /> - </Route> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { + uuid: TEST_ENTERPRISE_UUID, + slug: TEST_ENTERPRISE_SLUG, + name: 'Test Enterprise', + }, + }} + > + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <Route exact path="/:enterpriseSlug/licenses/:activationKey/activate"> + <LicenseActivation /> + </Route> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('LicenseActivation', () => { beforeEach(() => jest.clearAllMocks()); @@ -50,14 +52,12 @@ describe('LicenseActivation', () => { // For the initial state, there is no activation success or error const mockActivateUserLicense = jest.fn(); - const { history } = renderWithRouter( - <LicenseActivationWithAppContext initialUserSubsidyState={{ - activateUserLicense: mockActivateUserLicense, - }} - />, { - route: TEST_ROUTE, - }, - ); + const { history } = renderWithRouter(<LicenseActivationWithAppContext initialUserSubsidyState={{ + activateUserLicense: mockActivateUserLicense, + }} + />, { + route: TEST_ROUTE, + }); await waitFor(() => { expect(mockActivateUserLicense).toHaveBeenCalledWith(false); @@ -75,14 +75,12 @@ describe('LicenseActivation', () => { new Error("Couldn't activate license"), ); - const { history } = renderWithRouter( - <LicenseActivationWithAppContext initialUserSubsidyState={{ - activateUserLicense: mockActivateUserLicense, - }} - />, { - route: TEST_ROUTE, - }, - ); + const { history } = renderWithRouter(<LicenseActivationWithAppContext initialUserSubsidyState={{ + activateUserLicense: mockActivateUserLicense, + }} + />, { + route: TEST_ROUTE, + }); expect(mockActivateUserLicense).toHaveBeenCalledWith(false); @@ -105,14 +103,12 @@ describe('LicenseActivation', () => { } const mockActivateUserLicense = jest.fn(); - const { history } = renderWithRouter( - <LicenseActivationWithAppContext initialUserSubsidyState={{ - activateUserLicense: mockActivateUserLicense, - }} - />, { - route: TEST_ROUTE, - }, - ); + const { history } = renderWithRouter(<LicenseActivationWithAppContext initialUserSubsidyState={{ + activateUserLicense: mockActivateUserLicense, + }} + />, { + route: TEST_ROUTE, + }); await waitFor(() => { expect(mockActivateUserLicense).toHaveBeenCalledWith(!!redirectedFrom); diff --git a/src/components/license-activation/tests/LicenseActivationPage.test.jsx b/src/components/license-activation/tests/LicenseActivationPage.test.jsx index 5edb513e4c..be4381dcf4 100644 --- a/src/components/license-activation/tests/LicenseActivationPage.test.jsx +++ b/src/components/license-activation/tests/LicenseActivationPage.test.jsx @@ -35,7 +35,7 @@ const TEST_ENTERPRISE_SLUG = 'test-enterprise-slug'; const TEST_ACTIVATION_KEY = '00000000-0000-0000-0000-000000000000'; const TEST_ROUTE = `/${TEST_ENTERPRISE_SLUG}/licenses/${TEST_ACTIVATION_KEY}/activate`; -const LicenseActivationPageWithContext = ({ +function LicenseActivationPageWithContext({ initialUserSubsidyState = { subscriptionLicense: undefined, couponCodes: { @@ -43,23 +43,25 @@ const LicenseActivationPageWithContext = ({ couponCodesCount: 0, }, }, -}) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { - uuid: TEST_ENTERPRISE_UUID, - slug: TEST_ENTERPRISE_SLUG, - name: 'Test Enterprise', - }, - }} - > - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <Route exact path="/:enterpriseSlug/licenses/:activationKey/activate"> - <LicenseActivationPage /> - </Route> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { + uuid: TEST_ENTERPRISE_UUID, + slug: TEST_ENTERPRISE_SLUG, + name: 'Test Enterprise', + }, + }} + > + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <Route exact path="/:enterpriseSlug/licenses/:activationKey/activate"> + <LicenseActivationPage /> + </Route> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<LicenseActivationPageWithAppContext />', () => { it.each( diff --git a/src/components/loading-spinner/LoadingSpinner.jsx b/src/components/loading-spinner/LoadingSpinner.jsx index 58954d52c2..ba80877dc8 100644 --- a/src/components/loading-spinner/LoadingSpinner.jsx +++ b/src/components/loading-spinner/LoadingSpinner.jsx @@ -3,13 +3,15 @@ import PropTypes from 'prop-types'; import './styles/LoadingSpinner.scss'; -const LoadingSpinner = ({ screenReaderText }) => ( - <div className="loading-spinner d-flex justify-content-center align-items-center"> - <div className="spinner-border text-primary" role="status"> - <span className="sr-only">{screenReaderText}</span> +function LoadingSpinner({ screenReaderText }) { + return ( + <div className="loading-spinner d-flex justify-content-center align-items-center"> + <div className="spinner-border text-primary" role="status"> + <span className="sr-only">{screenReaderText}</span> + </div> </div> - </div> -); + ); +} LoadingSpinner.propTypes = { screenReaderText: PropTypes.string.isRequired, diff --git a/src/components/pathway/PathwayModal.jsx b/src/components/pathway/PathwayModal.jsx index ae38e62609..40bc5d772c 100644 --- a/src/components/pathway/PathwayModal.jsx +++ b/src/components/pathway/PathwayModal.jsx @@ -34,8 +34,10 @@ const renderStepNodes = (step, slug) => [].concat(step.courses, step.programs).m </h3> {/* eslint-disable react/no-danger */} <div dangerouslySetInnerHTML={{ - __html: DOMPurify.sanitize(node.shortDescription, - { USE_PROFILES: { html: true } }), + __html: DOMPurify.sanitize( + node.shortDescription, + { USE_PROFILES: { html: true } }, + ), }} /> </Col> @@ -52,7 +54,7 @@ const renderStepNodes = (step, slug) => [].concat(step.courses, step.programs).m ); }); -const PathwayModal = ({ learnerPathwayUuid, isOpen, onClose }) => { +function PathwayModal({ learnerPathwayUuid, isOpen, onClose }) { const { enterpriseConfig: { slug } } = useContext(AppContext); const pathwayUuid = isOpen ? learnerPathwayUuid : null; const [pathway, isLoading] = useLearnerPathwayData({ learnerPathwayUuid: pathwayUuid }); @@ -165,11 +167,11 @@ const PathwayModal = ({ learnerPathwayUuid, isOpen, onClose }) => { </MarketingModal> ); -}; +} -const SkeletonPathwayModal = (props) => ( - <PathwayModal {...props} isLoading /> -); +function SkeletonPathwayModal(props) { + return <PathwayModal {...props} isLoading />; +} PathwayModal.propTypes = { learnerPathwayUuid: PropTypes.string.isRequired, diff --git a/src/components/pathway/SearchPathwayCard.jsx b/src/components/pathway/SearchPathwayCard.jsx index 215ac9f044..7231956cd4 100644 --- a/src/components/pathway/SearchPathwayCard.jsx +++ b/src/components/pathway/SearchPathwayCard.jsx @@ -37,7 +37,7 @@ const filterSkillNames = skillNames => { return skillsToReturn; }; -const SearchPathwayCard = ({ hit, isLoading, isSkillQuizResult }) => { +function SearchPathwayCard({ hit, isLoading, isSkillQuizResult }) { const { enterpriseConfig: { uuid: enterpriseCustomerUUID, slug } } = useContext(AppContext); const pathway = useMemo(() => { @@ -158,11 +158,11 @@ const SearchPathwayCard = ({ hit, isLoading, isSkillQuizResult }) => { </Link> </div> ); -}; +} -const SkeletonPathwayCard = (props) => ( - <SearchPathwayCard {...props} isLoading /> -); +function SkeletonPathwayCard(props) { + return <SearchPathwayCard {...props} isLoading />; +} SearchPathwayCard.propTypes = { hit: PropTypes.shape({ diff --git a/src/components/pathway/tests/PathwayModal.test.jsx b/src/components/pathway/tests/PathwayModal.test.jsx index 3c4c268eb7..e3b33c18df 100644 --- a/src/components/pathway/tests/PathwayModal.test.jsx +++ b/src/components/pathway/tests/PathwayModal.test.jsx @@ -26,15 +26,17 @@ jest.mock('react-loading-skeleton', () => ({ default: (props = {}) => <div data-testid={props['data-testid']} />, })); -const PathwayModalWithAppContext = (props) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, - }} - > - <PathwayModal {...props} /> - </AppContext.Provider> -); +function PathwayModalWithAppContext(props) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, + }} + > + <PathwayModal {...props} /> + </AppContext.Provider> + ); +} const defaultProps = { learnerPathwayUuid: TEST_PATHWAY_DATA.uuid, diff --git a/src/components/pathway/tests/SearchPathwayCard.test.jsx b/src/components/pathway/tests/SearchPathwayCard.test.jsx index 08f657284a..ae91dbf180 100644 --- a/src/components/pathway/tests/SearchPathwayCard.test.jsx +++ b/src/components/pathway/tests/SearchPathwayCard.test.jsx @@ -28,15 +28,17 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); }); -const SearchPathwayCardWithAppContext = (props) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, - }} - > - <SearchPathwayCard {...props} /> - </AppContext.Provider> -); +function SearchPathwayCardWithAppContext(props) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, + }} + > + <SearchPathwayCard {...props} /> + </AppContext.Provider> + ); +} const TEST_PATHWAY_UUID = 'test-pathway-uuid'; const TEST_TITLE = 'Test Title'; diff --git a/src/components/program-progress/CouponCodesWarningModal.jsx b/src/components/program-progress/CouponCodesWarningModal.jsx index d50102de98..5e8fdf9b37 100644 --- a/src/components/program-progress/CouponCodesWarningModal.jsx +++ b/src/components/program-progress/CouponCodesWarningModal.jsx @@ -6,7 +6,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import PropTypes from 'prop-types'; import { COUPON_CODE_EXPIRING_MODAL_TITLE } from './data/constants'; -const CouponCodesWarningModal = ({ isCouponCodeWarningModalOpen, onCouponCodeWarningModalClose, couponCodesCount }) => { +function CouponCodesWarningModal({ isCouponCodeWarningModalOpen, onCouponCodeWarningModalClose, couponCodesCount }) { const { enterpriseConfig: { contactEmail }, } = useContext(AppContext); @@ -55,7 +55,7 @@ const CouponCodesWarningModal = ({ isCouponCodeWarningModalOpen, onCouponCodeWar {renderExpiredBody()} </StandardModal> ); -}; +} CouponCodesWarningModal.propTypes = { isCouponCodeWarningModalOpen: PropTypes.bool.isRequired, onCouponCodeWarningModalClose: PropTypes.func.isRequired, diff --git a/src/components/program-progress/ProgramListingCard.jsx b/src/components/program-progress/ProgramListingCard.jsx index 947f25fe50..55257cc8cc 100644 --- a/src/components/program-progress/ProgramListingCard.jsx +++ b/src/components/program-progress/ProgramListingCard.jsx @@ -10,7 +10,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import Truncate from 'react-truncate'; import { getProgramIcon } from '../course/data/utils'; -const ProgramListingCard = ({ program }) => { +function ProgramListingCard({ program }) { const { enterpriseConfig } = useContext(AppContext); const [windowWidth, setWindowWidth] = useState(window.innerWidth); const history = useHistory(); @@ -114,7 +114,7 @@ const ProgramListingCard = ({ program }) => { </Card.Section> </Card> ); -}; +} ProgramListingCard.propTypes = { program: PropTypes.shape({ diff --git a/src/components/program-progress/ProgramListingPage.jsx b/src/components/program-progress/ProgramListingPage.jsx index 7fbb41b2cf..ce11795c54 100644 --- a/src/components/program-progress/ProgramListingPage.jsx +++ b/src/components/program-progress/ProgramListingPage.jsx @@ -20,7 +20,7 @@ import ProgramListingCard from './ProgramListingCard'; import { CONTENT_TYPE_PROGRAM } from '../search/constants'; -const ProgramListingPage = () => { +function ProgramListingPage() { const { enterpriseConfig } = useContext(AppContext); const [learnerProgramsData, fetchError] = useLearnerProgramsListData(enterpriseConfig.uuid); @@ -38,23 +38,21 @@ const ProgramListingPage = () => { } return ( - <> - <Container size="lg" className="py-5 w-100"> - <Row> - {learnerProgramsData.length > 0 ? ( - learnerProgramsData.map((program) => <ProgramListingCard program={program} key={program.title} />) - ) : ( - <div className="no-programs-message"> - <h2>{NO_PROGRAMS_ERROR_MESSAGE}</h2> - <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PROGRAM}`}> - <Button variant="primary" iconBefore={Search} className="mt-2">Explore programs</Button> - </Link> - </div> - )} - </Row> - </Container> - </> + <Container size="lg" className="py-5 w-100"> + <Row> + {learnerProgramsData.length > 0 ? ( + learnerProgramsData.map((program) => <ProgramListingCard program={program} key={program.title} />) + ) : ( + <div className="no-programs-message"> + <h2>{NO_PROGRAMS_ERROR_MESSAGE}</h2> + <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PROGRAM}`}> + <Button variant="primary" iconBefore={Search} className="mt-2">Explore programs</Button> + </Link> + </div> + )} + </Row> + </Container> ); -}; +} export default ProgramListingPage; diff --git a/src/components/program-progress/ProgramPathwayOpportunity.jsx b/src/components/program-progress/ProgramPathwayOpportunity.jsx index 535a98e9f9..fdec733d68 100644 --- a/src/components/program-progress/ProgramPathwayOpportunity.jsx +++ b/src/components/program-progress/ProgramPathwayOpportunity.jsx @@ -2,33 +2,35 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Button } from '@edx/paragon'; -const ProgramPathwayOpportunity = ({ pathways, title, pathwayClass }) => ( - <div className={pathwayClass}> - <h2 className="divider-heading"> { title } </h2> - {pathways.map((pathway) => ( - <div className="pathway-wrapper"> - <div className="pathway-info"> - <h2 className="pathway-heading"> { pathway.name } </h2> - { pathway.description && <p> {pathway.description}</p> } - { pathway.destinationUrl && ( - <div className="sidebar-button-wrapper"> - <a href={pathway.destinationUrl} className="pathway-link"> - <Button - variant="outline-primary" - className="btn pathway-button sidebar-button" - data-pathway-uuid={pathway.uuid} - data-pathway-name={pathway.name} - > - Learn More - </Button> - </a> - </div> - )} +function ProgramPathwayOpportunity({ pathways, title, pathwayClass }) { + return ( + <div className={pathwayClass}> + <h2 className="divider-heading"> { title } </h2> + {pathways.map((pathway) => ( + <div className="pathway-wrapper"> + <div className="pathway-info"> + <h2 className="pathway-heading"> { pathway.name } </h2> + { pathway.description && <p> {pathway.description}</p> } + { pathway.destinationUrl && ( + <div className="sidebar-button-wrapper"> + <a href={pathway.destinationUrl} className="pathway-link"> + <Button + variant="outline-primary" + className="btn pathway-button sidebar-button" + data-pathway-uuid={pathway.uuid} + data-pathway-name={pathway.name} + > + Learn More + </Button> + </a> + </div> + )} + </div> </div> - </div> - ))} - </div> -); + ))} + </div> + ); +} export default ProgramPathwayOpportunity; diff --git a/src/components/program-progress/ProgramProgressCircle.jsx b/src/components/program-progress/ProgramProgressCircle.jsx index 905a648844..600f04f47b 100644 --- a/src/components/program-progress/ProgramProgressCircle.jsx +++ b/src/components/program-progress/ProgramProgressCircle.jsx @@ -5,9 +5,9 @@ import { X_AXIS, Y_AXIS, CIRCLE_RADIUS, CIRCLE_DEGREES, STROKE_WIDTH, CIRCLE_LABEL, } from './data/constants'; -const CircleSegment = ({ +function CircleSegment({ total, index, classList, -}) => { +}) { const segmentDash = 2 * Math.PI * CIRCLE_RADIUS; const degreeInc = 360 / total; // Remove strokeWidth to show a gap between the segments @@ -33,9 +33,9 @@ const CircleSegment = ({ strokeDashoffset={offset} /> ); -}; +} -const ProgramProgressCircle = () => { +function ProgramProgressCircle() { const { programData, courseData } = useContext(ProgramProgressContext); const { inProgress, completed, notStarted } = courseData; const totalCourses = inProgress.length + completed.length + notStarted.length; @@ -63,7 +63,7 @@ const ProgramProgressCircle = () => { </div> </> ); -}; +} export default ProgramProgressCircle; diff --git a/src/components/program-progress/ProgramProgressCourses.jsx b/src/components/program-progress/ProgramProgressCourses.jsx index af97c9e7ae..5d47ffd8c8 100644 --- a/src/components/program-progress/ProgramProgressCourses.jsx +++ b/src/components/program-progress/ProgramProgressCourses.jsx @@ -18,7 +18,7 @@ import { } from './data/utils'; import { NotCurrentlyAvailable } from './data/constants'; -const ProgramProgressCourses = ({ courseData }) => { +function ProgramProgressCourses({ courseData }) { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, @@ -244,7 +244,7 @@ const ProgramProgressCourses = ({ courseData }) => { </div> ); -}; +} ProgramProgressCourses.propTypes = { courseData: PropTypes.shape([]).isRequired, }; diff --git a/src/components/program-progress/ProgramProgressHeader.jsx b/src/components/program-progress/ProgramProgressHeader.jsx index 01c5c2513c..ec95df34cc 100644 --- a/src/components/program-progress/ProgramProgressHeader.jsx +++ b/src/components/program-progress/ProgramProgressHeader.jsx @@ -2,42 +2,40 @@ import React, { useContext } from 'react'; import { ProgramProgressContext } from './ProgramProgressContextProvider'; import { getProgramIcon } from './data/utils'; -const ProgramProgressHeader = () => { +function ProgramProgressHeader() { const { programData } = useContext(ProgramProgressContext); const programIcon = getProgramIcon(programData.type); return ( - <> - <div className="program-details-header"> - <div className="meta-info grid-container"> - { programIcon && ( - <img - src={programIcon} - alt="Program Type Logo" - className={`program-details-icon ${programData.type.toLowerCase()}`} - /> - )} - <h2 className="hd-1 program-title"> {programData.title} </h2> - </div> - <div className="authoring-organizations"> - <h2 className="heading">Institutions</h2> - {programData.authoringOrganizations.length > 0 && ( - <div className="orgs"> - {programData.authoringOrganizations.map(org => ( - <img - id="org-image" - key={org.name} - src={org.certificateLogoImageUrl || org.logoImageUrl} - className="org-logo" - alt={`${org.name}'s logo`} - /> - ))} - </div> - )} - </div> + <div className="program-details-header"> + <div className="meta-info grid-container"> + { programIcon && ( + <img + src={programIcon} + alt="Program Type Logo" + className={`program-details-icon ${programData.type.toLowerCase()}`} + /> + )} + <h2 className="hd-1 program-title"> {programData.title} </h2> </div> - </> + <div className="authoring-organizations"> + <h2 className="heading">Institutions</h2> + {programData.authoringOrganizations.length > 0 && ( + <div className="orgs"> + {programData.authoringOrganizations.map(org => ( + <img + id="org-image" + key={org.name} + src={org.certificateLogoImageUrl || org.logoImageUrl} + className="org-logo" + alt={`${org.name}'s logo`} + /> + ))} + </div> + )} + </div> + </div> ); -}; +} export default ProgramProgressHeader; diff --git a/src/components/program-progress/ProgramProgressPage.jsx b/src/components/program-progress/ProgramProgressPage.jsx index ecd2b8f315..2532e6a0cd 100644 --- a/src/components/program-progress/ProgramProgressPage.jsx +++ b/src/components/program-progress/ProgramProgressPage.jsx @@ -23,7 +23,7 @@ import { import SubsidiesSummary from '../dashboard/sidebar/SubsidiesSummary'; -const ProgramProgressPage = () => { +function ProgramProgressPage() { const { programUUID } = useParams(); const [program, fetchError] = useLearnerProgramProgressData(programUUID); @@ -116,6 +116,6 @@ const ProgramProgressPage = () => { </CourseEnrollmentsContextProvider> </> ); -}; +} export default ProgramProgressPage; diff --git a/src/components/program-progress/ProgramProgressSidebar.jsx b/src/components/program-progress/ProgramProgressSidebar.jsx index bbc613acba..3db1770ab3 100644 --- a/src/components/program-progress/ProgramProgressSidebar.jsx +++ b/src/components/program-progress/ProgramProgressSidebar.jsx @@ -7,7 +7,7 @@ import ProgramPathwayOpportunity from './ProgramPathwayOpportunity'; import { getProgramCertImage } from './data/utils'; import progSampleCertImage from './images/sample-cert.png'; -const ProgramProgressSideBar = () => { +function ProgramProgressSideBar() { const { programData, industryPathways, creditPathways, certificateData, urls: { programRecordUrl }, } = useContext(ProgramProgressContext); @@ -99,6 +99,6 @@ const ProgramProgressSideBar = () => { )} </div> ); -}; +} export default ProgramProgressSideBar; diff --git a/src/components/program-progress/SubscriptionExpiringWarningModal.jsx b/src/components/program-progress/SubscriptionExpiringWarningModal.jsx index a4f2c79597..c993ebbfd6 100644 --- a/src/components/program-progress/SubscriptionExpiringWarningModal.jsx +++ b/src/components/program-progress/SubscriptionExpiringWarningModal.jsx @@ -9,10 +9,10 @@ import PropTypes from 'prop-types'; import { UserSubsidyContext } from '../enterprise-user-subsidy'; import { SUBSCRIPTION_EXPIRING_MODAL_TITLE } from './data/constants'; -const SubscriptionExpirationWarningModal = ({ +function SubscriptionExpirationWarningModal({ isSubscriptionExpiringWarningModalOpen, onSubscriptionExpiringWarningModalClose, -}) => { +}) { const { enterpriseConfig: { name, contactEmail }, } = useContext(AppContext); @@ -63,7 +63,7 @@ const SubscriptionExpirationWarningModal = ({ {renderExpiredBody()} </StandardModal> ); -}; +} SubscriptionExpirationWarningModal.propTypes = { isSubscriptionExpiringWarningModalOpen: PropTypes.bool.isRequired, onSubscriptionExpiringWarningModalClose: PropTypes.func.isRequired, diff --git a/src/components/program-progress/tests/ProgramListingCard.test.jsx b/src/components/program-progress/tests/ProgramListingCard.test.jsx index 79bddc0e71..346dae2310 100644 --- a/src/components/program-progress/tests/ProgramListingCard.test.jsx +++ b/src/components/program-progress/tests/ProgramListingCard.test.jsx @@ -19,13 +19,15 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramListingCardWithContext = ({ initialAppState, initialUserSubsidyState, programData }) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramListingCard program={programData} /> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +function ProgramListingCardWithContext({ initialAppState, initialUserSubsidyState, programData }) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramListingCard program={programData} /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} const appState = { enterpriseConfig: { diff --git a/src/components/program-progress/tests/ProgramListingPage.test.jsx b/src/components/program-progress/tests/ProgramListingPage.test.jsx index cdc052191b..1db59a1972 100644 --- a/src/components/program-progress/tests/ProgramListingPage.test.jsx +++ b/src/components/program-progress/tests/ProgramListingPage.test.jsx @@ -64,18 +64,20 @@ jest.mock('../data/hooks', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramListingWithContext = ({ +function ProgramListingWithContext({ initialAppState = {}, initialUserSubsidyState = {}, -}) => ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramListingPage /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> -); +}) { + return ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramListingPage /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> + ); +} describe('<ProgramListing />', () => { const initialAppState = { diff --git a/src/components/program-progress/tests/ProgramProgressCircle.test.jsx b/src/components/program-progress/tests/ProgramProgressCircle.test.jsx index 2c7f144f34..5a9017cec9 100644 --- a/src/components/program-progress/tests/ProgramProgressCircle.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressCircle.test.jsx @@ -9,13 +9,15 @@ import { } from '../data/constants'; /* eslint-disable react/prop-types */ -const ProgramProgressCircleWithContext = ({ +function ProgramProgressCircleWithContext({ initialProgramProgressContext = {}, -}) => ( - <ProgramProgressContext.Provider value={initialProgramProgressContext}> - <ProgramProgressCircle /> - </ProgramProgressContext.Provider> -); +}) { + return ( + <ProgramProgressContext.Provider value={initialProgramProgressContext}> + <ProgramProgressCircle /> + </ProgramProgressContext.Provider> + ); +} const testProgramData = { type: 'MicroMasters', diff --git a/src/components/program-progress/tests/ProgramProgressCourses.test.jsx b/src/components/program-progress/tests/ProgramProgressCourses.test.jsx index cd84377391..0b735219fd 100644 --- a/src/components/program-progress/tests/ProgramProgressCourses.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressCourses.test.jsx @@ -43,18 +43,20 @@ const subsidyRequestsState = { }, }; -const ProgramProgressCoursesWithContext = ({ +function ProgramProgressCoursesWithContext({ // eslint-disable-next-line react/prop-types initialAppState, initialUserSubsidyState, courseData, initialSubsidyRequestsState, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <ProgramProgressCourses courseData={courseData} /> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <ProgramProgressCourses courseData={courseData} /> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<ProgramProgressCourses />', () => { it('displays the completed course with enrolled course run', () => { diff --git a/src/components/program-progress/tests/ProgramProgressHeader.test.jsx b/src/components/program-progress/tests/ProgramProgressHeader.test.jsx index 118b5fb3f1..5c57b6e3cf 100644 --- a/src/components/program-progress/tests/ProgramProgressHeader.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressHeader.test.jsx @@ -7,13 +7,15 @@ import { ProgramProgressContext } from '../ProgramProgressContextProvider'; import { getProgramIcon } from '../data/utils'; /* eslint-disable react/prop-types */ -const ProgramProgressHeaderWithContext = ({ +function ProgramProgressHeaderWithContext({ initialProgramProgressContext = {}, -}) => ( - <ProgramProgressContext.Provider value={initialProgramProgressContext}> - <ProgramProgressHeader /> - </ProgramProgressContext.Provider> -); +}) { + return ( + <ProgramProgressContext.Provider value={initialProgramProgressContext}> + <ProgramProgressHeader /> + </ProgramProgressContext.Provider> + ); +} const testProgramData = { type: 'MicroMasters', diff --git a/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx b/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx index 40ca0d0f9d..36f665e7c6 100644 --- a/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx @@ -8,13 +8,15 @@ import { getProgramCertImage } from '../data/utils'; import progSampleCertImage from '../images/sample-cert.png'; /* eslint-disable react/prop-types */ -const ProgramProgressSideBarWithContext = ({ +function ProgramProgressSideBarWithContext({ initialProgramProgressContext = {}, -}) => ( - <ProgramProgressContext.Provider value={initialProgramProgressContext}> - <ProgramProgressSidebar /> - </ProgramProgressContext.Provider> -); +}) { + return ( + <ProgramProgressContext.Provider value={initialProgramProgressContext}> + <ProgramProgressSidebar /> + </ProgramProgressContext.Provider> + ); +} const testProgramData = { type: 'MicroMasters', diff --git a/src/components/program/BulletList.jsx b/src/components/program/BulletList.jsx index 4c5aa2966f..fa6a886206 100644 --- a/src/components/program/BulletList.jsx +++ b/src/components/program/BulletList.jsx @@ -1,15 +1,17 @@ import React from 'react'; import PropTypes from 'prop-types'; -const BulletList = ({ items }) => ( - <ul> - {items.map(item => ( - <li className="bullet-point mb-2" key={item}> - {item} - </li> - ))} - </ul> -); +function BulletList({ items }) { + return ( + <ul> + {items.map(item => ( + <li className="bullet-point mb-2" key={item}> + {item} + </li> + ))} + </ul> + ); +} BulletList.propTypes = { items: PropTypes.arrayOf(PropTypes.string).isRequired, diff --git a/src/components/program/ProgramCourses.jsx b/src/components/program/ProgramCourses.jsx index 8a9665c7ba..8f69ab6fc0 100644 --- a/src/components/program/ProgramCourses.jsx +++ b/src/components/program/ProgramCourses.jsx @@ -24,7 +24,7 @@ const getCourseRun = course => ( )[0] ); -const ProgramCourses = () => { +function ProgramCourses() { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const { program } = useContext(ProgramContext); const { programUuid } = useParams(); @@ -103,6 +103,6 @@ const ProgramCourses = () => { </div> </> ); -}; +} export default ProgramCourses; diff --git a/src/components/program/ProgramDataBar.jsx b/src/components/program/ProgramDataBar.jsx index f1a1d98259..54cefdd610 100644 --- a/src/components/program/ProgramDataBar.jsx +++ b/src/components/program/ProgramDataBar.jsx @@ -7,7 +7,7 @@ import { faChevronCircleDown } from '@fortawesome/free-solid-svg-icons'; import { ProgramContext } from './ProgramContextProvider'; import ProgramDataBarDetails from './ProgramDataBarDetails'; -const ProgramDataBar = () => { +function ProgramDataBar() { const [stickProgramDataBar, setStickProgramDataBar] = useState(false); const { program: { authoringOrganizations: owners, isProgramEligibleForOneClickPurchase }, @@ -54,5 +54,5 @@ const ProgramDataBar = () => { </div> </div> ); -}; +} export default ProgramDataBar; diff --git a/src/components/program/ProgramDataBarDetails.jsx b/src/components/program/ProgramDataBarDetails.jsx index 7c2b7b642c..4401f34335 100644 --- a/src/components/program/ProgramDataBarDetails.jsx +++ b/src/components/program/ProgramDataBarDetails.jsx @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'; import { ProgramContext } from './ProgramContextProvider'; import { appendProgramToProgramType } from './data/utils'; -const ProgramDataBarDetails = ({ handleStick, handleRelease }) => { +function ProgramDataBarDetails({ handleStick, handleRelease }) { const { program: { title, authoringOrganizations: owners, type, @@ -66,7 +66,7 @@ const ProgramDataBarDetails = ({ handleStick, handleRelease }) => { <div className="institution">{partnerList}</div> </div> ); -}; +} ProgramDataBarDetails.propTypes = { handleStick: PropTypes.func.isRequired, diff --git a/src/components/program/ProgramEndorsements.jsx b/src/components/program/ProgramEndorsements.jsx index 251507f916..5e586e9277 100644 --- a/src/components/program/ProgramEndorsements.jsx +++ b/src/components/program/ProgramEndorsements.jsx @@ -4,7 +4,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { breakpoints, MediaQuery } from '@edx/paragon'; import { ProgramContext } from './ProgramContextProvider'; -const ProgramEndorsements = () => { +function ProgramEndorsements() { const { program: { corporateEndorsements } } = useContext(ProgramContext); const formatAuthorFullName = endorser => `${endorser.givenName} ${endorser.familyName}`; const title = endorser => (endorser.position ? endorser.position.title : ''); @@ -54,6 +54,6 @@ const ProgramEndorsements = () => { </div> </div> ) : null; -}; +} export default ProgramEndorsements; diff --git a/src/components/program/ProgramHeader.jsx b/src/components/program/ProgramHeader.jsx index 026a0cfcd4..fd833ea44d 100644 --- a/src/components/program/ProgramHeader.jsx +++ b/src/components/program/ProgramHeader.jsx @@ -6,7 +6,7 @@ import { useParams } from 'react-router-dom'; import { ProgramContext } from './ProgramContextProvider'; import { fixedEncodeURIComponent } from '../../utils/common'; -const ProgramHeader = () => { +function ProgramHeader() { const config = getConfig(); const { enterpriseSlug } = useParams(); const { @@ -92,6 +92,6 @@ const ProgramHeader = () => { : ''} </> ); -}; +} export default ProgramHeader; diff --git a/src/components/program/ProgramInstructors.jsx b/src/components/program/ProgramInstructors.jsx index 279f492fd2..26e235380d 100644 --- a/src/components/program/ProgramInstructors.jsx +++ b/src/components/program/ProgramInstructors.jsx @@ -7,7 +7,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { ProgramContext } from './ProgramContextProvider'; -const ProgramStaff = ({ program }) => { +function ProgramStaff({ program }) { const { config } = useContext(AppContext); const formatStaffFullName = staff => `${staff.givenName} ${staff.familyName}`; @@ -40,7 +40,7 @@ const ProgramStaff = ({ program }) => { ))} </div> ); -}; +} ProgramStaff.propTypes = { program: PropTypes.shape({ @@ -57,7 +57,7 @@ ProgramStaff.propTypes = { }).isRequired, }; -const ProgramInstructors = () => { +function ProgramInstructors() { const { program } = useContext(ProgramContext); return ( @@ -106,6 +106,6 @@ const ProgramInstructors = () => { )} </div> ); -}; +} export default ProgramInstructors; diff --git a/src/components/program/ProgramMainContent.jsx b/src/components/program/ProgramMainContent.jsx index 0af387c275..d8972d353b 100644 --- a/src/components/program/ProgramMainContent.jsx +++ b/src/components/program/ProgramMainContent.jsx @@ -5,7 +5,7 @@ import { PreviewExpand } from '../preview-expand'; import { ProgramContext } from './ProgramContextProvider'; import BulletList from './BulletList'; -const ProgramMainContent = () => { +function ProgramMainContent() { const { program } = useContext(ProgramContext); const { expectedLearningItems } = program; const { overview } = program; @@ -42,6 +42,6 @@ const ProgramMainContent = () => { <ProgramInstructors /> </div> ); -}; +} export default ProgramMainContent; diff --git a/src/components/program/ProgramPage.jsx b/src/components/program/ProgramPage.jsx index 12a2090ae1..a85c33166d 100644 --- a/src/components/program/ProgramPage.jsx +++ b/src/components/program/ProgramPage.jsx @@ -22,7 +22,7 @@ import NotFoundPage from '../NotFoundPage'; import { PROGRAM_NOT_FOUND_MESSAGE, PROGRAM_NOT_FOUND_TITLE } from './data/constants'; import ProgramDataBar from './ProgramDataBar'; -const ProgramPage = () => { +function ProgramPage() { const { programUuid } = useParams(); const { enterpriseConfig } = useContext(AppContext); @@ -94,6 +94,6 @@ const ProgramPage = () => { </ProgramContextProvider> </> ); -}; +} export default ProgramPage; diff --git a/src/components/program/ProgramSidebar.jsx b/src/components/program/ProgramSidebar.jsx index cb26329949..3c1c9ade2d 100644 --- a/src/components/program/ProgramSidebar.jsx +++ b/src/components/program/ProgramSidebar.jsx @@ -13,7 +13,7 @@ import { getVerboseProgramPacing, } from './data/utils'; -const ProgramSidebar = () => { +function ProgramSidebar() { const { program } = useContext(ProgramContext); const expertInstructionSecondaryContent = getExpertInstructionSecondaryContent(program); const programPacingType = getProgramPacing(program); @@ -23,44 +23,42 @@ const ProgramSidebar = () => { const totalEstimatedEffortInHoursPerWeek = getTotalEstimatedEffortInHoursPerWeek(program); return ( - <> - <ul className="pl-0 mb-5 program-details-sidebar"> - <ProgramSidebarListItem - icon={faBook} - label="Expert instruction" - content={expertInstructionSecondaryContent} - /> + <ul className="pl-0 mb-5 program-details-sidebar"> + <ProgramSidebarListItem + icon={faBook} + label="Expert instruction" + content={expertInstructionSecondaryContent} + /> - { - verboseProgramPacingType && programPacingTypeContent && ( - <ProgramSidebarListItem - icon={faUser} - label={verboseProgramPacingType} - content={programPacingTypeContent} - /> - ) - } - { - programDuration && ( - <ProgramSidebarListItem - icon={faClock} - label="Length" - content={programDuration} - /> - ) - } - { - totalEstimatedEffortInHoursPerWeek && ( - <ProgramSidebarListItem - icon={faTachometerAlt} - label="Effort" - content={totalEstimatedEffortInHoursPerWeek} - /> - ) - } - </ul> - </> + { + verboseProgramPacingType && programPacingTypeContent && ( + <ProgramSidebarListItem + icon={faUser} + label={verboseProgramPacingType} + content={programPacingTypeContent} + /> + ) + } + { + programDuration && ( + <ProgramSidebarListItem + icon={faClock} + label="Length" + content={programDuration} + /> + ) + } + { + totalEstimatedEffortInHoursPerWeek && ( + <ProgramSidebarListItem + icon={faTachometerAlt} + label="Effort" + content={totalEstimatedEffortInHoursPerWeek} + /> + ) + } + </ul> ); -}; +} export default ProgramSidebar; diff --git a/src/components/program/tests/ProgramCTA.test.jsx b/src/components/program/tests/ProgramCTA.test.jsx index a701bbc0cd..e7ccbbdc2b 100644 --- a/src/components/program/tests/ProgramCTA.test.jsx +++ b/src/components/program/tests/ProgramCTA.test.jsx @@ -30,21 +30,23 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); /* eslint-disable react/prop-types */ -const ProgramCTAtWithContext = ({ +function ProgramCTAtWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramCTA /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> -); +}) { + return ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramCTA /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramCTA />', () => { diff --git a/src/components/program/tests/ProgramCourses.test.jsx b/src/components/program/tests/ProgramCourses.test.jsx index ce4e581445..ff7557579e 100644 --- a/src/components/program/tests/ProgramCourses.test.jsx +++ b/src/components/program/tests/ProgramCourses.test.jsx @@ -31,19 +31,21 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); /* eslint-disable react/prop-types */ -const ProgramCoursestWithContext = ({ +function ProgramCoursestWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramCourses /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramCourses /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramCourses />', () => { diff --git a/src/components/program/tests/ProgramDataBar.test.jsx b/src/components/program/tests/ProgramDataBar.test.jsx index e689027ae3..4d6181acb7 100644 --- a/src/components/program/tests/ProgramDataBar.test.jsx +++ b/src/components/program/tests/ProgramDataBar.test.jsx @@ -14,15 +14,17 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramDataBarWithContext = ({ initialAppState, initialUserSubsidyState, initialProgramState }) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramDataBar /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +function ProgramDataBarWithContext({ initialAppState, initialUserSubsidyState, initialProgramState }) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramDataBar /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} const appState = { enterpriseConfig: { diff --git a/src/components/program/tests/ProgramEndorsements.test.jsx b/src/components/program/tests/ProgramEndorsements.test.jsx index 4b5bcf74a7..3798384b9f 100644 --- a/src/components/program/tests/ProgramEndorsements.test.jsx +++ b/src/components/program/tests/ProgramEndorsements.test.jsx @@ -12,19 +12,21 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramEndorsementsWithContext = ({ +function ProgramEndorsementsWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramEndorsements /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramEndorsements /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramEndorsements />', () => { diff --git a/src/components/program/tests/ProgramFAQ.test.jsx b/src/components/program/tests/ProgramFAQ.test.jsx index 6fe13e57f4..f1eb2f4d77 100644 --- a/src/components/program/tests/ProgramFAQ.test.jsx +++ b/src/components/program/tests/ProgramFAQ.test.jsx @@ -14,19 +14,21 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramFAQWithContext = ({ +function ProgramFAQWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramFAQ /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramFAQ /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramFAQ />', () => { diff --git a/src/components/program/tests/ProgramHeader.test.jsx b/src/components/program/tests/ProgramHeader.test.jsx index 45b0a41ebb..c3150a4194 100644 --- a/src/components/program/tests/ProgramHeader.test.jsx +++ b/src/components/program/tests/ProgramHeader.test.jsx @@ -13,19 +13,21 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramHeaderWithContext = ({ +function ProgramHeaderWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramHeader /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramHeader /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramHeader />', () => { diff --git a/src/components/program/tests/ProgramInstructors.test.jsx b/src/components/program/tests/ProgramInstructors.test.jsx index 4104be0da3..60c4302ac6 100644 --- a/src/components/program/tests/ProgramInstructors.test.jsx +++ b/src/components/program/tests/ProgramInstructors.test.jsx @@ -6,11 +6,13 @@ import { ProgramContextProvider } from '../ProgramContextProvider'; import ProgramInstructors from '../ProgramInstructors'; // eslint-disable-next-line react/prop-types -const ProgramInstructorsWithContext = ({ initialState = {} }) => ( - <ProgramContextProvider initialState={initialState}> - <ProgramInstructors /> - </ProgramContextProvider> -); +function ProgramInstructorsWithContext({ initialState = {} }) { + return ( + <ProgramContextProvider initialState={initialState}> + <ProgramInstructors /> + </ProgramContextProvider> + ); +} describe('<ProgramInstructors />', () => { const initialState = { diff --git a/src/components/program/tests/ProgramMainContent.test.jsx b/src/components/program/tests/ProgramMainContent.test.jsx index 916e232eef..9f4eb91b56 100644 --- a/src/components/program/tests/ProgramMainContent.test.jsx +++ b/src/components/program/tests/ProgramMainContent.test.jsx @@ -17,19 +17,21 @@ jest.mock('@edx/frontend-platform/auth', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramMainContentWithContext = ({ +function ProgramMainContentWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramMainContent /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramMainContent /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramMainContent />', () => { diff --git a/src/components/program/tests/ProgramPage.test.jsx b/src/components/program/tests/ProgramPage.test.jsx index 15f0ea692b..2f2b330199 100644 --- a/src/components/program/tests/ProgramPage.test.jsx +++ b/src/components/program/tests/ProgramPage.test.jsx @@ -39,18 +39,20 @@ jest.mock('../data/hooks', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramWithContext = ({ +function ProgramWithContext({ initialAppState = {}, initialUserSubsidyState = {}, -}) => ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramPage /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> -); +}) { + return ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramPage /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> + ); +} /* eslint-enable react/prop-types */ describe('<Program />', () => { diff --git a/src/components/program/tests/ProgramSidebar.test.jsx b/src/components/program/tests/ProgramSidebar.test.jsx index d34df59950..62a528cf1e 100644 --- a/src/components/program/tests/ProgramSidebar.test.jsx +++ b/src/components/program/tests/ProgramSidebar.test.jsx @@ -15,19 +15,21 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const ProgramSidebarWithContext = ({ +function ProgramSidebarWithContext({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramSidebar /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramSidebar /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ describe('<ProgramSidebar />', () => { diff --git a/src/components/search/Search.jsx b/src/components/search/Search.jsx index cef27a7b2f..4dd217d34f 100644 --- a/src/components/search/Search.jsx +++ b/src/components/search/Search.jsx @@ -35,7 +35,7 @@ import SearchPathwayCard from '../pathway/SearchPathwayCard'; import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; import PathwayModal from '../pathway/PathwayModal'; -const Search = () => { +function Search() { const { pathwayUUID } = useParams(); const history = useHistory(); const { refinements: { content_type: contentType } } = useContext(SearchContext); @@ -150,6 +150,6 @@ const Search = () => { <IntegrationWarningModal isOpen={enterpriseConfig.showIntegrationWarning} /> </> ); -}; +} export default Search; diff --git a/src/components/search/SearchCourse.jsx b/src/components/search/SearchCourse.jsx index e73211807c..3c7f3ea3b7 100644 --- a/src/components/search/SearchCourse.jsx +++ b/src/components/search/SearchCourse.jsx @@ -6,7 +6,7 @@ import { NUM_RESULTS_COURSE, CONTENT_TYPE_COURSE, COURSE_TITLE } from './constan import SearchResults from './SearchResults'; import SearchCourseCard from './SearchCourseCard'; -const SearchCourse = ({ filter }) => { +function SearchCourse({ filter }) { const defaultFilter = `content_type:${CONTENT_TYPE_COURSE} AND ${filter}`; const config = getConfig(); @@ -20,7 +20,7 @@ const SearchCourse = ({ filter }) => { <SearchResults hitComponent={SearchCourseCard} title={COURSE_TITLE} /> </Index> ); -}; +} SearchCourse.propTypes = { filter: PropTypes.string.isRequired, diff --git a/src/components/search/SearchCourseCard.jsx b/src/components/search/SearchCourseCard.jsx index ebd768a170..456d802c8d 100644 --- a/src/components/search/SearchCourseCard.jsx +++ b/src/components/search/SearchCourseCard.jsx @@ -11,7 +11,7 @@ import { sendEnterpriseTrackEvent } from '@edx/frontend-enterprise-utils'; import { getPrimaryPartnerLogo, isDefinedAndNotNull } from '../../utils/common'; -const SearchCourseCard = ({ hit, isLoading }) => { +function SearchCourseCard({ hit, isLoading }) { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const course = hit ? camelCaseObject(hit) : {}; @@ -152,11 +152,11 @@ const SearchCourseCard = ({ hit, isLoading }) => { </Link> </div> ); -}; +} -const SkeletonCourseCard = (props) => ( - <SearchCourseCard {...props} isLoading /> -); +function SkeletonCourseCard(props) { + return <SearchCourseCard {...props} isLoading />; +} SearchCourseCard.propTypes = { hit: PropTypes.shape({ diff --git a/src/components/search/SearchError.jsx b/src/components/search/SearchError.jsx index b69b7aed17..0d7685bfc1 100644 --- a/src/components/search/SearchError.jsx +++ b/src/components/search/SearchError.jsx @@ -5,7 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import { getSearchErrorMessage } from '../utils/search'; -const SearchError = ({ title }) => { +function SearchError({ title }) { const searchErrorMessage = getSearchErrorMessage(title); const renderDialog = useCallback( () => ( @@ -32,7 +32,7 @@ const SearchError = ({ title }) => { open /> ); -}; +} SearchError.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/search/SearchNoResults.jsx b/src/components/search/SearchNoResults.jsx index 71f7bbfde0..226aed307c 100644 --- a/src/components/search/SearchNoResults.jsx +++ b/src/components/search/SearchNoResults.jsx @@ -7,7 +7,7 @@ import { faSearchMinus } from '@fortawesome/free-solid-svg-icons'; import { PopularResults } from './popular-results'; import { getNoResultsMessage } from '../utils/search'; -const SearchNoResults = ({ title }) => { +function SearchNoResults({ title }) { const noResultsMessage = getNoResultsMessage(title); const renderDialog = useCallback( () => ( @@ -38,7 +38,7 @@ const SearchNoResults = ({ title }) => { <PopularResults title={title} /> </> ); -}; +} SearchNoResults.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/search/SearchPage.jsx b/src/components/search/SearchPage.jsx index 05811ad062..c2405c12d6 100644 --- a/src/components/search/SearchPage.jsx +++ b/src/components/search/SearchPage.jsx @@ -4,10 +4,12 @@ import { SearchData } from '@edx/frontend-enterprise-catalog-search'; import Search from './Search'; import { SEARCH_FACET_FILTERS } from './constants'; -const SearchPage = () => ( - <SearchData searchFacetFilters={SEARCH_FACET_FILTERS}> - <Search /> - </SearchData> -); +function SearchPage() { + return ( + <SearchData searchFacetFilters={SEARCH_FACET_FILTERS}> + <Search /> + </SearchData> + ); +} export default SearchPage; diff --git a/src/components/search/SearchPathway.jsx b/src/components/search/SearchPathway.jsx index dc7d90dc3c..446bf19925 100644 --- a/src/components/search/SearchPathway.jsx +++ b/src/components/search/SearchPathway.jsx @@ -7,7 +7,7 @@ import { NUM_RESULTS_PATHWAY, CONTENT_TYPE_PATHWAY, PATHWAY_TITLE } from './cons import SearchResults from './SearchResults'; import SearchPathwayCard from '../pathway/SearchPathwayCard'; -const SearchPathway = ({ filter }) => { +function SearchPathway({ filter }) { const defaultFilter = `content_type:${CONTENT_TYPE_PATHWAY} AND ${filter}`; const config = getConfig(); @@ -21,7 +21,7 @@ const SearchPathway = ({ filter }) => { <SearchResults hitComponent={SearchPathwayCard} title={PATHWAY_TITLE} /> </Index> ); -}; +} SearchPathway.propTypes = { filter: PropTypes.string.isRequired, diff --git a/src/components/search/SearchProgram.jsx b/src/components/search/SearchProgram.jsx index fe3e971ecc..1b86dd4322 100644 --- a/src/components/search/SearchProgram.jsx +++ b/src/components/search/SearchProgram.jsx @@ -7,7 +7,7 @@ import { NUM_RESULTS_PROGRAM, CONTENT_TYPE_PROGRAM, PROGRAM_TITLE } from './cons import SearchResults from './SearchResults'; import SearchProgramCard from './SearchProgramCard'; -const SearchProgram = ({ filter }) => { +function SearchProgram({ filter }) { const defaultFilter = `content_type:${CONTENT_TYPE_PROGRAM} AND ${filter}`; const config = getConfig(); @@ -21,7 +21,7 @@ const SearchProgram = ({ filter }) => { <SearchResults hitComponent={SearchProgramCard} title={PROGRAM_TITLE} /> </Index> ); -}; +} SearchProgram.propTypes = { filter: PropTypes.string.isRequired, diff --git a/src/components/search/SearchProgramCard.jsx b/src/components/search/SearchProgramCard.jsx index 1e15f0795b..bef15becc7 100644 --- a/src/components/search/SearchProgramCard.jsx +++ b/src/components/search/SearchProgramCard.jsx @@ -36,7 +36,7 @@ export const ProgramType = ({ type }) => { return programTypeToDisplay; }; -const SearchProgramCard = ({ hit, isLoading }) => { +function SearchProgramCard({ hit, isLoading }) { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const program = useMemo(() => { if (!hit) { @@ -191,11 +191,11 @@ const SearchProgramCard = ({ hit, isLoading }) => { </Link> </div> ); -}; +} -const SkeletonProgramCard = (props) => ( - <SearchProgramCard {...props} isLoading /> -); +function SkeletonProgramCard(props) { + return <SearchProgramCard {...props} isLoading />; +} SearchProgramCard.propTypes = { hit: PropTypes.shape({ diff --git a/src/components/search/SearchResults.jsx b/src/components/search/SearchResults.jsx index e1dbf5361b..905697fbcc 100644 --- a/src/components/search/SearchResults.jsx +++ b/src/components/search/SearchResults.jsx @@ -17,7 +17,7 @@ import { } from './constants'; import { getContentTypeFromTitle, getNoOfResultsFromTitle, getSkeletonCardFromTitle } from '../utils/search'; -const SearchResults = ({ +function SearchResults({ searchResults, searchState, isSearchStalled, @@ -25,7 +25,7 @@ const SearchResults = ({ hitComponent, title, contentType, -}) => { +}) { const { refinements, dispatch } = useContext(SearchContext); const nbHits = useNbHitsFromSearchResults(searchResults); const linkText = `Show (${nbHits}) >`; @@ -137,7 +137,7 @@ const SearchResults = ({ </> </Container> ); -}; +} SearchResults.propTypes = { searchState: PropTypes.shape({ diff --git a/src/components/search/data/tests/hooks.test.jsx b/src/components/search/data/tests/hooks.test.jsx index 62a76b209a..cf01d57576 100644 --- a/src/components/search/data/tests/hooks.test.jsx +++ b/src/components/search/data/tests/hooks.test.jsx @@ -118,8 +118,9 @@ describe('useSearchCatalogs', () => { }); }); -const SearchWrapper = (value) => ({ children }) => ( - <SearchContext.Provider value={value}>{children}</SearchContext.Provider>); +const SearchWrapper = (value) => function ({ children }) { + return <SearchContext.Provider value={value}>{children}</SearchContext.Provider>; +}; describe('useDefaultSearchFilters', () => { const refinementsShowAll = { refinements: { [SHOW_ALL_NAME]: 1 } }; diff --git a/src/components/search/popular-results/PopularResults.jsx b/src/components/search/popular-results/PopularResults.jsx index b088224d0d..4ff81cefdc 100644 --- a/src/components/search/popular-results/PopularResults.jsx +++ b/src/components/search/popular-results/PopularResults.jsx @@ -10,13 +10,13 @@ import { isDefinedAndNotNull } from '../../../utils/common'; import { NUM_RESULTS_TO_DISPLAY } from './data/constants'; import { getHitComponentFromTitle, getSkeletonCardFromTitle } from '../../utils/search'; -const PopularResults = ({ +function PopularResults({ searchResults, isSearchStalled, error, title, numberResultsToDisplay, -}) => { +}) { const nbHits = useNbHitsFromSearchResults(searchResults); return ( @@ -48,7 +48,7 @@ const PopularResults = ({ )} </> ); -}; +} PopularResults.propTypes = { searchResults: PropTypes.shape(), diff --git a/src/components/search/popular-results/PopularResultsIndex.jsx b/src/components/search/popular-results/PopularResultsIndex.jsx index b5fdac246d..a55f5e3a53 100644 --- a/src/components/search/popular-results/PopularResultsIndex.jsx +++ b/src/components/search/popular-results/PopularResultsIndex.jsx @@ -10,7 +10,7 @@ import { NUM_RESULTS_TO_DISPLAY } from './data/constants'; import { getContentTypeFromTitle } from '../../utils/search'; import { SubsidyRequestsContext } from '../../enterprise-subsidy-requests'; -const PopularResultsIndex = ({ title, numberResultsToDisplay }) => { +function PopularResultsIndex({ title, numberResultsToDisplay }) { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, subscriptionLicense, couponCodes: { couponCodes }, enterpriseOffers, @@ -43,7 +43,7 @@ const PopularResultsIndex = ({ title, numberResultsToDisplay }) => { <PopularResults title={title} numberResultsToDisplay={numberResultsToDisplay} /> </Index> ); -}; +} PopularResultsIndex.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/search/tests/SearchCourseCard.test.jsx b/src/components/search/tests/SearchCourseCard.test.jsx index 6e4d1625cc..0f3eebb867 100644 --- a/src/components/search/tests/SearchCourseCard.test.jsx +++ b/src/components/search/tests/SearchCourseCard.test.jsx @@ -19,15 +19,17 @@ jest.mock('react-loading-skeleton', () => ({ default: (props = {}) => <div data-testid={props['data-testid']} />, })); -const SearchCourseCardWithAppContext = (props) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, - }} - > - <SearchCourseCard {...props} /> - </AppContext.Provider> -); +function SearchCourseCardWithAppContext(props) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, + }} + > + <SearchCourseCard {...props} /> + </AppContext.Provider> + ); +} const TEST_COURSE_KEY = 'test-course-key'; const TEST_TITLE = 'Test Title'; diff --git a/src/components/search/tests/SearchProgramCard.test.jsx b/src/components/search/tests/SearchProgramCard.test.jsx index ff8013a937..ce66a83d47 100644 --- a/src/components/search/tests/SearchProgramCard.test.jsx +++ b/src/components/search/tests/SearchProgramCard.test.jsx @@ -30,15 +30,17 @@ jest.mock('@edx/frontend-enterprise-utils', () => ({ sendEnterpriseTrackEvent: jest.fn(), })); -const SearchProgramCardWithAppContext = (props) => ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, - }} - > - <SearchProgramCard {...props} /> - </AppContext.Provider> -); +function SearchProgramCardWithAppContext(props) { + return ( + <AppContext.Provider + value={{ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, + }} + > + <SearchProgramCard {...props} /> + </AppContext.Provider> + ); +} const PROGRAM_UUID = 'a9cbdeb6-5fc0-44ef-97f7-9ed605a149db'; const PROGRAM_TITLE = 'Intro to BatVerse'; diff --git a/src/components/search/tests/SearchResults.test.jsx b/src/components/search/tests/SearchResults.test.jsx index dc318ea114..d522fa3679 100644 --- a/src/components/search/tests/SearchResults.test.jsx +++ b/src/components/search/tests/SearchResults.test.jsx @@ -84,17 +84,19 @@ const initialSubsidyRequestsState = { }; /* eslint-enable react/prop-types */ -const SearchResultsWithContext = (props) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <SearchContext.Provider value={searchContext}> - <SearchResults {...props} /> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +function SearchResultsWithContext(props) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <SearchContext.Provider value={searchContext}> + <SearchResults {...props} /> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const TEST_COURSE_KEY = 'test-course-key'; diff --git a/src/components/site-header/AvatarDropdown.jsx b/src/components/site-header/AvatarDropdown.jsx index 14d80a156d..1e9e3262c4 100644 --- a/src/components/site-header/AvatarDropdown.jsx +++ b/src/components/site-header/AvatarDropdown.jsx @@ -6,7 +6,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import { AvatarButton, Dropdown } from '@edx/paragon'; import { isDefinedAndNotNull } from '../../utils/common'; -const AvatarDropdown = ({ showLabel }) => { +function AvatarDropdown({ showLabel }) { const { BASE_URL, LMS_BASE_URL, @@ -55,7 +55,7 @@ const AvatarDropdown = ({ showLabel }) => { </Dropdown.Menu> </Dropdown> ); -}; +} AvatarDropdown.propTypes = { showLabel: PropTypes.bool, diff --git a/src/components/site-header/SiteHeader.jsx b/src/components/site-header/SiteHeader.jsx index 19d5b68cd7..347c4987a4 100644 --- a/src/components/site-header/SiteHeader.jsx +++ b/src/components/site-header/SiteHeader.jsx @@ -27,11 +27,9 @@ export default function SiteHeader() { return image; } return ( - <> - <Link to={`/${enterpriseConfig.slug}`} data-testid="header-logo-link-id"> - {image} - </Link> - </> + <Link to={`/${enterpriseConfig.slug}`} data-testid="header-logo-link-id"> + {image} + </Link> ); }; diff --git a/src/components/site-header/tests/SiteHeader.test.jsx b/src/components/site-header/tests/SiteHeader.test.jsx index c5cf1c9f64..21b048b430 100644 --- a/src/components/site-header/tests/SiteHeader.test.jsx +++ b/src/components/site-header/tests/SiteHeader.test.jsx @@ -29,13 +29,15 @@ const appState = { }; /* eslint-disable react/prop-types */ -const SiteHeaderWithContext = ({ +function SiteHeaderWithContext({ initialAppState = appState, -}) => ( - <AppContext.Provider value={initialAppState}> - <SiteHeader /> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <SiteHeader /> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const mockWindowConfig = { diff --git a/src/components/skills-quiz/CardLoadingSkeleton.jsx b/src/components/skills-quiz/CardLoadingSkeleton.jsx index 68fa9d4b49..b5ce4691b4 100644 --- a/src/components/skills-quiz/CardLoadingSkeleton.jsx +++ b/src/components/skills-quiz/CardLoadingSkeleton.jsx @@ -4,38 +4,40 @@ import { Card } from '@edx/paragon'; import Skeleton from 'react-loading-skeleton'; import { LOADING_NO_OF_CARDS } from './constants'; -const CardLoadingSkeleton = () => ( - <div className="row col col-12 p-0"> - <div className="skill-quiz-results align-items-l-between col col-xl-10"> - {Array.from({ length: LOADING_NO_OF_CARDS }, (_, i) => ( - <div - className="search-result-card mb-4" - role="group" - key={i} - > - {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} - <Link to="#"> - <Card> - <Card.ImageCap - as={Skeleton} - duration={0} - /> +function CardLoadingSkeleton() { + return ( + <div className="row col col-12 p-0"> + <div className="skill-quiz-results align-items-l-between col col-xl-10"> + {Array.from({ length: LOADING_NO_OF_CARDS }, (_, i) => ( + <div + className="search-result-card mb-4" + role="group" + key={i} + > + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + <Link to="#"> + <Card> + <Card.ImageCap + as={Skeleton} + duration={0} + /> - <Card.Header - title={ - <Skeleton count={2} data-testid="course-title-loading" /> - } - /> - <Card.Section> - <Skeleton duration={0} data-testid="partner-name-loading" /> - <Skeleton count={1} data-testid="skills-loading" /> - </Card.Section> - </Card> - </Link> - </div> - ))} + <Card.Header + title={ + <Skeleton count={2} data-testid="course-title-loading" /> + } + /> + <Card.Section> + <Skeleton duration={0} data-testid="partner-name-loading" /> + <Skeleton count={1} data-testid="skills-loading" /> + </Card.Section> + </Card> + </Link> + </div> + ))} + </div> </div> - </div> -); + ); +} export default CardLoadingSkeleton; diff --git a/src/components/skills-quiz/CourseCard.jsx b/src/components/skills-quiz/CourseCard.jsx index 1cad78e481..49e8276c55 100644 --- a/src/components/skills-quiz/CourseCard.jsx +++ b/src/components/skills-quiz/CourseCard.jsx @@ -11,9 +11,9 @@ import { ELLIPSIS_STR } from '../course/data/constants'; import { isDefinedAndNotNull } from '../../utils/common'; import { MAX_VISIBLE_SKILLS_COURSE, SKILL_NAME_CUTOFF_LIMIT } from './constants'; -const CourseCard = ({ +function CourseCard({ isLoading, course, allSkills, -}) => { +}) { const { enterpriseConfig } = useContext(AppContext); const { slug, uuid } = enterpriseConfig; const partnerDetails = useMemo(() => { @@ -133,7 +133,7 @@ const CourseCard = ({ </Link> </div> ); -}; +} CourseCard.propTypes = { course: PropTypes.shape({ diff --git a/src/components/skills-quiz/CurrentJobDropdown.jsx b/src/components/skills-quiz/CurrentJobDropdown.jsx index f9b2c1a881..c9562d4613 100644 --- a/src/components/skills-quiz/CurrentJobDropdown.jsx +++ b/src/components/skills-quiz/CurrentJobDropdown.jsx @@ -4,7 +4,7 @@ import FacetListRefinement from '@edx/frontend-enterprise-catalog-search/FacetLi import { CURRENT_JOB_FACET } from './constants'; -const CurrentJobDropdown = () => { +function CurrentJobDropdown() { const { refinements } = useContext(SearchContext); const { title, attribute, typeaheadOptions, facetValueType, customAttribute, @@ -25,6 +25,6 @@ const CurrentJobDropdown = () => { showBadge={false} /> ); -}; +} export default CurrentJobDropdown; diff --git a/src/components/skills-quiz/GoalDropdown.jsx b/src/components/skills-quiz/GoalDropdown.jsx index 6871f95115..76feddbd58 100644 --- a/src/components/skills-quiz/GoalDropdown.jsx +++ b/src/components/skills-quiz/GoalDropdown.jsx @@ -7,7 +7,7 @@ import { import { SET_KEY_VALUE } from './data/constants'; import { SkillsContext } from './SkillsContextProvider'; -const GoalDropdown = () => { +function GoalDropdown() { const { dispatch, state } = useContext(SkillsContext); const { goal } = state; const selectGoal = (selectedGoal) => { @@ -30,6 +30,6 @@ const GoalDropdown = () => { </Dropdown.Menu> </Dropdown> ); -}; +} export default GoalDropdown; diff --git a/src/components/skills-quiz/JobCardComponent.jsx b/src/components/skills-quiz/JobCardComponent.jsx index 0179c4ab5e..94a38af4e3 100644 --- a/src/components/skills-quiz/JobCardComponent.jsx +++ b/src/components/skills-quiz/JobCardComponent.jsx @@ -6,7 +6,7 @@ import PropTypes from 'prop-types'; import { formatStringAsNumber } from '../../utils/common'; import { NOT_AVAILABLE } from './constants'; -const JobCardComponent = ({ jobs, isLoading }) => { +function JobCardComponent({ jobs, isLoading }) { const { enterpriseConfig: { hideLaborMarketData } } = useContext(AppContext); return ( <> @@ -58,7 +58,7 @@ const JobCardComponent = ({ jobs, isLoading }) => { ))} </> ); -}; +} JobCardComponent.defaultProps = { jobs: undefined, diff --git a/src/components/skills-quiz/SearchCourseCard.jsx b/src/components/skills-quiz/SearchCourseCard.jsx index 70c2090bf1..0a212c782f 100644 --- a/src/components/skills-quiz/SearchCourseCard.jsx +++ b/src/components/skills-quiz/SearchCourseCard.jsx @@ -28,7 +28,7 @@ const renderDialog = () => ( </div> ); -const SearchCourseCard = ({ index }) => { +function SearchCourseCard({ index }) { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, subscriptionLicense, couponCodes: { couponCodes }, enterpriseOffers, @@ -111,7 +111,7 @@ const SearchCourseCard = ({ index }) => { </div> </div> ); -}; +} SearchCourseCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchCurrentJobCard.jsx b/src/components/skills-quiz/SearchCurrentJobCard.jsx index b17d4a7fd0..87631f1b8d 100644 --- a/src/components/skills-quiz/SearchCurrentJobCard.jsx +++ b/src/components/skills-quiz/SearchCurrentJobCard.jsx @@ -8,20 +8,22 @@ import { SkillsContext } from './SkillsContextProvider'; import JobCardComponent from './JobCardComponent'; import { SET_KEY_VALUE } from './data/constants'; -const SearchCurrentJobCard = ({ index }) => { +function SearchCurrentJobCard({ index }) { const { refinements } = useContext(SearchContext); const { current_job: currentJob } = refinements; const [isLoading, setIsLoading] = useState(true); const { dispatch, state } = useContext(SkillsContext); const { currentJobRole } = state; - const jobToFetch = useMemo(() => { - const jobsArray = []; - if (currentJob?.length > 0) { - jobsArray.push(`name:${currentJob[0]}`); - } - return jobsArray; - }, - [currentJob]); + const jobToFetch = useMemo( + () => { + const jobsArray = []; + if (currentJob?.length > 0) { + jobsArray.push(`name:${currentJob[0]}`); + } + return jobsArray; + }, + [currentJob], + ); useEffect( () => { @@ -49,7 +51,7 @@ const SearchCurrentJobCard = ({ index }) => { <JobCardComponent jobs={currentJobRole} isLoading={isLoading} /> </div> ); -}; +} SearchCurrentJobCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchJobCard.jsx b/src/components/skills-quiz/SearchJobCard.jsx index d38a96afa5..eeee8fd185 100644 --- a/src/components/skills-quiz/SearchJobCard.jsx +++ b/src/components/skills-quiz/SearchJobCard.jsx @@ -7,20 +7,22 @@ import { SkillsContext } from './SkillsContextProvider'; import { SET_KEY_VALUE } from './data/constants'; import JobCardComponent from './JobCardComponent'; -const SearchJobCard = ({ index }) => { +function SearchJobCard({ index }) { const { refinements } = useContext(SearchContext); const { name: jobs } = refinements; const [isLoading, setIsLoading] = useState(true); const { dispatch, state } = useContext(SkillsContext); const { interestedJobs } = state; - const jobsToFetch = useMemo(() => { - const jobsArray = []; - if (jobs) { - jobs.forEach(job => jobsArray.push(`name:${job}`)); - } - return jobsArray; - }, - [jobs]); + const jobsToFetch = useMemo( + () => { + const jobsArray = []; + if (jobs) { + jobs.forEach(job => jobsArray.push(`name:${job}`)); + } + return jobsArray; + }, + [jobs], + ); useEffect( () => { @@ -49,7 +51,7 @@ const SearchJobCard = ({ index }) => { <JobCardComponent jobs={interestedJobs} isLoading={isLoading} /> </div> ); -}; +} SearchJobCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchJobDropdown.jsx b/src/components/skills-quiz/SearchJobDropdown.jsx index 25a31ec1e6..07280c6c6a 100644 --- a/src/components/skills-quiz/SearchJobDropdown.jsx +++ b/src/components/skills-quiz/SearchJobDropdown.jsx @@ -4,7 +4,7 @@ import FacetListRefinement from '@edx/frontend-enterprise-catalog-search/FacetLi import { DESIRED_JOB_FACET } from './constants'; -const SearchJobDropdown = () => { +function SearchJobDropdown() { const { refinements } = useContext(SearchContext); const { title, attribute, typeaheadOptions } = DESIRED_JOB_FACET; @@ -22,6 +22,6 @@ const SearchJobDropdown = () => { showBadge={false} /> ); -}; +} export default SearchJobDropdown; diff --git a/src/components/skills-quiz/SearchPathways.jsx b/src/components/skills-quiz/SearchPathways.jsx index 4a2bff56ee..32bd56f35a 100644 --- a/src/components/skills-quiz/SearchPathways.jsx +++ b/src/components/skills-quiz/SearchPathways.jsx @@ -13,7 +13,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy'; import SearchPathwayCard from '../pathway/SearchPathwayCard'; import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; -const SearchPathways = ({ index }) => { +function SearchPathways({ index }) { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, subscriptionLicense, couponCodes: { couponCodes }, enterpriseOffers, @@ -86,7 +86,7 @@ const SearchPathways = ({ index }) => { </div> </div> ); -}; +} SearchPathways.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchProgramCard.jsx b/src/components/skills-quiz/SearchProgramCard.jsx index 296f9a2f33..abb12b1fbc 100644 --- a/src/components/skills-quiz/SearchProgramCard.jsx +++ b/src/components/skills-quiz/SearchProgramCard.jsx @@ -55,7 +55,7 @@ const renderDialog = () => ( </div> ); -const SearchProgramCard = ({ index }) => { +function SearchProgramCard({ index }) { const { enterpriseConfig } = useContext(AppContext); const { slug, uuid } = enterpriseConfig; const { @@ -290,7 +290,7 @@ const SearchProgramCard = ({ index }) => { </div> </div> ); -}; +} SearchProgramCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SelectJobCard.jsx b/src/components/skills-quiz/SelectJobCard.jsx index 6e4c4b09d3..7feee2d8e5 100644 --- a/src/components/skills-quiz/SelectJobCard.jsx +++ b/src/components/skills-quiz/SelectJobCard.jsx @@ -7,7 +7,7 @@ import { formatStringAsNumber } from '../../utils/common'; import { checkValidGoalAndJobSelected } from '../utils/skills-quiz'; import { NOT_AVAILABLE } from './constants'; -const SelectJobCard = () => { +function SelectJobCard() { const { dispatch, state } = useContext(SkillsContext); const { enterpriseConfig: { hideLaborMarketData } } = useContext(AppContext); const { @@ -64,6 +64,6 @@ const SelectJobCard = () => { </SelectableBox.Set> </div> ); -}; +} export default SelectJobCard; diff --git a/src/components/skills-quiz/SelectedJobSkills.jsx b/src/components/skills-quiz/SelectedJobSkills.jsx index 8bbd7d7204..9e572ed85a 100644 --- a/src/components/skills-quiz/SelectedJobSkills.jsx +++ b/src/components/skills-quiz/SelectedJobSkills.jsx @@ -3,7 +3,7 @@ import { Badge } from '@edx/paragon'; import { SkillsContext } from './SkillsContextProvider'; import { DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE } from './constants'; -const SelectedJobSkills = () => { +function SelectedJobSkills() { const { state } = useContext(SkillsContext); const { interestedJobs, selectedJob, goal, currentJobRole, @@ -32,6 +32,6 @@ const SelectedJobSkills = () => { </div> </div> ); -}; +} export default SelectedJobSkills; diff --git a/src/components/skills-quiz/SkillsCourses.jsx b/src/components/skills-quiz/SkillsCourses.jsx index c679cdf8b0..9ae49dea88 100644 --- a/src/components/skills-quiz/SkillsCourses.jsx +++ b/src/components/skills-quiz/SkillsCourses.jsx @@ -36,7 +36,7 @@ const renderDialog = () => ( </div> ); -const SkillsCourses = ({ index }) => { +function SkillsCourses({ index }) { const { enterpriseConfig } = useContext(AppContext); const { state: { selectedJob } } = useContext(SkillsContext); const [isLoading, setIsLoading] = useState(false); @@ -163,7 +163,7 @@ const SkillsCourses = ({ index }) => { </div> </div> ); -}; +} SkillsCourses.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SkillsDropDown.jsx b/src/components/skills-quiz/SkillsDropDown.jsx index e9ce7c214f..af4fe24aee 100644 --- a/src/components/skills-quiz/SkillsDropDown.jsx +++ b/src/components/skills-quiz/SkillsDropDown.jsx @@ -4,7 +4,7 @@ import FacetListRefinement from '@edx/frontend-enterprise-catalog-search/FacetLi import { SKILLS_FACET } from './constants'; -const SkillsDropDown = () => { +function SkillsDropDown() { const { refinements } = useContext(SearchContext); const { title, attribute, typeaheadOptions, facetValueType, @@ -23,6 +23,6 @@ const SkillsDropDown = () => { doRefinement={false} /> ); -}; +} export default SkillsDropDown; diff --git a/src/components/skills-quiz/SkillsQuiz.jsx b/src/components/skills-quiz/SkillsQuiz.jsx index d2f6c34e4a..a2635baa8c 100644 --- a/src/components/skills-quiz/SkillsQuiz.jsx +++ b/src/components/skills-quiz/SkillsQuiz.jsx @@ -12,7 +12,7 @@ import { MainContent } from '../layout'; import SkillsQuizStepper from './SkillsQuizStepper'; import { SkillsContextProvider } from './SkillsContextProvider'; -const SkillsQuiz = () => { +function SkillsQuiz() { const { enterpriseConfig } = useContext(AppContext); const PAGE_TITLE = `Skills Quiz - ${enterpriseConfig.name}`; @@ -33,6 +33,6 @@ const SkillsQuiz = () => { </Container> </> ); -}; +} export default SkillsQuiz; diff --git a/src/components/skills-quiz/SkillsQuizHeader.jsx b/src/components/skills-quiz/SkillsQuizHeader.jsx index 2066e3440e..623fc609eb 100644 --- a/src/components/skills-quiz/SkillsQuizHeader.jsx +++ b/src/components/skills-quiz/SkillsQuizHeader.jsx @@ -1,19 +1,21 @@ import React from 'react'; import edxLogo from './images/edx-logo.svg'; -const SkillsQuizHeader = () => ( - <div style={{ display: 'flex' }} className="ml-2"> - <img src={edxLogo} alt="edx-logo" height="110px" /> - <div - className="ml-5 vertical-line" - /> - <div style={{ minWidth: 'max-content' }} className="ml-5 header-text"> - <h1 className="heading">Skills Builder</h1> - <h2 className="subheading"> - Start your learning journey with edX - </h2> +function SkillsQuizHeader() { + return ( + <div style={{ display: 'flex' }} className="ml-2"> + <img src={edxLogo} alt="edx-logo" height="110px" /> + <div + className="ml-5 vertical-line" + /> + <div style={{ minWidth: 'max-content' }} className="ml-5 header-text"> + <h1 className="heading">Skills Builder</h1> + <h2 className="subheading"> + Start your learning journey with edX + </h2> + </div> </div> - </div> -); + ); +} export default SkillsQuizHeader; diff --git a/src/components/skills-quiz/SkillsQuizStepper.jsx b/src/components/skills-quiz/SkillsQuizStepper.jsx index cc06683d46..0082faf94c 100644 --- a/src/components/skills-quiz/SkillsQuizStepper.jsx +++ b/src/components/skills-quiz/SkillsQuizStepper.jsx @@ -45,7 +45,7 @@ import SkillsQuizHeader from './SkillsQuizHeader'; import headerImage from './images/headerImage.png'; import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; -const SkillsQuizStepper = () => { +function SkillsQuizStepper() { const config = getConfig(); const { userId } = getAuthenticatedUser(); const [searchClient, courseIndex, jobIndex] = useMemo( @@ -176,140 +176,139 @@ const SkillsQuizStepper = () => { }, [skillsVisible, selectedSkills]); return ( - <> - <Stepper activeKey={currentStep}> - <ModalDialog - title="Skills Quiz" - size="fullscreen" - className="bg-light-200 skills-quiz-modal" - isOpen - onClose={() => closeSkillsQuiz()} - > - <ModalDialog.Hero className="bg-img"> - <ModalDialog.Hero.Background - backgroundSrc={headerImage} - /> - <ModalDialog.Hero.Content style={{ maxWidth: '15rem' }}> - <SkillsQuizHeader /> - </ModalDialog.Hero.Content> - </ModalDialog.Hero> - <ModalDialog.Body> - <Container size="lg"> - <Stepper.Step eventKey="skills-search" title="Skills Search"> + <Stepper activeKey={currentStep}> + <ModalDialog + title="Skills Quiz" + size="fullscreen" + className="bg-light-200 skills-quiz-modal" + isOpen + onClose={() => closeSkillsQuiz()} + > + <ModalDialog.Hero className="bg-img"> + <ModalDialog.Hero.Background + backgroundSrc={headerImage} + /> + <ModalDialog.Hero.Content style={{ maxWidth: '15rem' }}> + <SkillsQuizHeader /> + </ModalDialog.Hero.Content> + </ModalDialog.Hero> + <ModalDialog.Body> + <Container size="lg"> + <Stepper.Step eventKey="skills-search" title="Skills Search"> - <div className="row skills-quiz-dropdown mt-4"> - <div className="col col-12"> - <p> - {SKILLS_QUIZ_SEARCH_PAGE_MESSAGE} - </p> - <p className="mt-4.5"> - First, tell us a bit more about what you want to achieve. - </p> + <div className="row skills-quiz-dropdown mt-4"> + <div className="col col-12"> + <p> + {SKILLS_QUIZ_SEARCH_PAGE_MESSAGE} + </p> + <p className="mt-4.5"> + First, tell us a bit more about what you want to achieve. + </p> - <div className="col col-8 p-0 mt-2"> - <GoalDropdown /> - </div> - { - skillsVisible && ( - <InstantSearch - indexName={config.ALGOLIA_INDEX_NAME} - searchClient={searchClient} - > - <Configure - filters={filters} - facetingAfterDistinct - /> - <div className="skills-drop-down"> - <div className="mt-4.5"> - Second, which skills are you interested in developing? (select at least one) - </div> - <div className="col col-8 p-0 mt-1"> - <SkillsDropDown /> - </div> - </div> - </InstantSearch> - ) - } - - <div className="col col-8 p-0"> - {skillsVisible && ( - <TagCloud - tags={selectedSkills} - onRemove={ - (skillMetadata) => { - if (selectedSkills.length > 1) { - dispatch(removeFromRefinementArray('skill_names', skillMetadata.title)); - } else { - dispatch(deleteRefinementAction('skill_names')); - } - } - } + <div className="col col-8 p-0 mt-2"> + <GoalDropdown /> + </div> + { + skillsVisible && ( + <InstantSearch + indexName={config.ALGOLIA_INDEX_NAME} + searchClient={searchClient} + > + <Configure + filters={filters} + facetingAfterDistinct /> - )} - </div> - - { - jobsDropdownsVisible && ( - <div> + <div className="skills-drop-down"> <div className="mt-4.5"> - Next, tell us about your current job title. + Second, which skills are you interested in developing? (select at least one) + </div> + <div className="col col-8 p-0 mt-1"> + <SkillsDropDown /> </div> - - <InstantSearch - indexName={config.ALGOLIA_INDEX_NAME_JOBS} - searchClient={searchClient} - > - <div className="col col-8 p-0 mt-3"> - <CurrentJobDropdown /> - <Form.Checkbox - checked={isStudentChecked} - onChange={handleIsStudentCheckedChange} - disabled={goal === DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE} - data-testid="is-student-checkbox" - > - I am currently a student - </Form.Checkbox> - </div> - <div className="col col-8 p-0 mt-n2"> - { goal !== DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE - ? ( - <div className="mt-4.5"> - Lastly, tell us about career paths you're interested in (select up to three) - <SearchJobDropdown /> - </div> - ) : null } - </div> - </InstantSearch> - </div> - ) - } + </InstantSearch> + ) + } + <div className="col col-8 p-0"> + {skillsVisible && ( + <TagCloud + tags={selectedSkills} + onRemove={ + (skillMetadata) => { + if (selectedSkills.length > 1) { + dispatch(removeFromRefinementArray('skill_names', skillMetadata.title)); + } else { + dispatch(deleteRefinementAction('skill_names')); + } + } + } + /> + )} </div> { jobsDropdownsVisible && ( - <div className="col-12 mt-4"> - { goalExceptImproveAndJobSelected - ? <SearchJobCard index={jobIndex} /> : null } - { improveGoalAndCurrentJobSelected - ? <SearchCurrentJobCard index={jobIndex} /> : null } + <div> + <div className="mt-4.5"> + Next, tell us about your current job title. + </div> + + <InstantSearch + indexName={config.ALGOLIA_INDEX_NAME_JOBS} + searchClient={searchClient} + > + <div className="col col-8 p-0 mt-3"> + <CurrentJobDropdown /> + <Form.Checkbox + checked={isStudentChecked} + onChange={handleIsStudentCheckedChange} + disabled={goal === DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE} + data-testid="is-student-checkbox" + > + I am currently a student + </Form.Checkbox> + </div> + <div className="col col-8 p-0 mt-n2"> + { goal !== DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE + ? ( + <div className="mt-4.5"> + Lastly, tell us about career paths you're interested in (select up to three) + <SearchJobDropdown /> + </div> + ) : null } + </div> + </InstantSearch> + </div> ) } + </div> - </Stepper.Step> - <Stepper.Step eventKey="courses-with-jobs" title="Recommended Courses With Jobs"> - <div style={{ paddingLeft: '10%' }}> - <div className="row mb-4 pl-2 mt-4"> - <h2>Start Exploring Courses!</h2> - </div> - <div className="search-job-card mb-4"> - { canContinueToRecommendedCourses ? <SelectJobCard /> : null} - </div> - <SelectedJobSkills /> - <div> - { (selectedJob || skills || goal === DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE) + + { + jobsDropdownsVisible && ( + <div className="col-12 mt-4"> + { goalExceptImproveAndJobSelected + ? <SearchJobCard index={jobIndex} /> : null } + { improveGoalAndCurrentJobSelected + ? <SearchCurrentJobCard index={jobIndex} /> : null } + </div> + ) + } + </div> + </Stepper.Step> + <Stepper.Step eventKey="courses-with-jobs" title="Recommended Courses With Jobs"> + <div style={{ paddingLeft: '10%' }}> + <div className="row mb-4 pl-2 mt-4"> + <h2>Start Exploring Courses!</h2> + </div> + <div className="search-job-card mb-4"> + { canContinueToRecommendedCourses ? <SelectJobCard /> : null} + </div> + <SelectedJobSkills /> + <div> + { (selectedJob || skills || goal === DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE) && ( <div> <SearchCourseCard index={courseIndex} /> @@ -317,50 +316,49 @@ const SkillsQuizStepper = () => { <SearchPathways index={courseIndex} /> </div> )} - </div> - </div> - <div className="row justify-content-center"> - <Button variant="outline-primary" onClick={() => setCurrentStep(STEP3)}>See more course recommendations</Button> </div> - </Stepper.Step> - </Container> - <Container size="xl"> - <Stepper.Step eventKey="courses-with-skills" title="Recommended Courses With Skills"> - <SkillsCourses index={courseIndex} /> - </Stepper.Step> - </Container> - </ModalDialog.Body> - <ModalDialog.Footer> - <Stepper.ActionRow eventKey="skills-search"> - <Button variant="outline-primary" onClick={() => closeSkillsQuiz()}> - Cancel - </Button> - <Stepper.ActionRow.Spacer /> - <Button - disabled={!canContinueToRecommendedCourses} - onClick={() => flipToRecommendedCourses()} - >Continue - </Button> - </Stepper.ActionRow> - <Stepper.ActionRow eventKey="courses-with-jobs"> - <Button variant="outline-primary" onClick={() => setCurrentStep(STEP1)}> - Go back - </Button> - <Stepper.ActionRow.Spacer /> - <Button onClick={() => setCurrentStep(STEP3)}>Continue</Button> - </Stepper.ActionRow> - <Stepper.ActionRow eventKey="courses-with-skills"> - <Button variant="outline-primary" onClick={() => setCurrentStep(STEP2)}> - Go back - </Button> - <Stepper.ActionRow.Spacer /> - <Button onClick={() => closeSkillsQuiz()}>Done</Button> - </Stepper.ActionRow> - </ModalDialog.Footer> - </ModalDialog> - </Stepper> - </> + </div> + <div className="row justify-content-center"> + <Button variant="outline-primary" onClick={() => setCurrentStep(STEP3)}>See more course recommendations</Button> + </div> + </Stepper.Step> + </Container> + <Container size="xl"> + <Stepper.Step eventKey="courses-with-skills" title="Recommended Courses With Skills"> + <SkillsCourses index={courseIndex} /> + </Stepper.Step> + </Container> + </ModalDialog.Body> + <ModalDialog.Footer> + <Stepper.ActionRow eventKey="skills-search"> + <Button variant="outline-primary" onClick={() => closeSkillsQuiz()}> + Cancel + </Button> + <Stepper.ActionRow.Spacer /> + <Button + disabled={!canContinueToRecommendedCourses} + onClick={() => flipToRecommendedCourses()} + >Continue + </Button> + </Stepper.ActionRow> + <Stepper.ActionRow eventKey="courses-with-jobs"> + <Button variant="outline-primary" onClick={() => setCurrentStep(STEP1)}> + Go back + </Button> + <Stepper.ActionRow.Spacer /> + <Button onClick={() => setCurrentStep(STEP3)}>Continue</Button> + </Stepper.ActionRow> + <Stepper.ActionRow eventKey="courses-with-skills"> + <Button variant="outline-primary" onClick={() => setCurrentStep(STEP2)}> + Go back + </Button> + <Stepper.ActionRow.Spacer /> + <Button onClick={() => closeSkillsQuiz()}>Done</Button> + </Stepper.ActionRow> + </ModalDialog.Footer> + </ModalDialog> + </Stepper> ); -}; +} export default SkillsQuizStepper; diff --git a/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx b/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx index dc5cb4eb08..cf9888e2a8 100644 --- a/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx +++ b/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx @@ -11,50 +11,66 @@ const fakeHits = [ { objectID: '2', title: 'blp', key: 'Wasps200' }, ]; -MockReactInstantSearch.connectStateResults = Component => (props) => ( - <Component - searchResults={{ - hits: fakeHits, - hitsPerPage: 25, - nbHits: 2, - nbPages: 1, - page: 1, - }} - isSearchStalled={false} - searchState={{ - page: 1, - }} - {...props} - /> -); +MockReactInstantSearch.connectStateResults = Component => function (props) { + return ( + <Component + searchResults={{ + hits: fakeHits, + hitsPerPage: 25, + nbHits: 2, + nbPages: 1, + page: 1, + }} + isSearchStalled={false} + searchState={{ + page: 1, + }} + {...props} + /> + ); +}; -MockReactInstantSearch.connectPagination = Component => (props) => ( - <Component - nbPages={1} - currentRefinement={1} - maxPagesDisplayed={1} - {...props} - /> -); +MockReactInstantSearch.connectPagination = Component => function (props) { + return ( + <Component + nbPages={1} + currentRefinement={1} + maxPagesDisplayed={1} + {...props} + /> + ); +}; -MockReactInstantSearch.InstantSearch = ({ children }) => <div>{children}</div>; - -MockReactInstantSearch.connectRefinementList = Component => (props) => ( - <Component - attribute="skills" - currentRefinement={[]} - items={[]} - refinements={{}} - title="Foo" - searchForItems={() => {}} - {...props} - /> -); +MockReactInstantSearch.InstantSearch = function ({ children }) { + return <div>{children}</div>; +}; + +MockReactInstantSearch.connectRefinementList = Component => function (props) { + return ( + <Component + attribute="skills" + currentRefinement={[]} + items={[]} + refinements={{}} + title="Foo" + searchForItems={() => {}} + {...props} + /> + ); +}; -MockReactInstantSearch.InstantSearch = ({ children }) => <>{children}</>; -MockReactInstantSearch.Configure = () => <div>CONFIGURED</div>; -MockReactInstantSearch.Hits = () => <div>HIT</div>; -MockReactInstantSearch.Index = ({ children }) => <>{children}</>; +MockReactInstantSearch.InstantSearch = function ({ children }) { + return <>{children}</>; +}; +MockReactInstantSearch.Configure = function () { + return <div>CONFIGURED</div>; +}; +MockReactInstantSearch.Hits = function () { + return <div>HIT</div>; +}; +MockReactInstantSearch.Index = function ({ children }) { + return <>{children}</>; +}; // It is necessary to export this way, or tests not using the mock will fail module.exports = MockReactInstantSearch; diff --git a/src/components/skills-quiz/data/tests/hooks.test.jsx b/src/components/skills-quiz/data/tests/hooks.test.jsx index b941701bfc..d2991da736 100644 --- a/src/components/skills-quiz/data/tests/hooks.test.jsx +++ b/src/components/skills-quiz/data/tests/hooks.test.jsx @@ -6,13 +6,15 @@ import { useSelectedSkillsAndJobSkills } from '../hooks'; import { SkillsContext } from '../../SkillsContextProvider'; import { DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE, DROPDOWN_OPTION_GET_PROMOTED } from '../../constants'; -const SearchWrapper = (searchContext, initialSkillsState) => ({ children }) => ( - <SearchContext.Provider value={searchContext}> - <SkillsContext.Provider value={initialSkillsState}> - {children} - </SkillsContext.Provider> - </SearchContext.Provider> -); +const SearchWrapper = (searchContext, initialSkillsState) => function ({ children }) { + return ( + <SearchContext.Provider value={searchContext}> + <SkillsContext.Provider value={initialSkillsState}> + {children} + </SkillsContext.Provider> + </SearchContext.Provider> + ); +}; const skills = ['test-skill-1', 'test-skill-2']; const SELECTED_JOB_SKILL_NAME = 'test-skill-3'; diff --git a/src/components/skills-quiz/tests/GoalsDropdown.test.jsx b/src/components/skills-quiz/tests/GoalsDropdown.test.jsx index 18189c6b9e..9c2bd8cec1 100644 --- a/src/components/skills-quiz/tests/GoalsDropdown.test.jsx +++ b/src/components/skills-quiz/tests/GoalsDropdown.test.jsx @@ -13,18 +13,20 @@ import GoalDropdown from '../GoalDropdown'; import { SkillsContextProvider } from '../SkillsContextProvider'; /* eslint-disable react/prop-types */ -const GoalDropdownWithContext = ({ +function GoalDropdownWithContext({ initialAppState = {}, initialUserSubsidyState = {}, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SkillsContextProvider> - <GoalDropdown /> - </SkillsContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SkillsContextProvider> + <GoalDropdown /> + </SkillsContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const mockLocation = { diff --git a/src/components/skills-quiz/tests/SearchCourseCard.test.jsx b/src/components/skills-quiz/tests/SearchCourseCard.test.jsx index 91b52226b5..c12ccebbb0 100644 --- a/src/components/skills-quiz/tests/SearchCourseCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchCourseCard.test.jsx @@ -105,26 +105,28 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -const SearchCourseCardWithContext = ({ +function SearchCourseCardWithContext({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, searchContext = defaultSearchContext, index, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SearchContext.Provider value={searchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SearchCourseCard index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SearchContext.Provider value={searchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SearchCourseCard index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SearchCourseCard />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx b/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx index 50d245e57d..b3feda1ae0 100644 --- a/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx @@ -19,20 +19,22 @@ jest.mock('react-loading-skeleton', () => ({ })); /* eslint-disable react/prop-types */ -const SearchCurrentJobCardWithContext = ({ +function SearchCurrentJobCardWithContext({ index, initialAppState, initialSearchState, initialJobsState, -}) => ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider value={initialSearchState}> - <SkillsContextProvider initialState={initialJobsState}> - <SearchCurrentJobCard index={index} /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider value={initialSearchState}> + <SkillsContextProvider initialState={initialJobsState}> + <SearchCurrentJobCard index={index} /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const TEST_JOB_KEY = 'test-job-key'; diff --git a/src/components/skills-quiz/tests/SearchJobCard.test.jsx b/src/components/skills-quiz/tests/SearchJobCard.test.jsx index ac4ec4fb4e..1b3225764e 100644 --- a/src/components/skills-quiz/tests/SearchJobCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchJobCard.test.jsx @@ -19,20 +19,22 @@ jest.mock('react-loading-skeleton', () => ({ })); /* eslint-disable react/prop-types */ -const SearchJobCardWithContext = ({ +function SearchJobCardWithContext({ index, initialAppState, initialSearchState, initialJobsState, -}) => ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider value={initialSearchState}> - <SkillsContextProvider initialState={initialJobsState}> - <SearchJobCard index={index} /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider value={initialSearchState}> + <SkillsContextProvider initialState={initialJobsState}> + <SearchJobCard index={index} /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const TEST_JOB_KEY = 'test-job-key'; diff --git a/src/components/skills-quiz/tests/SearchPathways.test.jsx b/src/components/skills-quiz/tests/SearchPathways.test.jsx index e1a8bb664b..3027a57d34 100644 --- a/src/components/skills-quiz/tests/SearchPathways.test.jsx +++ b/src/components/skills-quiz/tests/SearchPathways.test.jsx @@ -100,26 +100,28 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -const SearchPathwaysWithContext = ({ +function SearchPathwaysWithContext({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, initialSearchContext = defaultSearchContext, index, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SearchContext.Provider value={initialSearchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SearchPathways index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SearchContext.Provider value={initialSearchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SearchPathways index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SearchPathways />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SearchProgramCard.test.jsx b/src/components/skills-quiz/tests/SearchProgramCard.test.jsx index 95e5a7d962..33b952a20b 100644 --- a/src/components/skills-quiz/tests/SearchProgramCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchProgramCard.test.jsx @@ -118,25 +118,27 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -const SearchProgramCardWithContext = ({ +function SearchProgramCardWithContext({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSearchContext = defaultSearchContext, index, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={initialSearchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SearchProgramCard index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> + <SearchContext.Provider value={initialSearchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SearchProgramCard index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SearchProgramCard />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SelectJobCard.test.jsx b/src/components/skills-quiz/tests/SelectJobCard.test.jsx index 2c00cbdd11..0e21b9d08a 100644 --- a/src/components/skills-quiz/tests/SelectJobCard.test.jsx +++ b/src/components/skills-quiz/tests/SelectJobCard.test.jsx @@ -8,18 +8,20 @@ import SelectJobCard from '../SelectJobCard'; import { NOT_AVAILABLE } from '../constants'; /* eslint-disable react/prop-types */ -const SelectJobCardWithContext = ({ +function SelectJobCardWithContext({ initialJobCardState = {}, initialAppState, -}) => ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider> - <SkillsContextProvider initialState={initialJobCardState}> - <SelectJobCard /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider> + <SkillsContextProvider initialState={initialJobCardState}> + <SelectJobCard /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const TEST_MEDIAN_SALARY = '100000'; diff --git a/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx b/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx index 1db847f071..35d13443f7 100644 --- a/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx +++ b/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx @@ -7,18 +7,20 @@ import { SkillsContextProvider } from '../SkillsContextProvider'; import SelectedJobSkills from '../SelectedJobSkills'; /* eslint-disable react/prop-types */ -const SelectedJobSkillsWithContext = ({ +function SelectedJobSkillsWithContext({ initialSelectedJobSkillsState = {}, initialAppState, -}) => ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider> - <SkillsContextProvider initialState={initialSelectedJobSkillsState}> - <SelectedJobSkills /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider> + <SkillsContextProvider initialState={initialSelectedJobSkillsState}> + <SelectedJobSkills /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> + ); +} /* eslint-enable react/prop-types */ const PROGRAMMING = 'Programming'; diff --git a/src/components/skills-quiz/tests/SkillsCourses.test.jsx b/src/components/skills-quiz/tests/SkillsCourses.test.jsx index 48c38a5a04..be6fa3eb3c 100644 --- a/src/components/skills-quiz/tests/SkillsCourses.test.jsx +++ b/src/components/skills-quiz/tests/SkillsCourses.test.jsx @@ -107,26 +107,28 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -const SkillsCoursesWithContext = ({ +function SkillsCoursesWithContext({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, searchContext = defaultSearchContext, index, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SearchContext.Provider value={searchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SkillsCourses index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SearchContext.Provider value={searchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SkillsCourses index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SkillsCourses />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SkillsQuiz.test.jsx b/src/components/skills-quiz/tests/SkillsQuiz.test.jsx index 3150373e75..6e977d0154 100644 --- a/src/components/skills-quiz/tests/SkillsQuiz.test.jsx +++ b/src/components/skills-quiz/tests/SkillsQuiz.test.jsx @@ -59,19 +59,21 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -const SkillsQuizWithContext = ({ +function SkillsQuizWithContext({ initialAppState = defaultAppState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, -}) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SkillsQuiz /> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SkillsQuiz /> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<SkillsQuiz />', () => { afterAll(() => { diff --git a/src/components/system-wide-banner/SystemWideWarningBanner.jsx b/src/components/system-wide-banner/SystemWideWarningBanner.jsx index c6a4d034b2..7fd7c4a191 100644 --- a/src/components/system-wide-banner/SystemWideWarningBanner.jsx +++ b/src/components/system-wide-banner/SystemWideWarningBanner.jsx @@ -3,12 +3,14 @@ import PropTypes from 'prop-types'; import { PageBanner, Icon } from '@edx/paragon'; import { WarningFilled } from '@edx/paragon/icons'; -const SystemWideWarningBanner = ({ children }) => ( - <PageBanner variant="warning"> - <Icon src={WarningFilled} className="mr-2" /> - {children} - </PageBanner> -); +function SystemWideWarningBanner({ children }) { + return ( + <PageBanner variant="warning"> + <Icon src={WarningFilled} className="mr-2" /> + {children} + </PageBanner> + ); +} SystemWideWarningBanner.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/utils/tests.jsx b/src/utils/tests.jsx index 0792f52665..e960d6bd07 100644 --- a/src/utils/tests.jsx +++ b/src/utils/tests.jsx @@ -13,9 +13,9 @@ export function renderWithRouter( } = {}, ) { // eslint-disable-next-line react/prop-types - const Wrapper = ({ children }) => ( - <Router history={history}>{children}</Router> - ); + function Wrapper({ children }) { + return <Router history={history}>{children}</Router>; + } return { ...render(ui, { wrapper: Wrapper }), // adding `history` to the returned utilities to allow us From 9f917d82671afbe5f00ad2094465f0727d94f87e Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 4 Aug 2022 13:42:32 +0500 Subject: [PATCH 03/13] refactor: resolved eslint issues --- src/components/TagCloud/index.jsx | 2 +- src/components/app/LoginRefresh.jsx | 1 + .../enrollment/tests/EnrollAction.test.jsx | 1 + .../course/tests/CourseRunCard.test.jsx | 1 + .../course/tests/EnrollModal.test.jsx | 4 +- .../tests/MarkCompleteModal.test.jsx | 3 + .../sidebar/CouponCodesSummaryCard.jsx | 100 +++++++------- .../sidebar/SubscriptionSummaryCard.jsx | 130 +++++++++--------- .../sidebar/tests/SidebarCard.test.jsx | 2 +- .../coupons/data/reducer.js | 2 +- src/components/notices-provider/index.js | 1 + src/components/pathway/data/utils.js | 4 +- src/components/program/ProgramHeader.jsx | 44 +++--- .../program/tests/ProgramPage.test.jsx | 2 +- src/components/search/SearchCourseCard.jsx | 16 +-- src/components/search/SearchProgramCard.jsx | 4 +- .../search/data/tests/hooks.test.jsx | 1 + src/components/skills-quiz/CourseCard.jsx | 48 ++++--- .../skills-quiz/JobCardComponent.jsx | 33 +++-- .../skills-quiz/SearchProgramCard.jsx | 28 ++-- .../__mocks__/react-instantsearch-dom.jsx | 5 +- .../skills-quiz/data/tests/hooks.test.jsx | 1 + 22 files changed, 216 insertions(+), 217 deletions(-) diff --git a/src/components/TagCloud/index.jsx b/src/components/TagCloud/index.jsx index 3f8f0c736e..d716203422 100644 --- a/src/components/TagCloud/index.jsx +++ b/src/components/TagCloud/index.jsx @@ -27,7 +27,7 @@ TagCloud.propTypes = { tags: PropTypes.arrayOf( PropTypes.shape({ title: PropTypes.string.isRequired, - metadata: PropTypes.object.isRequired, + metadata: PropTypes.shape({}).isRequired, }), ).isRequired, }; diff --git a/src/components/app/LoginRefresh.jsx b/src/components/app/LoginRefresh.jsx index e1906b5d90..c3c6b41203 100644 --- a/src/components/app/LoginRefresh.jsx +++ b/src/components/app/LoginRefresh.jsx @@ -5,6 +5,7 @@ import { Container } from '@edx/paragon'; import { LoadingSpinner } from '../loading-spinner'; import { loginRefresh } from '../../utils/common'; +// eslint-disable-next-line react/prop-types export default function LoginRefresh({ children }) { const { authenticatedUser } = useContext(AppContext); const { roles } = authenticatedUser; diff --git a/src/components/course/enrollment/tests/EnrollAction.test.jsx b/src/components/course/enrollment/tests/EnrollAction.test.jsx index 1da5daea40..9b2df7bc29 100644 --- a/src/components/course/enrollment/tests/EnrollAction.test.jsx +++ b/src/components/course/enrollment/tests/EnrollAction.test.jsx @@ -53,6 +53,7 @@ const subscriptionLicense = { uuid: 'a-license' }; * @param {string} args.enrollAction */ function EnrollLabel(props) { + // eslint-disable-next-line react/prop-types return <div>{props.enrollLabelText}</div>; } const renderEnrollAction = ({ diff --git a/src/components/course/tests/CourseRunCard.test.jsx b/src/components/course/tests/CourseRunCard.test.jsx index 0901e1471c..37a54bad35 100644 --- a/src/components/course/tests/CourseRunCard.test.jsx +++ b/src/components/course/tests/CourseRunCard.test.jsx @@ -28,6 +28,7 @@ const DATE_FORMAT = 'MMM D'; const COURSE_ID = '123'; jest.mock('../../../config'); +// eslint-disable-next-line react/prop-types jest.mock('../enrollment/EnrollAction', () => function ({ enrollLabel, enrollmentType }) { return ( <> diff --git a/src/components/course/tests/EnrollModal.test.jsx b/src/components/course/tests/EnrollModal.test.jsx index 42739ac77e..b3833b7c1d 100644 --- a/src/components/course/tests/EnrollModal.test.jsx +++ b/src/components/course/tests/EnrollModal.test.jsx @@ -82,7 +82,9 @@ describe('<EnrollModal />', () => { <EnrollModalWrapper {...props} />, ); expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.title)).toBeInTheDocument(); - expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.body(props.userSubsidyApplicableToCourse, props.courseRunPrice))).toBeInTheDocument(); + expect(screen.getByText( + MODAL_TEXTS.HAS_ENTERPRISE_OFFER.body(props.userSubsidyApplicableToCourse, props.courseRunPrice), + )).toBeInTheDocument(); expect(screen.getByText(MODAL_TEXTS.HAS_ENTERPRISE_OFFER.button)).toBeInTheDocument(); }); diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx index d12ef5b3f8..c2634f66c9 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; @@ -23,6 +24,7 @@ describe('<MarkCompleteModal />', () => { }; it('handles confirm click with success', () => { + // eslint-disable-next-line no-import-assign service.markCourseAsCompleteRequest = jest.fn() .mockImplementation(() => Promise.resolve({ data: { @@ -46,6 +48,7 @@ describe('<MarkCompleteModal />', () => { }); it('handles confirm click with error', async () => { + // eslint-disable-next-line no-import-assign service.markCourseAsCompleteRequest = jest.fn() .mockImplementation(() => Promise.reject(new Error('test error'))); const wrapper = mount(( diff --git a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx index 43af361691..a9188826a4 100644 --- a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx +++ b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx @@ -48,59 +48,57 @@ function CouponCodesSummaryCard({ } return ( - <> - {programProgressPage ? ( - <> - <CouponCodesWarningModal - isCouponCodeWarningModalOpen={isCouponCodeWarningModalOpen} - onCouponCodeWarningModalClose={onCouponCodeWarningModalClose} - couponCodesCount={couponCodesCount} - /> + programProgressPage ? ( + <> + <CouponCodesWarningModal + isCouponCodeWarningModalOpen={isCouponCodeWarningModalOpen} + onCouponCodeWarningModalClose={onCouponCodeWarningModalClose} + couponCodesCount={couponCodesCount} + /> - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - <h3>{COUPON_CODES_SUMMARY_REMAINING_CODES}</h3> - {totalCoursesEligibleForCertificate > couponCodesCount && ( - <WarningFilled - className="ml-2" - onClick={() => { couponCodeWarningModalOpen(); }} - /> - )} - </div> - )} - cardClassNames={className} - > - <p className="m-0"> - <h3 className="float-left"> {couponCodesCount > 0 ? couponCodesCount : 0}</h3>{' '}<span className="ml-2">{COUPON_CODES_SUMMARY_DETAIL}</span> - </p> - </SidebarCard> - </> + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + <h3>{COUPON_CODES_SUMMARY_REMAINING_CODES}</h3> + {totalCoursesEligibleForCertificate > couponCodesCount && ( + <WarningFilled + className="ml-2" + onClick={() => { couponCodeWarningModalOpen(); }} + /> + )} + </div> + )} + cardClassNames={className} + > + <p className="m-0"> + <h3 className="float-left"> {couponCodesCount > 0 ? couponCodesCount : 0}</h3>{' '}<span className="ml-2">{COUPON_CODES_SUMMARY_DETAIL}</span> + </p> + </SidebarCard> + </> + ) + : ( + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + {`${COUPON_CODES_SUMMARY_TITLE}${couponCodesCount > 0 ? `: ${couponCodesCount}` : ''}`} + {badgeVariantAndLabel && ( + <Badge + variant={badgeVariantAndLabel.variant} + className="ml-2" + data-testid="subscription-status-badge" + > + {badgeVariantAndLabel.label} + </Badge> + )} + </div> + )} + cardClassNames={className} + > + <p className="m-0"> + {COUPON_CODES_SUMMARY_NOTICE} + </p> + </SidebarCard> ) - : ( - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - {`${COUPON_CODES_SUMMARY_TITLE}${couponCodesCount > 0 ? `: ${couponCodesCount}` : ''}`} - {badgeVariantAndLabel && ( - <Badge - variant={badgeVariantAndLabel.variant} - className="ml-2" - data-testid="subscription-status-badge" - > - {badgeVariantAndLabel.label} - </Badge> - )} - </div> - )} - cardClassNames={className} - > - <p className="m-0"> - {COUPON_CODES_SUMMARY_NOTICE} - </p> - </SidebarCard> - )} - </> ); } diff --git a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx index 7cd7c7303d..9bfed0ca9c 100644 --- a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx +++ b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx @@ -76,75 +76,73 @@ function SubscriptionSummaryCard({ } return ( - <> - {programProgressPage ? ( - <> - {subscriptionPlan && ( - <SubscriptionExpirationWarningModal - isSubscriptionExpiringWarningModalOpen={isSubscriptionExpiringWarningModalOpen} - onSubscriptionExpiringWarningModalClose={onSubscriptionExpiringWarningModalClose} - /> + programProgressPage ? ( + <> + {subscriptionPlan && ( + <SubscriptionExpirationWarningModal + isSubscriptionExpiringWarningModalOpen={isSubscriptionExpiringWarningModalOpen} + onSubscriptionExpiringWarningModalClose={onSubscriptionExpiringWarningModalClose} + /> + )} + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + <h3>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</h3> + <div> + <Badge + variant={badgeVariantAndLabel.variant} + className="ml-2" + data-testid="subscription-status-badge" + > + {badgeVariantAndLabel.label} + </Badge> + {(subscriptionPlan && courseEndDate > subscriptionPlan.expirationDate) && <WarningFilled data-testid="warning-icon" className="ml-2" onClick={() => { subscriptionExpiringWarningModalOpen(); }} />} + </div> + </div> )} - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - <h3>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</h3> - <div> - <Badge - variant={badgeVariantAndLabel.variant} - className="ml-2" - data-testid="subscription-status-badge" - > - {badgeVariantAndLabel.label} - </Badge> - {(subscriptionPlan && courseEndDate > subscriptionPlan.expirationDate) && <WarningFilled data-testid="warning-icon" className="ml-2" onClick={() => { subscriptionExpiringWarningModalOpen(); }} />} - </div> + cardClassNames={className} + > + { + subscriptionPlan ? ( + <> + {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED + ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} + {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> + </> + ) : <span>{LICENSE_REQUESTED_NOTICE}</span> + } + </SidebarCard> + </> + ) + : ( + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + <div>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</div> + <div> + <Badge + variant={badgeVariantAndLabel.variant} + className="ml-2" + data-testid="subscription-status-badge" + > + {badgeVariantAndLabel.label} + </Badge> </div> - )} - cardClassNames={className} - > - { - subscriptionPlan ? ( - <> - {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED - ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} - {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> - </> - ) : <span>{LICENSE_REQUESTED_NOTICE}</span> - } - </SidebarCard> - </> + </div> + )} + cardClassNames={className} + > + { + subscriptionPlan ? ( + <> + {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED + ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} + {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> + </> + ) : <span>{LICENSE_REQUESTED_NOTICE}</span> + } + </SidebarCard> ) - : ( - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - <div>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</div> - <div> - <Badge - variant={badgeVariantAndLabel.variant} - className="ml-2" - data-testid="subscription-status-badge" - > - {badgeVariantAndLabel.label} - </Badge> - </div> - </div> - )} - cardClassNames={className} - > - { - subscriptionPlan ? ( - <> - {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED - ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} - {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> - </> - ) : <span>{LICENSE_REQUESTED_NOTICE}</span> - } - </SidebarCard> - )} - </> ); } diff --git a/src/components/dashboard/sidebar/tests/SidebarCard.test.jsx b/src/components/dashboard/sidebar/tests/SidebarCard.test.jsx index c53a200254..350f4ca261 100644 --- a/src/components/dashboard/sidebar/tests/SidebarCard.test.jsx +++ b/src/components/dashboard/sidebar/tests/SidebarCard.test.jsx @@ -8,7 +8,7 @@ import SidebarCard from '../SidebarCard'; describe('<SidebarCard />', () => { const childrenText = 'Some text goes here'; const defaultProps = { - children: <>{childrenText}</>, + children: childrenText, buttonLink: 'http://bears.party', }; it('renders the card children', () => { diff --git a/src/components/enterprise-user-subsidy/coupons/data/reducer.js b/src/components/enterprise-user-subsidy/coupons/data/reducer.js index 381f4351ed..ac91034a4c 100644 --- a/src/components/enterprise-user-subsidy/coupons/data/reducer.js +++ b/src/components/enterprise-user-subsidy/coupons/data/reducer.js @@ -11,7 +11,7 @@ export const initialCouponCodesState = { error: null, }; -const couponCodesReducer = (state = initialCouponCodesState, action) => { +const couponCodesReducer = (state = initialCouponCodesState, action = {}) => { switch (action.type) { case FETCH_COUPON_CODES_REQUEST: return { diff --git a/src/components/notices-provider/index.js b/src/components/notices-provider/index.js index 436d09a981..7c154b573b 100644 --- a/src/components/notices-provider/index.js +++ b/src/components/notices-provider/index.js @@ -1 +1,2 @@ +// eslint-disable-next-line no-restricted-exports export { default } from './NoticesProvider'; diff --git a/src/components/pathway/data/utils.js b/src/components/pathway/data/utils.js index 32fb6f60a3..bd87e2b058 100644 --- a/src/components/pathway/data/utils.js +++ b/src/components/pathway/data/utils.js @@ -6,8 +6,8 @@ export default function coursesAndProgramsText(pathway) { let message; for (let i = 0; i < pathway.steps.length; i++) { - courseCount += pathway.steps[i].courses?.length; - programCount += pathway.steps[i].programs?.length; + courseCount += pathway.steps[i].courses ? pathway.steps[i].courses.length : 0; + programCount += pathway.steps[i].programs ? pathway.steps[i].programs.length : 0; } textCourse = courseCount === 1 ? 'course' : 'courses'; diff --git a/src/components/program/ProgramHeader.jsx b/src/components/program/ProgramHeader.jsx index fd833ea44d..0d31ca9210 100644 --- a/src/components/program/ProgramHeader.jsx +++ b/src/components/program/ProgramHeader.jsx @@ -67,30 +67,28 @@ function ProgramHeader() { } return ( - <> - {subjectSlug - ? ( - <Parallax - blur={0} - bgImage={backgroundImage} - bgImageAlt="" - strength={600} - > - <header className="program-header"> - <div className="container mw-lg program-header-container"> - <div className="header-breadcrumbs ml-2"> - <Breadcrumb - links={links} - activeLabel={prependProgramOrganizationsToTitle()} - /> - </div> - <h1 className="display-3">{marketingHook}</h1> + subjectSlug + ? ( + <Parallax + blur={0} + bgImage={backgroundImage} + bgImageAlt="" + strength={600} + > + <header className="program-header"> + <div className="container mw-lg program-header-container"> + <div className="header-breadcrumbs ml-2"> + <Breadcrumb + links={links} + activeLabel={prependProgramOrganizationsToTitle()} + /> </div> - </header> - </Parallax> - ) - : ''} - </> + <h1 className="display-3">{marketingHook}</h1> + </div> + </header> + </Parallax> + ) + : '' ); } diff --git a/src/components/program/tests/ProgramPage.test.jsx b/src/components/program/tests/ProgramPage.test.jsx index 2f2b330199..e9bda0c76e 100644 --- a/src/components/program/tests/ProgramPage.test.jsx +++ b/src/components/program/tests/ProgramPage.test.jsx @@ -9,7 +9,7 @@ import ProgramPage from '../ProgramPage'; import { useAllProgramData } from '../data/hooks'; import { PROGRAM_NOT_FOUND_MESSAGE, PROGRAM_NOT_FOUND_TITLE } from '../data/constants'; -const waitForAsync = () => new Promise(resolve => setImmediate(resolve)); +const waitForAsync = () => new Promise(resolve => { setImmediate(resolve); }); const programData = { title: 'Test Program Title', diff --git a/src/components/search/SearchCourseCard.jsx b/src/components/search/SearchCourseCard.jsx index 456d802c8d..2b548ca3e4 100644 --- a/src/components/search/SearchCourseCard.jsx +++ b/src/components/search/SearchCourseCard.jsx @@ -106,15 +106,13 @@ function SearchCourseCard({ hit, isLoading }) { <Card.Section className="py-3" > - <> - {course.partners?.length > 0 && ( - <p className="partner text-muted m-0"> - <Truncate lines={1} trimWhitespace> - {course.partners.map(partner => partner.name).join(', ')} - </Truncate> - </p> - )} - </> + {course.partners?.length > 0 && ( + <p className="partner text-muted m-0"> + <Truncate lines={1} trimWhitespace> + {course.partners.map(partner => partner.name).join(', ')} + </Truncate> + </p> + )} </Card.Section> <Card.Footer textElement={ diff --git a/src/components/search/SearchProgramCard.jsx b/src/components/search/SearchProgramCard.jsx index bef15becc7..00e6eee3b3 100644 --- a/src/components/search/SearchProgramCard.jsx +++ b/src/components/search/SearchProgramCard.jsx @@ -27,10 +27,10 @@ export const ProgramType = ({ type }) => { programTypeToDisplay = <>Master's Degree Program</>; break; case 'Professional Certificate': - programTypeToDisplay = <>{type}</>; + programTypeToDisplay = type; break; default: - programTypeToDisplay = <>{type}</>; + programTypeToDisplay = type; } return programTypeToDisplay; diff --git a/src/components/search/data/tests/hooks.test.jsx b/src/components/search/data/tests/hooks.test.jsx index cf01d57576..ffd2b912b6 100644 --- a/src/components/search/data/tests/hooks.test.jsx +++ b/src/components/search/data/tests/hooks.test.jsx @@ -118,6 +118,7 @@ describe('useSearchCatalogs', () => { }); }); +// eslint-disable-next-line react/prop-types const SearchWrapper = (value) => function ({ children }) { return <SearchContext.Provider value={value}>{children}</SearchContext.Provider>; }; diff --git a/src/components/skills-quiz/CourseCard.jsx b/src/components/skills-quiz/CourseCard.jsx index 49e8276c55..f31f77816d 100644 --- a/src/components/skills-quiz/CourseCard.jsx +++ b/src/components/skills-quiz/CourseCard.jsx @@ -88,30 +88,28 @@ function CourseCard({ /> <Card.Section className="py-1"> - <> - {course.skillNames?.length > 0 && ( - <div className="mb-2"> - {getCommonSkills( - course, - allSkills, - MAX_VISIBLE_SKILLS_COURSE, - ) - .map((skill) => ( - <Badge - key={skill} - className="skill-badge" - variant="light" - > - {shortenString( - skill, - SKILL_NAME_CUTOFF_LIMIT, - ELLIPSIS_STR, - )} - </Badge> - ))} - </div> - )} - </> + {course.skillNames?.length > 0 && ( + <div className="mb-2"> + {getCommonSkills( + course, + allSkills, + MAX_VISIBLE_SKILLS_COURSE, + ) + .map((skill) => ( + <Badge + key={skill} + className="skill-badge" + variant="light" + > + {shortenString( + skill, + SKILL_NAME_CUTOFF_LIMIT, + ELLIPSIS_STR, + )} + </Badge> + ))} + </div> + )} </Card.Section> </Card> ); @@ -141,7 +139,7 @@ CourseCard.propTypes = { cardImageUrl: PropTypes.string.isRequired, key: PropTypes.string.isRequired, partners: PropTypes.shape.isRequired, - skillNames: PropTypes.array.isRequired, + skillNames: PropTypes.shape([]).isRequired, }).isRequired, allSkills: PropTypes.shape.isRequired, isLoading: PropTypes.bool.isRequired, diff --git a/src/components/skills-quiz/JobCardComponent.jsx b/src/components/skills-quiz/JobCardComponent.jsx index 94a38af4e3..c2bbc6dbc9 100644 --- a/src/components/skills-quiz/JobCardComponent.jsx +++ b/src/components/skills-quiz/JobCardComponent.jsx @@ -9,6 +9,7 @@ import { NOT_AVAILABLE } from './constants'; function JobCardComponent({ jobs, isLoading }) { const { enterpriseConfig: { hideLaborMarketData } } = useContext(AppContext); return ( + // eslint-disable-next-line react/jsx-no-useless-fragment <> {jobs?.map(job => ( <div @@ -34,23 +35,21 @@ function JobCardComponent({ jobs, isLoading }) { {isLoading ? ( <Skeleton duration={0} data-testid="job-content-loading" /> ) : ( - <> - {!hideLaborMarketData - && ( - <div className="text-gray-700"> - <p className="m-0 medium-font"> - <span style={{ fontWeight: 700 }}>Median U.S. Salary: </span> - {job.job_postings?.length > 0 ? `$${ formatStringAsNumber(job.job_postings[0].median_salary)}` - : NOT_AVAILABLE } - </p> - <p className="m-0 medium-font"> - <span style={{ fontWeight: 700 }}>Job Postings: </span> - {job.job_postings?.length > 0 ? formatStringAsNumber(job.job_postings[0].unique_postings) - : NOT_AVAILABLE } - </p> - </div> - )} - </> + !hideLaborMarketData + && ( + <div className="text-gray-700"> + <p className="m-0 medium-font"> + <span style={{ fontWeight: 700 }}>Median U.S. Salary: </span> + {job.job_postings?.length > 0 ? `$${ formatStringAsNumber(job.job_postings[0].median_salary)}` + : NOT_AVAILABLE } + </p> + <p className="m-0 medium-font"> + <span style={{ fontWeight: 700 }}>Job Postings: </span> + {job.job_postings?.length > 0 ? formatStringAsNumber(job.job_postings[0].unique_postings) + : NOT_AVAILABLE } + </p> + </div> + ) )} </Card.Section> </Card> diff --git a/src/components/skills-quiz/SearchProgramCard.jsx b/src/components/skills-quiz/SearchProgramCard.jsx index abb12b1fbc..9c4b7b35ae 100644 --- a/src/components/skills-quiz/SearchProgramCard.jsx +++ b/src/components/skills-quiz/SearchProgramCard.jsx @@ -217,21 +217,19 @@ function SearchProgramCard({ index }) { /> <Card.Section className="py-1"> - <> - {program.skillNames?.length > 0 && ( - <div className="mb-2 d-inline"> - {getCommonSkills(program, selectedJobSkills, MAX_VISIBLE_SKILLS_PROGRAM).map((skill) => ( - <Badge - key={skill} - className="skill-badge" - variant="light" - > - { shortenString(skill, SKILL_NAME_CUTOFF_LIMIT, ELLIPSIS_STR) } - </Badge> - ))} - </div> - )} - </> + {program.skillNames?.length > 0 && ( + <div className="mb-2 d-inline"> + {getCommonSkills(program, selectedJobSkills, MAX_VISIBLE_SKILLS_PROGRAM).map((skill) => ( + <Badge + key={skill} + className="skill-badge" + variant="light" + > + { shortenString(skill, SKILL_NAME_CUTOFF_LIMIT, ELLIPSIS_STR) } + </Badge> + ))} + </div> + )} </Card.Section> <Card.Section className="py-1"> diff --git a/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx b/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx index cf9888e2a8..43d8f2c1e5 100644 --- a/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx +++ b/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx @@ -1,5 +1,6 @@ /* eslint-disable object-curly-newline */ /* eslint-disable react/prop-types */ +// eslint-disable-next-line import/no-import-module-exports import React from 'react'; const MockReactInstantSearch = jest.genMockFromModule( @@ -60,7 +61,7 @@ MockReactInstantSearch.connectRefinementList = Component => function (props) { }; MockReactInstantSearch.InstantSearch = function ({ children }) { - return <>{children}</>; + return children; }; MockReactInstantSearch.Configure = function () { return <div>CONFIGURED</div>; @@ -69,7 +70,7 @@ MockReactInstantSearch.Hits = function () { return <div>HIT</div>; }; MockReactInstantSearch.Index = function ({ children }) { - return <>{children}</>; + return children; }; // It is necessary to export this way, or tests not using the mock will fail diff --git a/src/components/skills-quiz/data/tests/hooks.test.jsx b/src/components/skills-quiz/data/tests/hooks.test.jsx index d2991da736..33d2ea27fb 100644 --- a/src/components/skills-quiz/data/tests/hooks.test.jsx +++ b/src/components/skills-quiz/data/tests/hooks.test.jsx @@ -6,6 +6,7 @@ import { useSelectedSkillsAndJobSkills } from '../hooks'; import { SkillsContext } from '../../SkillsContextProvider'; import { DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE, DROPDOWN_OPTION_GET_PROMOTED } from '../../constants'; +// eslint-disable-next-line react/prop-types const SearchWrapper = (searchContext, initialSkillsState) => function ({ children }) { return ( <SearchContext.Provider value={searchContext}> From d5dd932391a23db10a14d48a4ebbef382f6cef05 Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 4 Aug 2022 14:16:23 +0500 Subject: [PATCH 04/13] refactor: resolved eslint issues --- src/components/Toasts/ToastsProvider.jsx | 13 ++++++--- src/components/app/LoginRefresh.test.jsx | 16 ++++++----- src/components/course/data/hooks.jsx | 5 ++-- .../tests/LicenseRequestedAlert.test.jsx | 28 ++++++++++--------- .../tests/SubsidyRequestButton.test.jsx | 12 ++++++-- .../mark-complete-modal/MarkCompleteModal.jsx | 14 ++++++---- .../MoveToInProgressModal.jsx | 14 ++++++---- .../tests/BaseCourseCard.test.jsx | 1 + .../unenroll/UnenrollModal.test.jsx | 1 + .../tests/CourseEnrollments.test.jsx | 1 + .../tests/CourseSection.test.jsx | 1 + .../tests/EnterpriseBanner.test.jsx | 1 + .../enterprise-page/EnterprisePage.jsx | 1 + .../EnterpriseOffersBalanceAlert.test.jsx | 1 + .../tests/AutoActivateLicense.test.jsx | 1 + .../tests/UserSubsidy.test.jsx | 1 + .../tests/LicenseActivation.test.jsx | 1 + .../tests/LicenseActivationPage.test.jsx | 1 + .../pathway/tests/PathwayModal.test.jsx | 1 + .../pathway/tests/SearchPathwayCard.test.jsx | 1 + .../program-progress/ProgramProgressPage.jsx | 10 ++++--- src/components/search/SearchCourseCard.jsx | 1 + .../search/tests/SearchCourseCard.test.jsx | 1 + .../search/tests/SearchProgramCard.test.jsx | 1 + .../skills-quiz/SkillsContextProvider.jsx | 1 + .../tests/SkillsQuizStepper.test.jsx | 1 + 26 files changed, 85 insertions(+), 45 deletions(-) diff --git a/src/components/Toasts/ToastsProvider.jsx b/src/components/Toasts/ToastsProvider.jsx index 243dbd4fc5..c349c681df 100644 --- a/src/components/Toasts/ToastsProvider.jsx +++ b/src/components/Toasts/ToastsProvider.jsx @@ -1,4 +1,6 @@ -import React, { createContext, useState } from 'react'; +import React, { + createContext, useCallback, useState, useMemo, +} from 'react'; import PropTypes from 'prop-types'; export const ToastsContext = createContext(); @@ -16,17 +18,20 @@ function ToastsProvider({ children }) { ]); }; - const removeToast = (id) => { + const removeToast = useCallback((id) => { const index = toasts.findIndex(toast => toast.id === id); setToasts((prevToasts) => { const newToasts = [...prevToasts]; newToasts.splice(index, 1); return newToasts; }); - }; + }, [toasts]); return ( - <ToastsContext.Provider value={{ toasts, addToast, removeToast }}> + <ToastsContext.Provider value={ + useMemo(() => ({ toasts, addToast, removeToast }), [removeToast, toasts]) + } + > {children} </ToastsContext.Provider> ); diff --git a/src/components/app/LoginRefresh.test.jsx b/src/components/app/LoginRefresh.test.jsx index 3c07ed6435..eaf97c1396 100644 --- a/src/components/app/LoginRefresh.test.jsx +++ b/src/components/app/LoginRefresh.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import '@testing-library/jest-dom/extend-expect'; import { render, act } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; @@ -11,12 +11,14 @@ jest.mock('../../utils/common'); // eslint-disable-next-line react/prop-types function LoginRefreshWithContext({ roles = [] }) { return ( - <AppContext.Provider value={{ - authenticatedUser: { - userId: 1, - roles, - }, - }} + <AppContext.Provider value={ + useMemo(() => ({ + authenticatedUser: { + userId: 1, + roles, + }, + }), [roles]) + } > <LoginRefresh> <div>Hello!</div> diff --git a/src/components/course/data/hooks.jsx b/src/components/course/data/hooks.jsx index 99180504e8..0909128d36 100644 --- a/src/components/course/data/hooks.jsx +++ b/src/components/course/data/hooks.jsx @@ -345,16 +345,17 @@ export const useCourseEnrollmentUrl = ({ userSubsidyApplicableToCourse, }) => { const config = getConfig(); + // eslint-disable-next-line react-hooks/exhaustive-deps const baseQueryParams = new URLSearchParams(location.search); baseQueryParams.set(ENROLLMENT_FAILED_QUERY_PARAM, true); baseQueryParams.set(ENROLLMENT_COURSE_RUN_KEY_QUERY_PARAM, courseRunKey); - const baseEnrollmentOptions = { + const baseEnrollmentOptions = useMemo(() => ({ next: `${config.LMS_BASE_URL}/courses/${courseRunKey}/course`, // Redirect back to the same page with a failure query param failure_url: `${global.location.origin}${location.pathname}?${baseQueryParams.toString()}`, - }; + }), [baseQueryParams, config.LMS_BASE_URL, courseRunKey, location.pathname]); const enrollmentUrl = useMemo( () => { diff --git a/src/components/course/tests/LicenseRequestedAlert.test.jsx b/src/components/course/tests/LicenseRequestedAlert.test.jsx index c69e74a7e5..587edb66d1 100644 --- a/src/components/course/tests/LicenseRequestedAlert.test.jsx +++ b/src/components/course/tests/LicenseRequestedAlert.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { render, fireEvent, waitFor } from '@testing-library/react'; import Cookies from 'universal-cookie'; import LicenseRequestedAlert from '../LicenseRequestedAlert'; @@ -28,25 +28,27 @@ function LicenseRequestedAlertWrapper({ subscriptions = initialSubscriptions, licenseRequests = initialLicenseRequests, }) { return ( - <UserSubsidyContext.Provider value={{ - couponCodes: { - couponCodes: [], - couponCodesCount: 0, - }, - subscriptionLicense: {}, - customerAgreementConfig: { - subscriptions, - }, - }} + <UserSubsidyContext.Provider value={ + useMemo(() => ({ + couponCodes: { + couponCodes: [], + couponCodesCount: 0, + }, + subscriptionLicense: {}, + customerAgreementConfig: { + subscriptions, + }, + }), [subscriptions]) + } > <SubsidyRequestsContext.Provider value={ - { + useMemo(() => ({ subsidyRequestConfiguration: null, requestsBySubsidyType: { [SUBSIDY_TYPE.LICENSE]: licenseRequests, [SUBSIDY_TYPE.COUPON]: [], }, - } + }), [licenseRequests]) } > <CourseContext.Provider> diff --git a/src/components/course/tests/SubsidyRequestButton.test.jsx b/src/components/course/tests/SubsidyRequestButton.test.jsx index e66e231f0e..b24fa00319 100644 --- a/src/components/course/tests/SubsidyRequestButton.test.jsx +++ b/src/components/course/tests/SubsidyRequestButton.test.jsx @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, render, fireEvent, waitFor, } from '@testing-library/react'; @@ -59,8 +59,14 @@ function SubsidyRequestButtonWrapper({ }) { return ( <ToastsContext.Provider value={initialToastsState}> - <SubsidyRequestsContext.Provider value={{ ...initialSubsidyRequestsState, ...subsidyRequestsState }}> - <CourseContext.Provider value={{ ...initialCourseState, ...courseState }}> + <SubsidyRequestsContext.Provider value={ + useMemo(() => ({ ...initialSubsidyRequestsState, ...subsidyRequestsState }), [subsidyRequestsState]) + } + > + <CourseContext.Provider value={ + useMemo(() => ({ ...initialCourseState, ...courseState }), [courseState]) + } + > <SubsidyRequestButton enterpriseSlug={mockEnterpriseSlug} /> </CourseContext.Provider> </SubsidyRequestsContext.Provider> diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx index 81c7d40cfb..2b6193e5e9 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx @@ -1,4 +1,4 @@ -import React, { useState, useContext } from 'react'; +import React, { useState, useContext, useMemo } from 'react'; import PropTypes from 'prop-types'; import { Modal, StatefulButton } from '@edx/paragon'; import { AppContext } from '@edx/frontend-platform/react'; @@ -67,11 +67,13 @@ function MarkCompleteModal({ return ( <MarkCompleteModalContext.Provider - value={{ - courseTitle, - courseLink, - confirmError, - }} + value={ + useMemo(() => ({ + courseTitle, + courseLink, + confirmError, + }), [confirmError, courseLink, courseTitle]) + } > <Modal title="Save course for later" diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx index a9b7f6e3b2..9763f6eaf1 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx @@ -1,4 +1,4 @@ -import React, { useState, useContext } from 'react'; +import React, { useState, useContext, useMemo } from 'react'; import PropTypes from 'prop-types'; import { Modal, StatefulButton } from '@edx/paragon'; import { AppContext } from '@edx/frontend-platform/react'; @@ -58,11 +58,13 @@ function MoveToInProgressModal({ return ( <MoveToInProgressModalContext.Provider - value={{ - courseTitle, - courseLink, - confirmError, - }} + value={ + useMemo(() => ({ + courseTitle, + courseLink, + confirmError, + }), [confirmError, courseLink, courseTitle]) + } > <Modal title="Move course to "In Progress"" diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx index 40bdcc4601..60921d4cfc 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { mount } from 'enzyme'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx index 25237caaa9..b33dc7ec5f 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx @@ -40,6 +40,7 @@ function UnenrollModalWrapper({ ...props }) { return ( + // eslint-disable-next-line react/jsx-no-constructed-context-values <ToastsContext.Provider value={{ addToast: mockAddToast }}> <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> <UnenrollModal {...props} /> diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx index d4c1797e83..029045b525 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx index af46b61e4a..6eeec37cac 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx @@ -34,6 +34,7 @@ const TEST_ENTERPRISE_UUID = 'test-uuid'; function CourseSectionWrapper(props) { return ( + // eslint-disable-next-line react/jsx-no-constructed-context-values <AppContext.Provider value={{ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, diff --git a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx index 4de2d6f8bb..2000e8c5d2 100644 --- a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx +++ b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx @@ -21,6 +21,7 @@ describe('<EnterpriseBanner />', () => { render( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: 'slug', diff --git a/src/components/enterprise-page/EnterprisePage.jsx b/src/components/enterprise-page/EnterprisePage.jsx index 2061153555..48c9493f3a 100644 --- a/src/components/enterprise-page/EnterprisePage.jsx +++ b/src/components/enterprise-page/EnterprisePage.jsx @@ -56,6 +56,7 @@ export default function EnterprisePage({ children, useEnterpriseConfigCache }) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ authenticatedUser: user, config, diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx index 8c80b2eb9d..789581422c 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx @@ -17,6 +17,7 @@ function EnterpriseOffersBalanceAlertWrapper({ hasNoEnterpriseOffersBalance, }) { return ( + // eslint-disable-next-line react/jsx-no-constructed-context-values <AppContext.Provider value={{ enterpriseConfig, }} diff --git a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx index a4cb6fb4b8..bf4f75c1b5 100644 --- a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { Route } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 7fad446394..44787f31e6 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -63,6 +63,7 @@ function UserSubsidyWithAppContext({ }) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, diff --git a/src/components/license-activation/tests/LicenseActivation.test.jsx b/src/components/license-activation/tests/LicenseActivation.test.jsx index a61dfe6fab..d4690dc798 100644 --- a/src/components/license-activation/tests/LicenseActivation.test.jsx +++ b/src/components/license-activation/tests/LicenseActivation.test.jsx @@ -28,6 +28,7 @@ function LicenseActivationWithAppContext({ }) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, diff --git a/src/components/license-activation/tests/LicenseActivationPage.test.jsx b/src/components/license-activation/tests/LicenseActivationPage.test.jsx index be4381dcf4..2e74ab4f44 100644 --- a/src/components/license-activation/tests/LicenseActivationPage.test.jsx +++ b/src/components/license-activation/tests/LicenseActivationPage.test.jsx @@ -46,6 +46,7 @@ function LicenseActivationPageWithContext({ }) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, diff --git a/src/components/pathway/tests/PathwayModal.test.jsx b/src/components/pathway/tests/PathwayModal.test.jsx index e3b33c18df..185505c8bc 100644 --- a/src/components/pathway/tests/PathwayModal.test.jsx +++ b/src/components/pathway/tests/PathwayModal.test.jsx @@ -29,6 +29,7 @@ jest.mock('react-loading-skeleton', () => ({ function PathwayModalWithAppContext(props) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, }} diff --git a/src/components/pathway/tests/SearchPathwayCard.test.jsx b/src/components/pathway/tests/SearchPathwayCard.test.jsx index ae91dbf180..01fca358f8 100644 --- a/src/components/pathway/tests/SearchPathwayCard.test.jsx +++ b/src/components/pathway/tests/SearchPathwayCard.test.jsx @@ -31,6 +31,7 @@ jest.mock('@edx/frontend-enterprise-utils', () => { function SearchPathwayCardWithAppContext(props) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, }} diff --git a/src/components/program-progress/ProgramProgressPage.jsx b/src/components/program-progress/ProgramProgressPage.jsx index 2532e6a0cd..713301808f 100644 --- a/src/components/program-progress/ProgramProgressPage.jsx +++ b/src/components/program-progress/ProgramProgressPage.jsx @@ -37,9 +37,10 @@ function ProgramProgressPage() { [program], ); const courseData = program?.data?.courseData; - const totalCoursesInProgram = courseData?.notStarted?.length - + courseData?.completed?.length - + courseData?.inProgress?.length; + const notStartedCourses = courseData?.notStarted?.length; + const completedCourses = courseData?.completed?.length; + const inProgressCourses = courseData?.inProgress?.length; + const totalCoursesInProgram = notStartedCourses + completedCourses + inProgressCourses; const allCoursesCompleted = !courseData?.notStarted?.length && !courseData?.inProgress?.length && courseData?.completed?.length; @@ -54,7 +55,8 @@ function ProgramProgressPage() { enrolledCourses = [...enrolledCourses, ...courseData.inProgress]; } const coursesEnrolledInAuditMode = getCoursesEnrolledInAuditMode(enrolledCourses); - const totalCoursesEligibleForCertificate = totalCoursesNotStarted + coursesEnrolledInAuditMode?.length; + const totalCoursesEligibleForCertificate = totalCoursesNotStarted + + coursesEnrolledInAuditMode ? coursesEnrolledInAuditMode.length : 0; let courseEndDate; if (totalCoursesEligibleForCertificate) { const notStartedEnrollableCourseRuns = getNotStartedEnrollableCourseRuns(coursesNotStarted); diff --git a/src/components/search/SearchCourseCard.jsx b/src/components/search/SearchCourseCard.jsx index 2b548ca3e4..f5f8473493 100644 --- a/src/components/search/SearchCourseCard.jsx +++ b/src/components/search/SearchCourseCard.jsx @@ -14,6 +14,7 @@ import { getPrimaryPartnerLogo, isDefinedAndNotNull } from '../../utils/common'; function SearchCourseCard({ hit, isLoading }) { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); + // eslint-disable-next-line react-hooks/exhaustive-deps const course = hit ? camelCaseObject(hit) : {}; const linkToCourse = useMemo( diff --git a/src/components/search/tests/SearchCourseCard.test.jsx b/src/components/search/tests/SearchCourseCard.test.jsx index 0f3eebb867..fb84a15214 100644 --- a/src/components/search/tests/SearchCourseCard.test.jsx +++ b/src/components/search/tests/SearchCourseCard.test.jsx @@ -22,6 +22,7 @@ jest.mock('react-loading-skeleton', () => ({ function SearchCourseCardWithAppContext(props) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, }} diff --git a/src/components/search/tests/SearchProgramCard.test.jsx b/src/components/search/tests/SearchProgramCard.test.jsx index ce66a83d47..da2367e3f0 100644 --- a/src/components/search/tests/SearchProgramCard.test.jsx +++ b/src/components/search/tests/SearchProgramCard.test.jsx @@ -33,6 +33,7 @@ jest.mock('@edx/frontend-enterprise-utils', () => ({ function SearchProgramCardWithAppContext(props) { return ( <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, }} diff --git a/src/components/skills-quiz/SkillsContextProvider.jsx b/src/components/skills-quiz/SkillsContextProvider.jsx index 69d1443b51..eb8c05f4aa 100644 --- a/src/components/skills-quiz/SkillsContextProvider.jsx +++ b/src/components/skills-quiz/SkillsContextProvider.jsx @@ -21,6 +21,7 @@ const reducer = (state, action) => { export function SkillsContextProvider({ children, initialState = { goal: GOAL_DROPDOWN_DEFAULT_OPTION } }) { const [state, dispatch] = useReducer(reducer, initialState); + // eslint-disable-next-line react/jsx-no-constructed-context-values const value = { state, dispatch }; return ( diff --git a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx index 58acd25c27..012edd1d7e 100644 --- a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx +++ b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import '@testing-library/jest-dom/extend-expect'; import userEvent from '@testing-library/user-event'; From 1914ac9a9b11a2533eb3e4115c32073c152ed17b Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Tue, 16 Aug 2022 15:47:13 +0500 Subject: [PATCH 05/13] refactor: updated package-lock & resolved eslint after master branch merge --- package-lock.json | 502 +++++++++++------- .../ExecutiveEducation2UPage.jsx | 4 +- .../ExecutiveEducation2UPage.test.jsx | 6 +- .../ProgramProgressRedirect.jsx | 4 +- 4 files changed, 304 insertions(+), 212 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2024886dc..99575619a4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "11.0.2", + "@edx/frontend-build": "^12.0.3", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", @@ -522,9 +522,9 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "dependencies": { "@babel/types": "^7.18.6" @@ -647,6 +647,7 @@ "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true, "engines": { "node": ">=6.9.0" } @@ -2048,9 +2049,9 @@ } }, "node_modules/@babel/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", - "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.18.10", @@ -2325,15 +2326,15 @@ } }, "node_modules/@edx/frontend-enterprise-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-enterprise-utils/-/frontend-enterprise-utils-2.1.0.tgz", - "integrity": "sha512-lfGwpfOnNO7oe3p8YUXhjzA2kDYz0eYZk4eeY+SYib6oRXDE+nbZXd+IU9jhd/YyZnPAAAFRY3JYwNQ26Go+0Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@edx/frontend-enterprise-utils/-/frontend-enterprise-utils-2.0.3.tgz", + "integrity": "sha512-71yB6wEciHU9B57mEgZKT7PFjpwRQwlCjB048N2z9PIzKHrux8g5WIT3C/dtXC0+xGvz1z8aOf+tHahgHLWkkQ==", "dependencies": { "@testing-library/react": "11.2.6", "history": "4.10.1" }, "peerDependencies": { - "@edx/frontend-platform": "^1.9.6 || ^2.0.0", + "@edx/frontend-platform": "^1.9.6", "react": "^16.12.0", "react-dom": "^16.12.0", "react-router-dom": "^5.2.0" @@ -2403,7 +2404,7 @@ "node_modules/@edx/frontend-platform/node_modules/intl-messageformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", - "integrity": "sha512-I+tSvHnXqJYjDfNmY95tpFMj30yoakC6OXAo+wu/wTMy6tA/4Fd4mvV7Uzs4cqK/Ap29sHhwjcY+78a8eifcXw==", + "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=", "dependencies": { "intl-messageformat-parser": "1.4.0" } @@ -2411,7 +2412,7 @@ "node_modules/@edx/frontend-platform/node_modules/intl-messageformat-parser": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", - "integrity": "sha512-/XkqFHKezO6UcF4Av2/Lzfrez18R0jyw7kRFhSeB/YRakdrgSc9QfFZUwNJI9swMwMoNPygK1ArC5wdFSjPw+A==", + "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=", "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser" }, "node_modules/@edx/frontend-platform/node_modules/react-intl": { @@ -2532,6 +2533,71 @@ "react-dom": ">=16.6.0" } }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@formatjs/ecma402-abstract": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz", @@ -2542,65 +2608,65 @@ } }, "node_modules/@formatjs/fast-memoize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", - "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz", + "integrity": "sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", - "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.14.tgz", + "integrity": "sha512-M79MdUMLnfLK8eMrznUwke6afH9G/eOQeYvMUJ7uElXIL+//PyyjOzb42hAYfDAGYsAcKA2TsUo33Yuy2lE4AQ==", "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/icu-skeleton-parser": "1.3.6", + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/icu-skeleton-parser": "1.3.1", "tslib": "^2.1.0" } }, "node_modules/@formatjs/icu-messageformat-parser/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", - "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.1.tgz", + "integrity": "sha512-WdPNjhv9e7EfyrIVYk6hN6/mC9YF+PcfFViDI2kATwoi1uKHr+AkQCMoNrWyCDdUQ+Dn50mQOlrEkCBXoLrkPQ==", "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/ecma402-abstract": "1.10.0", "tslib": "^2.1.0" } }, "node_modules/@formatjs/icu-skeleton-parser/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, "node_modules/@formatjs/intl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz", - "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==", - "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/fast-memoize": "1.2.1", - "@formatjs/icu-messageformat-parser": "2.1.0", - "@formatjs/intl-displaynames": "5.4.3", - "@formatjs/intl-listformat": "6.5.3", - "intl-messageformat": "9.13.0", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.15.1.tgz", + "integrity": "sha512-p2Ngo7expCYxiKa3Ahg3Pkq60nkny49ve0O2AeXj/mSJ/eqw1Mk+Pgbwv/pDsSWbSWfELwh7B3CZT9kL8ZSZbA==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/fast-memoize": "1.2.0", + "@formatjs/icu-messageformat-parser": "2.0.14", + "@formatjs/intl-displaynames": "5.2.5", + "@formatjs/intl-listformat": "6.3.5", + "intl-messageformat": "9.9.5", "tslib": "^2.1.0" }, "peerDependencies": { - "typescript": "^4.5" + "typescript": "^4.4" }, "peerDependenciesMeta": { "typescript": { @@ -2609,47 +2675,47 @@ } }, "node_modules/@formatjs/intl-displaynames": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz", - "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.2.5.tgz", + "integrity": "sha512-iYlce/hG31ohJOwpv3yhOiEIwEBMqOt2kzA2BQTx1ra8ferBn4WlTxkouoDNiAKEBD1LFYZBIC25jsSJUJOEbg==", "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, "node_modules/@formatjs/intl-displaynames/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, "node_modules/@formatjs/intl-listformat": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz", - "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.3.5.tgz", + "integrity": "sha512-GtiMMx5RB/gID7ydGr+i1lRbGu728plTfT196X151cE2PYEqC05BEuHQFlE1rcUGC2+RfFqlvmipYcbOqJTQug==", "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, "node_modules/@formatjs/intl-listformat/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", - "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "version": "0.2.21", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.21.tgz", + "integrity": "sha512-JTJeLiNwexN4Gy0cMxoUPvJbKhXdnSuo5jPrDafEZpnDWlJ5VDYta8zUVVozO/pwzEmFVHEUpgiEDj+39L4oMg==", "dependencies": { "tslib": "^2.1.0" } @@ -2665,11 +2731,11 @@ } }, "node_modules/@formatjs/intl/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, @@ -12824,13 +12890,12 @@ "integrity": "sha512-Zv/u8wRpekckv0cLkwpVdABYST4hZNTDaX7reFetrYTJwxExR2VyTqQm+l0WmL0Qo8Mjb9Tf33qnfj0T7pjxdQ==" }, "node_modules/intl-messageformat": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", - "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "version": "9.9.5", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.5.tgz", + "integrity": "sha512-pdKpqhiD0P8yqblu1qetOOL8SnJ62SGdvxwYPvSmuYMN3BawEV5UnJuRcsIwwXYJAGYoICiOJl3gexuuH+RLXw==", "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/fast-memoize": "1.2.1", - "@formatjs/icu-messageformat-parser": "2.1.0", + "@formatjs/fast-memoize": "1.2.0", + "@formatjs/icu-messageformat-parser": "2.0.14", "tslib": "^2.1.0" } }, @@ -12844,15 +12909,6 @@ "@formatjs/intl-numberformat": "^5.5.2" } }, - "node_modules/intl-messageformat/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", - "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", - "tslib": "^2.1.0" - } - }, "node_modules/intl-relativeformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/intl-relativeformat/-/intl-relativeformat-2.2.0.tgz", @@ -12865,7 +12921,7 @@ "node_modules/intl-relativeformat/node_modules/intl-messageformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", - "integrity": "sha512-I+tSvHnXqJYjDfNmY95tpFMj30yoakC6OXAo+wu/wTMy6tA/4Fd4mvV7Uzs4cqK/Ap29sHhwjcY+78a8eifcXw==", + "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=", "dependencies": { "intl-messageformat-parser": "1.4.0" } @@ -12873,7 +12929,7 @@ "node_modules/intl-relativeformat/node_modules/intl-messageformat-parser": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", - "integrity": "sha512-/XkqFHKezO6UcF4Av2/Lzfrez18R0jyw7kRFhSeB/YRakdrgSc9QfFZUwNJI9swMwMoNPygK1ArC5wdFSjPw+A==", + "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=", "deprecated": "We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser" }, "node_modules/into-stream": { @@ -19072,24 +19128,24 @@ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" }, "node_modules/react-intl": { - "version": "5.25.1", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", - "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==", - "dependencies": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/icu-messageformat-parser": "2.1.0", - "@formatjs/intl": "2.2.1", - "@formatjs/intl-displaynames": "5.4.3", - "@formatjs/intl-listformat": "6.5.3", + "version": "5.21.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.21.1.tgz", + "integrity": "sha512-MwkSaNW64fuI7bSuKcL4fzQ7PJf8qvHydbr8LzAB5cefYetP3NPfNivF8kB1I0nFvgQPUIt11NlP/y0uWEqUKw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/icu-messageformat-parser": "2.0.14", + "@formatjs/intl": "1.15.1", + "@formatjs/intl-displaynames": "5.2.5", + "@formatjs/intl-listformat": "6.3.5", "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", + "@types/react": "16 || 17", "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "9.13.0", + "intl-messageformat": "9.9.5", "tslib": "^2.1.0" }, "peerDependencies": { - "react": "^16.3.0 || 17 || 18", - "typescript": "^4.5" + "react": "^16.3.0 || 17", + "typescript": "^4.4" }, "peerDependenciesMeta": { "typescript": { @@ -19098,11 +19154,11 @@ } }, "node_modules/react-intl/node_modules/@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } }, @@ -24060,9 +24116,9 @@ } }, "@babel/helper-module-imports": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", - "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dev": true, "requires": { "@babel/types": "^7.18.6" @@ -24154,7 +24210,8 @@ "@babel/helper-string-parser": { "version": "7.18.10", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==" + "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "dev": true }, "@babel/helper-validator-identifier": { "version": "7.18.6", @@ -25099,9 +25156,9 @@ } }, "@babel/types": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", - "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", + "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", "dev": true, "requires": { "@babel/helper-string-parser": "^7.18.10", @@ -25307,9 +25364,9 @@ } }, "@edx/frontend-enterprise-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@edx/frontend-enterprise-utils/-/frontend-enterprise-utils-2.1.0.tgz", - "integrity": "sha512-lfGwpfOnNO7oe3p8YUXhjzA2kDYz0eYZk4eeY+SYib6oRXDE+nbZXd+IU9jhd/YyZnPAAAFRY3JYwNQ26Go+0Q==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@edx/frontend-enterprise-utils/-/frontend-enterprise-utils-2.0.3.tgz", + "integrity": "sha512-71yB6wEciHU9B57mEgZKT7PFjpwRQwlCjB048N2z9PIzKHrux8g5WIT3C/dtXC0+xGvz1z8aOf+tHahgHLWkkQ==", "requires": { "@testing-library/react": "11.2.6", "history": "4.10.1" @@ -25361,7 +25418,7 @@ "intl-messageformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", - "integrity": "sha512-I+tSvHnXqJYjDfNmY95tpFMj30yoakC6OXAo+wu/wTMy6tA/4Fd4mvV7Uzs4cqK/Ap29sHhwjcY+78a8eifcXw==", + "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=", "requires": { "intl-messageformat-parser": "1.4.0" } @@ -25369,7 +25426,7 @@ "intl-messageformat-parser": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", - "integrity": "sha512-/XkqFHKezO6UcF4Av2/Lzfrez18R0jyw7kRFhSeB/YRakdrgSc9QfFZUwNJI9swMwMoNPygK1ArC5wdFSjPw+A==" + "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=" }, "react-intl": { "version": "2.9.0", @@ -25473,6 +25530,55 @@ } } }, + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, "@formatjs/ecma402-abstract": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.4.0.tgz", @@ -25483,125 +25589,125 @@ } }, "@formatjs/fast-memoize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz", - "integrity": "sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz", + "integrity": "sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w==", "requires": { "tslib": "^2.1.0" } }, "@formatjs/icu-messageformat-parser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz", - "integrity": "sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.14.tgz", + "integrity": "sha512-M79MdUMLnfLK8eMrznUwke6afH9G/eOQeYvMUJ7uElXIL+//PyyjOzb42hAYfDAGYsAcKA2TsUo33Yuy2lE4AQ==", "requires": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/icu-skeleton-parser": "1.3.6", + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/icu-skeleton-parser": "1.3.1", "tslib": "^2.1.0" }, "dependencies": { "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } } } }, "@formatjs/icu-skeleton-parser": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz", - "integrity": "sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.1.tgz", + "integrity": "sha512-WdPNjhv9e7EfyrIVYk6hN6/mC9YF+PcfFViDI2kATwoi1uKHr+AkQCMoNrWyCDdUQ+Dn50mQOlrEkCBXoLrkPQ==", "requires": { - "@formatjs/ecma402-abstract": "1.11.4", + "@formatjs/ecma402-abstract": "1.10.0", "tslib": "^2.1.0" }, "dependencies": { "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } } } }, "@formatjs/intl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.2.1.tgz", - "integrity": "sha512-vgvyUOOrzqVaOFYzTf2d3+ToSkH2JpR7x/4U1RyoHQLmvEaTQvXJ7A2qm1Iy3brGNXC/+/7bUlc3lpH+h/LOJA==", - "requires": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/fast-memoize": "1.2.1", - "@formatjs/icu-messageformat-parser": "2.1.0", - "@formatjs/intl-displaynames": "5.4.3", - "@formatjs/intl-listformat": "6.5.3", - "intl-messageformat": "9.13.0", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.15.1.tgz", + "integrity": "sha512-p2Ngo7expCYxiKa3Ahg3Pkq60nkny49ve0O2AeXj/mSJ/eqw1Mk+Pgbwv/pDsSWbSWfELwh7B3CZT9kL8ZSZbA==", + "requires": { + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/fast-memoize": "1.2.0", + "@formatjs/icu-messageformat-parser": "2.0.14", + "@formatjs/intl-displaynames": "5.2.5", + "@formatjs/intl-listformat": "6.3.5", + "intl-messageformat": "9.9.5", "tslib": "^2.1.0" }, "dependencies": { "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } } } }, "@formatjs/intl-displaynames": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.4.3.tgz", - "integrity": "sha512-4r12A3mS5dp5hnSaQCWBuBNfi9Amgx2dzhU4lTFfhSxgb5DOAiAbMpg6+7gpWZgl4ahsj3l2r/iHIjdmdXOE2Q==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-5.2.5.tgz", + "integrity": "sha512-iYlce/hG31ohJOwpv3yhOiEIwEBMqOt2kzA2BQTx1ra8ferBn4WlTxkouoDNiAKEBD1LFYZBIC25jsSJUJOEbg==", "requires": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" }, "dependencies": { "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } } } }, "@formatjs/intl-listformat": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.5.3.tgz", - "integrity": "sha512-ozpz515F/+3CU+HnLi5DYPsLa6JoCfBggBSSg/8nOB5LYSFW9+ZgNQJxJ8tdhKYeODT+4qVHX27EeJLoxLGLNg==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-6.3.5.tgz", + "integrity": "sha512-GtiMMx5RB/gID7ydGr+i1lRbGu728plTfT196X151cE2PYEqC05BEuHQFlE1rcUGC2+RfFqlvmipYcbOqJTQug==", "requires": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" }, "dependencies": { "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } } } }, "@formatjs/intl-localematcher": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz", - "integrity": "sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==", + "version": "0.2.21", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.21.tgz", + "integrity": "sha512-JTJeLiNwexN4Gy0cMxoUPvJbKhXdnSuo5jPrDafEZpnDWlJ5VDYta8zUVVozO/pwzEmFVHEUpgiEDj+39L4oMg==", "requires": { "tslib": "^2.1.0" } @@ -33440,25 +33546,13 @@ "integrity": "sha512-Zv/u8wRpekckv0cLkwpVdABYST4hZNTDaX7reFetrYTJwxExR2VyTqQm+l0WmL0Qo8Mjb9Tf33qnfj0T7pjxdQ==" }, "intl-messageformat": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz", - "integrity": "sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==", + "version": "9.9.5", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.5.tgz", + "integrity": "sha512-pdKpqhiD0P8yqblu1qetOOL8SnJ62SGdvxwYPvSmuYMN3BawEV5UnJuRcsIwwXYJAGYoICiOJl3gexuuH+RLXw==", "requires": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/fast-memoize": "1.2.1", - "@formatjs/icu-messageformat-parser": "2.1.0", + "@formatjs/fast-memoize": "1.2.0", + "@formatjs/icu-messageformat-parser": "2.0.14", "tslib": "^2.1.0" - }, - "dependencies": { - "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", - "requires": { - "@formatjs/intl-localematcher": "0.2.25", - "tslib": "^2.1.0" - } - } } }, "intl-messageformat-parser": { @@ -33481,7 +33575,7 @@ "intl-messageformat": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-2.2.0.tgz", - "integrity": "sha512-I+tSvHnXqJYjDfNmY95tpFMj30yoakC6OXAo+wu/wTMy6tA/4Fd4mvV7Uzs4cqK/Ap29sHhwjcY+78a8eifcXw==", + "integrity": "sha1-NFvNRt5jC3aDMwwuUhd/9eq0hPw=", "requires": { "intl-messageformat-parser": "1.4.0" } @@ -33489,7 +33583,7 @@ "intl-messageformat-parser": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.4.0.tgz", - "integrity": "sha512-/XkqFHKezO6UcF4Av2/Lzfrez18R0jyw7kRFhSeB/YRakdrgSc9QfFZUwNJI9swMwMoNPygK1ArC5wdFSjPw+A==" + "integrity": "sha1-tD1FqXRoytvkQzHXS7Ho3qRPwHU=" } } }, @@ -38123,28 +38217,28 @@ } }, "react-intl": { - "version": "5.25.1", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.25.1.tgz", - "integrity": "sha512-pkjdQDvpJROoXLMltkP/5mZb0/XqrqLoPGKUCfbdkP8m6U9xbK40K51Wu+a4aQqTEvEK5lHBk0fWzUV72SJ3Hg==", - "requires": { - "@formatjs/ecma402-abstract": "1.11.4", - "@formatjs/icu-messageformat-parser": "2.1.0", - "@formatjs/intl": "2.2.1", - "@formatjs/intl-displaynames": "5.4.3", - "@formatjs/intl-listformat": "6.5.3", + "version": "5.21.1", + "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.21.1.tgz", + "integrity": "sha512-MwkSaNW64fuI7bSuKcL4fzQ7PJf8qvHydbr8LzAB5cefYetP3NPfNivF8kB1I0nFvgQPUIt11NlP/y0uWEqUKw==", + "requires": { + "@formatjs/ecma402-abstract": "1.10.0", + "@formatjs/icu-messageformat-parser": "2.0.14", + "@formatjs/intl": "1.15.1", + "@formatjs/intl-displaynames": "5.2.5", + "@formatjs/intl-listformat": "6.3.5", "@types/hoist-non-react-statics": "^3.3.1", - "@types/react": "16 || 17 || 18", + "@types/react": "16 || 17", "hoist-non-react-statics": "^3.3.2", - "intl-messageformat": "9.13.0", + "intl-messageformat": "9.9.5", "tslib": "^2.1.0" }, "dependencies": { "@formatjs/ecma402-abstract": { - "version": "1.11.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz", - "integrity": "sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", + "integrity": "sha512-WNkcUHC6xw12rWY87TUw6KXzb1LnOooYBLLqtyn1kW2j197rcwpqmUOJMBED56YcLzaJPfVw1L2ShiDhL5pVnQ==", "requires": { - "@formatjs/intl-localematcher": "0.2.25", + "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" } } diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx index 2a9bf1269c..943f464ecf 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx @@ -58,9 +58,7 @@ function ExecutiveEducation2UPage() { <h2> {isLoading ? ( <Skeleton containerTestId="loading-skeleton-page-title" /> - ) : ( - <>{pageTitle}</> - )} + ) : (pageTitle)} </h2> <p> {(isLoading || !contentMetadata) ? ( diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx index 101c874a3b..a325aa6580 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx @@ -16,9 +16,9 @@ jest.mock('@edx/frontend-platform/logging', () => ({ ...jest.requireActual('@edx/frontend-platform/logging'), logError: jest.fn(), })); -jest.mock('./UserEnrollmentForm', () => () => ( - <div data-testid="user-enrollment-form-component" /> -)); +jest.mock('./UserEnrollmentForm', () => function () { + return <div data-testid="user-enrollment-form-component" />; +}); const enterpriseSlug = 'test-enterprise-slug'; const initialAppContextValue = { enterpriseConfig: { diff --git a/src/components/program-progress/ProgramProgressRedirect.jsx b/src/components/program-progress/ProgramProgressRedirect.jsx index 2673263ff7..3db2ed71b3 100644 --- a/src/components/program-progress/ProgramProgressRedirect.jsx +++ b/src/components/program-progress/ProgramProgressRedirect.jsx @@ -2,11 +2,11 @@ import React, { useContext } from 'react'; import { Redirect, useParams } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; -const ProgramProgressRedirect = () => { +function ProgramProgressRedirect() { const { enterpriseConfig } = useContext(AppContext); const { programUUID } = useParams(); return <Redirect to={`/${enterpriseConfig.slug}/program/${programUUID}/progress`} />; -}; +} export default ProgramProgressRedirect; From 67bc7d6b10b107e47321b5f4abf593a33616a264 Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:05:46 +0500 Subject: [PATCH 06/13] refactor: updated files to ignore jsx-no-useless-fragment rule --- src/components/course/EnrollModal.jsx | 7 +- .../sidebar/CouponCodesSummaryCard.jsx | 101 +++++++------- .../sidebar/SubscriptionSummaryCard.jsx | 131 +++++++++--------- .../ExecutiveEducation2UPage.jsx | 5 +- src/components/program/ProgramHeader.jsx | 45 +++--- src/components/search/SearchCourseCard.jsx | 17 ++- src/components/search/SearchProgramCard.jsx | 5 +- src/components/skills-quiz/CourseCard.jsx | 47 ++++--- .../skills-quiz/JobCardComponent.jsx | 33 +++-- .../skills-quiz/SearchProgramCard.jsx | 29 ++-- .../__mocks__/react-instantsearch-dom.jsx | 5 +- 11 files changed, 227 insertions(+), 198 deletions(-) diff --git a/src/components/course/EnrollModal.jsx b/src/components/course/EnrollModal.jsx index 5429e7f2cd..f6d23db638 100644 --- a/src/components/course/EnrollModal.jsx +++ b/src/components/course/EnrollModal.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-useless-fragment */ import React, { useContext, useState } from 'react'; import PropTypes from 'prop-types'; import { Modal } from '@edx/paragon'; @@ -116,8 +117,10 @@ function EnrollModal({ href={enrollmentUrl} onClick={handleEnroll} > - {isLoading && <FontAwesomeIcon icon={faSpinner} alt="loading" className="fa-spin mr-2" />} - {buttonText} + <> + {isLoading && <FontAwesomeIcon icon={faSpinner} alt="loading" className="fa-spin mr-2" />} + {buttonText} + </> </a>, ]} onClose={() => setIsModalOpen(false)} diff --git a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx index a9188826a4..02cb36ef9e 100644 --- a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx +++ b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx @@ -48,57 +48,60 @@ function CouponCodesSummaryCard({ } return ( - programProgressPage ? ( - <> - <CouponCodesWarningModal - isCouponCodeWarningModalOpen={isCouponCodeWarningModalOpen} - onCouponCodeWarningModalClose={onCouponCodeWarningModalClose} - couponCodesCount={couponCodesCount} - /> + // eslint-disable-next-line react/jsx-no-useless-fragment + <> + {programProgressPage ? ( + <> + <CouponCodesWarningModal + isCouponCodeWarningModalOpen={isCouponCodeWarningModalOpen} + onCouponCodeWarningModalClose={onCouponCodeWarningModalClose} + couponCodesCount={couponCodesCount} + /> - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - <h3>{COUPON_CODES_SUMMARY_REMAINING_CODES}</h3> - {totalCoursesEligibleForCertificate > couponCodesCount && ( - <WarningFilled - className="ml-2" - onClick={() => { couponCodeWarningModalOpen(); }} - /> - )} - </div> - )} - cardClassNames={className} - > - <p className="m-0"> - <h3 className="float-left"> {couponCodesCount > 0 ? couponCodesCount : 0}</h3>{' '}<span className="ml-2">{COUPON_CODES_SUMMARY_DETAIL}</span> - </p> - </SidebarCard> - </> - ) - : ( - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - {`${COUPON_CODES_SUMMARY_TITLE}${couponCodesCount > 0 ? `: ${couponCodesCount}` : ''}`} - {badgeVariantAndLabel && ( - <Badge - variant={badgeVariantAndLabel.variant} - className="ml-2" - data-testid="subscription-status-badge" - > - {badgeVariantAndLabel.label} - </Badge> - )} - </div> - )} - cardClassNames={className} - > - <p className="m-0"> - {COUPON_CODES_SUMMARY_NOTICE} - </p> - </SidebarCard> + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + <h3>{COUPON_CODES_SUMMARY_REMAINING_CODES}</h3> + {totalCoursesEligibleForCertificate > couponCodesCount && ( + <WarningFilled + className="ml-2" + onClick={() => { couponCodeWarningModalOpen(); }} + /> + )} + </div> + )} + cardClassNames={className} + > + <p className="m-0"> + <h3 className="float-left"> {couponCodesCount > 0 ? couponCodesCount : 0}</h3>{' '}<span className="ml-2">{COUPON_CODES_SUMMARY_DETAIL}</span> + </p> + </SidebarCard> + </> ) + : ( + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + {`${COUPON_CODES_SUMMARY_TITLE}${couponCodesCount > 0 ? `: ${couponCodesCount}` : ''}`} + {badgeVariantAndLabel && ( + <Badge + variant={badgeVariantAndLabel.variant} + className="ml-2" + data-testid="subscription-status-badge" + > + {badgeVariantAndLabel.label} + </Badge> + )} + </div> + )} + cardClassNames={className} + > + <p className="m-0"> + {COUPON_CODES_SUMMARY_NOTICE} + </p> + </SidebarCard> + )} + </> ); } diff --git a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx index 9bfed0ca9c..f11af04f53 100644 --- a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx +++ b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx @@ -76,73 +76,76 @@ function SubscriptionSummaryCard({ } return ( - programProgressPage ? ( - <> - {subscriptionPlan && ( - <SubscriptionExpirationWarningModal - isSubscriptionExpiringWarningModalOpen={isSubscriptionExpiringWarningModalOpen} - onSubscriptionExpiringWarningModalClose={onSubscriptionExpiringWarningModalClose} - /> - )} - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - <h3>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</h3> - <div> - <Badge - variant={badgeVariantAndLabel.variant} - className="ml-2" - data-testid="subscription-status-badge" - > - {badgeVariantAndLabel.label} - </Badge> - {(subscriptionPlan && courseEndDate > subscriptionPlan.expirationDate) && <WarningFilled data-testid="warning-icon" className="ml-2" onClick={() => { subscriptionExpiringWarningModalOpen(); }} />} - </div> - </div> + // eslint-disable-next-line react/jsx-no-useless-fragment + <> + {programProgressPage ? ( + <> + {subscriptionPlan && ( + <SubscriptionExpirationWarningModal + isSubscriptionExpiringWarningModalOpen={isSubscriptionExpiringWarningModalOpen} + onSubscriptionExpiringWarningModalClose={onSubscriptionExpiringWarningModalClose} + /> )} - cardClassNames={className} - > - { - subscriptionPlan ? ( - <> - {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED - ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} - {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> - </> - ) : <span>{LICENSE_REQUESTED_NOTICE}</span> - } - </SidebarCard> - </> - ) - : ( - <SidebarCard - title={( - <div className="d-flex align-items-start justify-content-between"> - <div>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</div> - <div> - <Badge - variant={badgeVariantAndLabel.variant} - className="ml-2" - data-testid="subscription-status-badge" - > - {badgeVariantAndLabel.label} - </Badge> + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + <h3>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</h3> + <div> + <Badge + variant={badgeVariantAndLabel.variant} + className="ml-2" + data-testid="subscription-status-badge" + > + {badgeVariantAndLabel.label} + </Badge> + {(subscriptionPlan && courseEndDate > subscriptionPlan.expirationDate) && <WarningFilled data-testid="warning-icon" className="ml-2" onClick={() => { subscriptionExpiringWarningModalOpen(); }} />} + </div> </div> - </div> - )} - cardClassNames={className} - > - { - subscriptionPlan ? ( - <> - {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED - ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} - {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> - </> - ) : <span>{LICENSE_REQUESTED_NOTICE}</span> - } - </SidebarCard> + )} + cardClassNames={className} + > + { + subscriptionPlan ? ( + <> + {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED + ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} + {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> + </> + ) : <span>{LICENSE_REQUESTED_NOTICE}</span> + } + </SidebarCard> + </> ) + : ( + <SidebarCard + title={( + <div className="d-flex align-items-start justify-content-between"> + <div>{SUBSCRIPTION_SUMMARY_CARD_TITLE}</div> + <div> + <Badge + variant={badgeVariantAndLabel.variant} + className="ml-2" + data-testid="subscription-status-badge" + > + {badgeVariantAndLabel.label} + </Badge> + </div> + </div> + )} + cardClassNames={className} + > + { + subscriptionPlan ? ( + <> + {subscriptionPlan.daysUntilExpiration > SUBSCRIPTION_EXPIRED + ? SUBSCRIPTION_ACTIVE_DATE_PREFIX : SUBSCRIPTION_EXPIRED_DATE_PREFIX} + {' '}<span className="font-weight-bold">{moment(subscriptionPlan.expirationDate).format('MMMM Do, YYYY')}</span> + </> + ) : <span>{LICENSE_REQUESTED_NOTICE}</span> + } + </SidebarCard> + )} + </> ); } diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx index 943f464ecf..4438a3f59d 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx @@ -58,7 +58,10 @@ function ExecutiveEducation2UPage() { <h2> {isLoading ? ( <Skeleton containerTestId="loading-skeleton-page-title" /> - ) : (pageTitle)} + ) : ( + // eslint-disable-next-line react/jsx-no-useless-fragment + <>{pageTitle}</> + )} </h2> <p> {(isLoading || !contentMetadata) ? ( diff --git a/src/components/program/ProgramHeader.jsx b/src/components/program/ProgramHeader.jsx index 0d31ca9210..f53c081419 100644 --- a/src/components/program/ProgramHeader.jsx +++ b/src/components/program/ProgramHeader.jsx @@ -67,28 +67,31 @@ function ProgramHeader() { } return ( - subjectSlug - ? ( - <Parallax - blur={0} - bgImage={backgroundImage} - bgImageAlt="" - strength={600} - > - <header className="program-header"> - <div className="container mw-lg program-header-container"> - <div className="header-breadcrumbs ml-2"> - <Breadcrumb - links={links} - activeLabel={prependProgramOrganizationsToTitle()} - /> + // eslint-disable-next-line react/jsx-no-useless-fragment + <> + {subjectSlug + ? ( + <Parallax + blur={0} + bgImage={backgroundImage} + bgImageAlt="" + strength={600} + > + <header className="program-header"> + <div className="container mw-lg program-header-container"> + <div className="header-breadcrumbs ml-2"> + <Breadcrumb + links={links} + activeLabel={prependProgramOrganizationsToTitle()} + /> + </div> + <h1 className="display-3">{marketingHook}</h1> </div> - <h1 className="display-3">{marketingHook}</h1> - </div> - </header> - </Parallax> - ) - : '' + </header> + </Parallax> + ) + : ''} + </> ); } diff --git a/src/components/search/SearchCourseCard.jsx b/src/components/search/SearchCourseCard.jsx index f5f8473493..f151db0744 100644 --- a/src/components/search/SearchCourseCard.jsx +++ b/src/components/search/SearchCourseCard.jsx @@ -107,13 +107,16 @@ function SearchCourseCard({ hit, isLoading }) { <Card.Section className="py-3" > - {course.partners?.length > 0 && ( - <p className="partner text-muted m-0"> - <Truncate lines={1} trimWhitespace> - {course.partners.map(partner => partner.name).join(', ')} - </Truncate> - </p> - )} + {/* eslint-disable-next-line react/jsx-no-useless-fragment */} + <> + {course.partners?.length > 0 && ( + <p className="partner text-muted m-0"> + <Truncate lines={1} trimWhitespace> + {course.partners.map(partner => partner.name).join(', ')} + </Truncate> + </p> + )} + </> </Card.Section> <Card.Footer textElement={ diff --git a/src/components/search/SearchProgramCard.jsx b/src/components/search/SearchProgramCard.jsx index 00e6eee3b3..4ebe5c1a8c 100644 --- a/src/components/search/SearchProgramCard.jsx +++ b/src/components/search/SearchProgramCard.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-useless-fragment */ import React, { useContext, useMemo } from 'react'; import PropTypes from 'prop-types'; import Truncate from 'react-truncate'; @@ -27,10 +28,10 @@ export const ProgramType = ({ type }) => { programTypeToDisplay = <>Master's Degree Program</>; break; case 'Professional Certificate': - programTypeToDisplay = type; + programTypeToDisplay = <>{type}</>; break; default: - programTypeToDisplay = type; + programTypeToDisplay = <>{type}</>; } return programTypeToDisplay; diff --git a/src/components/skills-quiz/CourseCard.jsx b/src/components/skills-quiz/CourseCard.jsx index f31f77816d..4cf02eeb34 100644 --- a/src/components/skills-quiz/CourseCard.jsx +++ b/src/components/skills-quiz/CourseCard.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-useless-fragment */ import React, { useContext, useMemo } from 'react'; import { Badge, Card } from '@edx/paragon'; import { Link } from 'react-router-dom'; @@ -88,28 +89,30 @@ function CourseCard({ /> <Card.Section className="py-1"> - {course.skillNames?.length > 0 && ( - <div className="mb-2"> - {getCommonSkills( - course, - allSkills, - MAX_VISIBLE_SKILLS_COURSE, - ) - .map((skill) => ( - <Badge - key={skill} - className="skill-badge" - variant="light" - > - {shortenString( - skill, - SKILL_NAME_CUTOFF_LIMIT, - ELLIPSIS_STR, - )} - </Badge> - ))} - </div> - )} + <> + {course.skillNames?.length > 0 && ( + <div className="mb-2"> + {getCommonSkills( + course, + allSkills, + MAX_VISIBLE_SKILLS_COURSE, + ) + .map((skill) => ( + <Badge + key={skill} + className="skill-badge" + variant="light" + > + {shortenString( + skill, + SKILL_NAME_CUTOFF_LIMIT, + ELLIPSIS_STR, + )} + </Badge> + ))} + </div> + )} + </> </Card.Section> </Card> ); diff --git a/src/components/skills-quiz/JobCardComponent.jsx b/src/components/skills-quiz/JobCardComponent.jsx index c2bbc6dbc9..4db0e6fda5 100644 --- a/src/components/skills-quiz/JobCardComponent.jsx +++ b/src/components/skills-quiz/JobCardComponent.jsx @@ -35,21 +35,24 @@ function JobCardComponent({ jobs, isLoading }) { {isLoading ? ( <Skeleton duration={0} data-testid="job-content-loading" /> ) : ( - !hideLaborMarketData - && ( - <div className="text-gray-700"> - <p className="m-0 medium-font"> - <span style={{ fontWeight: 700 }}>Median U.S. Salary: </span> - {job.job_postings?.length > 0 ? `$${ formatStringAsNumber(job.job_postings[0].median_salary)}` - : NOT_AVAILABLE } - </p> - <p className="m-0 medium-font"> - <span style={{ fontWeight: 700 }}>Job Postings: </span> - {job.job_postings?.length > 0 ? formatStringAsNumber(job.job_postings[0].unique_postings) - : NOT_AVAILABLE } - </p> - </div> - ) + // eslint-disable-next-line react/jsx-no-useless-fragment + <> + {!hideLaborMarketData + && ( + <div className="text-gray-700"> + <p className="m-0 medium-font"> + <span style={{ fontWeight: 700 }}>Median U.S. Salary: </span> + {job.job_postings?.length > 0 ? `$${ formatStringAsNumber(job.job_postings[0].median_salary)}` + : NOT_AVAILABLE } + </p> + <p className="m-0 medium-font"> + <span style={{ fontWeight: 700 }}>Job Postings: </span> + {job.job_postings?.length > 0 ? formatStringAsNumber(job.job_postings[0].unique_postings) + : NOT_AVAILABLE } + </p> + </div> + )} + </> )} </Card.Section> </Card> diff --git a/src/components/skills-quiz/SearchProgramCard.jsx b/src/components/skills-quiz/SearchProgramCard.jsx index 9c4b7b35ae..69ae036a50 100644 --- a/src/components/skills-quiz/SearchProgramCard.jsx +++ b/src/components/skills-quiz/SearchProgramCard.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-useless-fragment */ import React, { useContext, useMemo, useState, useEffect, } from 'react'; @@ -217,19 +218,21 @@ function SearchProgramCard({ index }) { /> <Card.Section className="py-1"> - {program.skillNames?.length > 0 && ( - <div className="mb-2 d-inline"> - {getCommonSkills(program, selectedJobSkills, MAX_VISIBLE_SKILLS_PROGRAM).map((skill) => ( - <Badge - key={skill} - className="skill-badge" - variant="light" - > - { shortenString(skill, SKILL_NAME_CUTOFF_LIMIT, ELLIPSIS_STR) } - </Badge> - ))} - </div> - )} + <> + {program.skillNames?.length > 0 && ( + <div className="mb-2 d-inline"> + {getCommonSkills(program, selectedJobSkills, MAX_VISIBLE_SKILLS_PROGRAM).map((skill) => ( + <Badge + key={skill} + className="skill-badge" + variant="light" + > + { shortenString(skill, SKILL_NAME_CUTOFF_LIMIT, ELLIPSIS_STR) } + </Badge> + ))} + </div> + )} + </> </Card.Section> <Card.Section className="py-1"> diff --git a/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx b/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx index 43d8f2c1e5..8098246355 100644 --- a/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx +++ b/src/components/skills-quiz/__mocks__/react-instantsearch-dom.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-no-useless-fragment */ /* eslint-disable object-curly-newline */ /* eslint-disable react/prop-types */ // eslint-disable-next-line import/no-import-module-exports @@ -61,7 +62,7 @@ MockReactInstantSearch.connectRefinementList = Component => function (props) { }; MockReactInstantSearch.InstantSearch = function ({ children }) { - return children; + return <>{children}</>; }; MockReactInstantSearch.Configure = function () { return <div>CONFIGURED</div>; @@ -70,7 +71,7 @@ MockReactInstantSearch.Hits = function () { return <div>HIT</div>; }; MockReactInstantSearch.Index = function ({ children }) { - return children; + return <>{children}</>; }; // It is necessary to export this way, or tests not using the mock will fail From 656ef07faa4eb2e213060557066c7c845faddc08 Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Mon, 22 Aug 2022 17:14:22 +0500 Subject: [PATCH 07/13] refactor: resolved eslint issues post master branch merge --- src/components/error-page/ErrorPage.jsx | 38 ++++++++++--------- .../error-page/ErrorPageContent.jsx | 12 +++--- .../error-page/ErrorPageSubtitle.jsx | 6 +-- src/components/error-page/ErrorPageTitle.jsx | 6 +-- .../ExecutiveEducation2UError.jsx | 4 +- .../ExecutiveEducation2UPage.jsx | 1 + .../FormSectionHeading.jsx | 6 +-- 7 files changed, 39 insertions(+), 34 deletions(-) diff --git a/src/components/error-page/ErrorPage.jsx b/src/components/error-page/ErrorPage.jsx index 1db97784dd..8e72e08ec5 100644 --- a/src/components/error-page/ErrorPage.jsx +++ b/src/components/error-page/ErrorPage.jsx @@ -15,29 +15,31 @@ import ErrorPageContent from './ErrorPageContent'; * a header, error alert, and a footer. */ -const ErrorPage = ({ +function ErrorPage({ title, subtitle, showSiteHeader, showSiteFooter, children, -}) => ( - <> - {showSiteHeader && <ErrorPageHeader />} - <main id="content"> - <ErrorPageContent> - <Col xs={12} lg={{ span: 10, offset: 1 }}> - <ErrorPageTitle>{title}</ErrorPageTitle> - {subtitle && ( - <ErrorPageSubtitle>{subtitle}</ErrorPageSubtitle> - )} - {children} - </Col> - </ErrorPageContent> - </main> - {showSiteFooter && <SiteFooter />} - </> -); +}) { + return ( + <> + {showSiteHeader && <ErrorPageHeader />} + <main id="content"> + <ErrorPageContent> + <Col xs={12} lg={{ span: 10, offset: 1 }}> + <ErrorPageTitle>{title}</ErrorPageTitle> + {subtitle && ( + <ErrorPageSubtitle>{subtitle}</ErrorPageSubtitle> + )} + {children} + </Col> + </ErrorPageContent> + </main> + {showSiteFooter && <SiteFooter />} + </> + ); +} ErrorPage.Content = ErrorPageContent; ErrorPage.Title = ErrorPageTitle; diff --git a/src/components/error-page/ErrorPageContent.jsx b/src/components/error-page/ErrorPageContent.jsx index 1d1b9fcbf6..2307353091 100644 --- a/src/components/error-page/ErrorPageContent.jsx +++ b/src/components/error-page/ErrorPageContent.jsx @@ -10,11 +10,13 @@ import classNames from 'classnames'; * Different components can be passed for a greater level of customization * for error pages. */ -const ErrorPageContent = ({ children, className }) => ( - <Container size="lg" className={classNames('error-page-container', className)}> - {children} - </Container> -); +function ErrorPageContent({ children, className }) { + return ( + <Container size="lg" className={classNames('error-page-container', className)}> + {children} + </Container> + ); +} ErrorPageContent.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/error-page/ErrorPageSubtitle.jsx b/src/components/error-page/ErrorPageSubtitle.jsx index 045dddcdf6..50434171c0 100644 --- a/src/components/error-page/ErrorPageSubtitle.jsx +++ b/src/components/error-page/ErrorPageSubtitle.jsx @@ -4,9 +4,9 @@ import PropTypes from 'prop-types'; * Individual subtitle component of ErrorPage component parent. * Includes default styling for error pages. */ -const ErrorPageSubtitle = ({ children }) => ( - <h3 className="mb-4.5 text-gray-700">{children}</h3> -); +function ErrorPageSubtitle({ children }) { + return <h3 className="mb-4.5 text-gray-700">{children}</h3>; +} ErrorPageSubtitle.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/error-page/ErrorPageTitle.jsx b/src/components/error-page/ErrorPageTitle.jsx index ef33830f3a..3f55894c21 100644 --- a/src/components/error-page/ErrorPageTitle.jsx +++ b/src/components/error-page/ErrorPageTitle.jsx @@ -4,9 +4,9 @@ import PropTypes from 'prop-types'; * Individual title component of ErrorPage component parent. * Includes default styling for error pages. */ -const ErrorPageTitle = ({ children }) => ( - <h2 className="text-danger mb-4">{children}</h2> -); +function ErrorPageTitle({ children }) { + return <h2 className="text-danger mb-4">{children}</h2>; +} ErrorPageTitle.propTypes = { children: PropTypes.node, diff --git a/src/components/executive-education-2u/ExecutiveEducation2UError.jsx b/src/components/executive-education-2u/ExecutiveEducation2UError.jsx index 90c96445df..fd1bd2347e 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UError.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UError.jsx @@ -6,7 +6,7 @@ import { ErrorPage, } from '../error-page'; -const ExecutiveEducation2UError = ({ failureReason, httpReferrer }) => { +function ExecutiveEducation2UError({ failureReason, httpReferrer }) { const createExecutiveEducationFailureMessage = (failureCode) => { const failureCodeMessages = { no_offer_available: 'No offer is available to cover this course.', @@ -37,7 +37,7 @@ const ExecutiveEducation2UError = ({ failureReason, httpReferrer }) => { </Row> </ErrorPage.Content> ); -}; +} ExecutiveEducation2UError.propTypes = { failureReason: PropTypes.string, diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx index 470b6576e5..214f1a38d5 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx @@ -70,6 +70,7 @@ function ExecutiveEducation2UPage() { {isLoading ? ( <Skeleton containerTestId="loading-skeleton-page-title" /> ) : ( + // eslint-disable-next-line react/jsx-no-useless-fragment <>{pageTitle}</> )} </h2> diff --git a/src/components/executive-education-2u/FormSectionHeading.jsx b/src/components/executive-education-2u/FormSectionHeading.jsx index ae1fd4abff..cca35d5a0a 100644 --- a/src/components/executive-education-2u/FormSectionHeading.jsx +++ b/src/components/executive-education-2u/FormSectionHeading.jsx @@ -1,9 +1,9 @@ import React from 'react'; import PropTypes from 'prop-types'; -const FormSectionHeading = ({ children }) => ( - <h3 className="h4 mb-4">{children}</h3> -); +function FormSectionHeading({ children }) { + return <h3 className="h4 mb-4">{children}</h3>; +} FormSectionHeading.propTypes = { children: PropTypes.node.isRequired, From d31f1e3d28011a335dd1b938e927017bf1e6ec06 Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 1 Sep 2022 14:26:47 +0500 Subject: [PATCH 08/13] refactor: resolved eslint issues after master branch merge --- src/components/course/EnrollModal.jsx | 3 +- .../tests/ToEcomBasketPage.test.jsx | 22 +++++----- .../tests/InProgressCourseCard.test.jsx | 26 ++++++----- .../enterprise-user-subsidy/UserSubsidy.jsx | 2 +- .../tests/UserSubsidy.test.jsx | 8 ++-- .../ExecutiveEducation2UError.jsx | 2 +- .../ExecutiveEducation2UPage.test.jsx | 30 +++++++------ .../pathway-progress/PathwayProgressCard.jsx | 6 +-- .../PathwayProgressListingPage.jsx | 44 +++++++++---------- .../tests/PathwayProgressListingCard.test.jsx | 16 ++++--- .../tests/PathwayProgressListingPage.test.jsx | 22 +++++----- .../program-progress/ProgramListingPage.jsx | 30 ++++++------- .../ProgressCategoryBubbles.jsx | 34 +++++++------- .../site-header/SiteHeaderLogos.jsx | 4 +- .../site-header/SiteHeaderNavMenu.jsx | 4 +- 15 files changed, 132 insertions(+), 121 deletions(-) diff --git a/src/components/course/EnrollModal.jsx b/src/components/course/EnrollModal.jsx index d7c17b4f77..48cb0450c2 100644 --- a/src/components/course/EnrollModal.jsx +++ b/src/components/course/EnrollModal.jsx @@ -43,7 +43,7 @@ function EnrollModal({ userSubsidyApplicableToCourse, couponCodesCount, onEnroll, -}) => { +}) { const [isLoading, setIsLoading] = useState(false); const getModalTexts = () => { @@ -93,6 +93,7 @@ function EnrollModal({ href={enrollmentUrl} onClick={handleEnroll} > + { /* eslint-disable-next-line react/jsx-no-useless-fragment */ } <> {isLoading && <FontAwesomeIcon icon={faSpinner} alt="loading" className="fa-spin mr-2" />} {buttonText} diff --git a/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx b/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx index ab43d4445a..5d89cbe9c5 100644 --- a/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx +++ b/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx @@ -20,7 +20,7 @@ jest.mock('../../EnrollModal', () => ({ jest.mock('../hooks'); -const ToEcomBasketPageWrapper = ({ +function ToEcomBasketPageWrapper({ courseContextValue = { state: { activeCourseRun: { @@ -32,15 +32,17 @@ const ToEcomBasketPageWrapper = ({ courseEnrollmentsByStatus: {}, }, ...rest -}) => ( - <CourseContext.Provider value={courseContextValue}> - <CourseEnrollmentsContext.Provider value={CourseEnrollmentsContextVAlue}> - <ToEcomBasketPage - {...rest} - />, - </CourseEnrollmentsContext.Provider> - </CourseContext.Provider> -); +}) { + return ( + <CourseContext.Provider value={courseContextValue}> + <CourseEnrollmentsContext.Provider value={CourseEnrollmentsContextVAlue}> + <ToEcomBasketPage + {...rest} + />, + </CourseEnrollmentsContext.Provider> + </CourseContext.Provider> + ); +} describe('<ToEcomBasketPage />', () => { it('should render <EnrollButtonCta /> and <EnrollModal />', () => { diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx index 7b6c090a17..7d7f9fc92d 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx @@ -26,7 +26,7 @@ const basicProps = { notifications: [], }; -const InProgressCourseCardWrapper = ({ +function InProgressCourseCardWrapper({ appContextValue = { enterpriseConfig: { @@ -48,17 +48,19 @@ const InProgressCourseCardWrapper = ({ couponUpgradeUrl: undefined, }, ...rest -}) => ( - <AppContext.Provider value={appContextValue}> - <UserSubsidyContext.Provider value={userSubsidyContextValue}> - <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> - <UpgradeableCourseEnrollmentContext.Provider value={upgradeableCourseEnrollmentContextValue}> - <InProgressCourseCard {...rest} /> - </UpgradeableCourseEnrollmentContext.Provider> - </CourseEnrollmentsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +}) { + return ( + <AppContext.Provider value={appContextValue}> + <UserSubsidyContext.Provider value={userSubsidyContextValue}> + <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> + <UpgradeableCourseEnrollmentContext.Provider value={upgradeableCourseEnrollmentContextValue}> + <InProgressCourseCard {...rest} /> + </UpgradeableCourseEnrollmentContext.Provider> + </CourseEnrollmentsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} describe('<InProgressCourseCard />', () => { it('should not render upgrade course button if there is no couponUpgradeUrl', () => { diff --git a/src/components/enterprise-user-subsidy/UserSubsidy.jsx b/src/components/enterprise-user-subsidy/UserSubsidy.jsx index 8c5fc1d96c..2d840281c2 100644 --- a/src/components/enterprise-user-subsidy/UserSubsidy.jsx +++ b/src/components/enterprise-user-subsidy/UserSubsidy.jsx @@ -17,7 +17,7 @@ import { LOADING_SCREEN_READER_TEXT } from './data/constants'; export const UserSubsidyContext = createContext(); -const UserSubsidy = ({ children }) => { +function UserSubsidy({ children }) { const { enterpriseConfig, authenticatedUser } = useContext(AppContext); const [customerAgreementConfig, isLoadingCustomerAgreementConfig] = useCustomerAgreementData(enterpriseConfig.uuid); diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 7ba2ac6f5a..731eb64e70 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -66,8 +66,9 @@ function UserSubsidyWithAppContext({ contextValue = {}, authenticatedUser = TEST_USER, children, -}) => ( +}) { <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, @@ -81,8 +82,9 @@ function UserSubsidyWithAppContext({ <UserSubsidy> {children} </UserSubsidy> - </AppContext.Provider> -); + </AppContext.Provider>; +} + /* eslint-enable react/prop-types */ function SubscriptionLicenseConsumer() { diff --git a/src/components/executive-education-2u/ExecutiveEducation2UError.jsx b/src/components/executive-education-2u/ExecutiveEducation2UError.jsx index 3d46d89f11..35fb0dfa60 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UError.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UError.jsx @@ -9,7 +9,7 @@ import { ErrorPage, } from '../error-page'; -const ExecutiveEducation2UError = ({ failureReason, httpReferrer }) => { +function ExecutiveEducation2UError({ failureReason, httpReferrer }) { const { enterpriseConfig: { uuid: enterpriseId } } = useContext(AppContext); const createExecutiveEducationFailureMessage = (failureCode) => { diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx index fe6b583347..2bfc34ed70 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx @@ -19,20 +19,22 @@ jest.mock('@edx/frontend-platform/logging', () => ({ ...jest.requireActual('@edx/frontend-platform/logging'), logError: jest.fn(), })); -jest.mock('./UserEnrollmentForm', () => ({ productSKU, onCheckoutSuccess }) => ( - <div data-testid="user-enrollment-form-component"> - <div>{productSKU}</div> - <button - type="button" - onClick={() => { - const sampleResponse = { receiptPageUrl: mockReceiptPageUrl }; - onCheckoutSuccess(sampleResponse); - }} - > - Mock submit enrollment form - </button> - </div> -)); +jest.mock('./UserEnrollmentForm', () => function ({ productSKU, onCheckoutSuccess }) { + return ( + <div data-testid="user-enrollment-form-component"> + <div>{productSKU}</div> + <button + type="button" + onClick={() => { + const sampleResponse = { receiptPageUrl: mockReceiptPageUrl }; + onCheckoutSuccess(sampleResponse); + }} + > + Mock submit enrollment form + </button> + </div> + ); +}); const locationAssignMock = jest.fn(); const enterpriseSlug = 'test-enterprise-slug'; diff --git a/src/components/pathway-progress/PathwayProgressCard.jsx b/src/components/pathway-progress/PathwayProgressCard.jsx index ae0eb43af6..c60d1ddd97 100644 --- a/src/components/pathway-progress/PathwayProgressCard.jsx +++ b/src/components/pathway-progress/PathwayProgressCard.jsx @@ -7,7 +7,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import { getProgressFromSteps } from './data/utils'; import { ProgressCategoryBubbles } from '../progress-category-bubbles'; -const PathwayProgressCard = ({ pathway: { learnerPathwayProgress } }) => { +function PathwayProgressCard({ pathway: { learnerPathwayProgress } }) { const progress = getProgressFromSteps(learnerPathwayProgress.steps); const history = useHistory(); const { enterpriseConfig: { slug } } = useContext(AppContext); @@ -44,12 +44,12 @@ const PathwayProgressCard = ({ pathway: { learnerPathwayProgress } }) => { </Card.Section> </Card> ); -}; +} PathwayProgressCard.propTypes = { pathway: PropTypes.shape({ learnerPathwayProgress: PropTypes.shape({ - steps: PropTypes.array.isRequired, + steps: PropTypes.shape([]).isRequired, title: PropTypes.string.isRequired, uuid: PropTypes.string.isRequired, cardImage: PropTypes.string, diff --git a/src/components/pathway-progress/PathwayProgressListingPage.jsx b/src/components/pathway-progress/PathwayProgressListingPage.jsx index 2f4374ecb1..9ec2eb674f 100644 --- a/src/components/pathway-progress/PathwayProgressListingPage.jsx +++ b/src/components/pathway-progress/PathwayProgressListingPage.jsx @@ -20,7 +20,7 @@ import PathwayProgressCard from './PathwayProgressCard'; import { CONTENT_TYPE_PATHWAY } from '../search/constants'; -const PathwayProgressListingPage = () => { +function PathwayProgressListingPage() { const { enterpriseConfig } = useContext(AppContext); const [pathwayProgressData, fetchError] = useInProgressPathwaysData(enterpriseConfig.uuid); @@ -38,28 +38,26 @@ const PathwayProgressListingPage = () => { } return ( - <> - <Container size="lg" className="py-5 w-100"> - <Row> - {pathwayProgressData?.length > 0 ? ( - pathwayProgressData.map((pathway) => ( - <PathwayProgressCard - pathway={pathway} - key={pathway.learnerPathwayProgress.uuid} - /> - )) - ) : ( - <div className="no-content-message"> - <h2>{NO_PATHWAYS_ERROR_MESSAGE}</h2> - <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PATHWAY}`}> - <Button variant="primary" iconBefore={Search} className="mt-2">Explore pathways</Button> - </Link> - </div> - )} - </Row> - </Container> - </> + <Container size="lg" className="py-5 w-100"> + <Row> + {pathwayProgressData?.length > 0 ? ( + pathwayProgressData.map((pathway) => ( + <PathwayProgressCard + pathway={pathway} + key={pathway.learnerPathwayProgress.uuid} + /> + )) + ) : ( + <div className="no-content-message"> + <h2>{NO_PATHWAYS_ERROR_MESSAGE}</h2> + <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PATHWAY}`}> + <Button variant="primary" iconBefore={Search} className="mt-2">Explore pathways</Button> + </Link> + </div> + )} + </Row> + </Container> ); -}; +} export default PathwayProgressListingPage; diff --git a/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx b/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx index 5477ff5359..813010dfd2 100644 --- a/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx +++ b/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx @@ -21,13 +21,15 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -const PathwayProgressListingCardWithContext = ({ initialAppState, initialUserSubsidyState, pathwayData }) => ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <PathwayProgressCard pathway={pathwayData} /> - </UserSubsidyContext.Provider> - </AppContext.Provider> -); +function PathwayProgressListingCardWithContext({ initialAppState, initialUserSubsidyState, pathwayData }) { + return ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <PathwayProgressCard pathway={pathwayData} /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} const appState = { enterpriseConfig: { diff --git a/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx b/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx index e2de15939d..4f31545e92 100644 --- a/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx +++ b/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx @@ -26,18 +26,20 @@ jest.mock('../data/hooks', () => ({ })); /* eslint-disable react/prop-types */ -const PathwayProgressListingWithContext = ({ +function PathwayProgressListingWithContext({ initialAppState = {}, initialUserSubsidyState = {}, -}) => ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <PathwayProgressListingPage /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> -); +}) { + return ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <PathwayProgressListingPage /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> + ); +} describe('<PathwayProgressListingPage />', () => { const initialAppState = { diff --git a/src/components/program-progress/ProgramListingPage.jsx b/src/components/program-progress/ProgramListingPage.jsx index 20b1fc97d3..630acec538 100644 --- a/src/components/program-progress/ProgramListingPage.jsx +++ b/src/components/program-progress/ProgramListingPage.jsx @@ -38,22 +38,20 @@ function ProgramListingPage() { } return ( - <> - <Container size="lg" className="py-5 w-100"> - <Row> - {learnerProgramsData.length > 0 ? ( - learnerProgramsData.map((program) => <ProgramListingCard program={program} key={program.title} />) - ) : ( - <div className="no-content-message"> - <h2>{NO_PROGRAMS_ERROR_MESSAGE}</h2> - <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PROGRAM}`}> - <Button variant="primary" iconBefore={Search} className="mt-2">Explore programs</Button> - </Link> - </div> - )} - </Row> - </Container> - </> + <Container size="lg" className="py-5 w-100"> + <Row> + {learnerProgramsData.length > 0 ? ( + learnerProgramsData.map((program) => <ProgramListingCard program={program} key={program.title} />) + ) : ( + <div className="no-content-message"> + <h2>{NO_PROGRAMS_ERROR_MESSAGE}</h2> + <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PROGRAM}`}> + <Button variant="primary" iconBefore={Search} className="mt-2">Explore programs</Button> + </Link> + </div> + )} + </Row> + </Container> ); } diff --git a/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx b/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx index 0f6a9891c6..58c7c47102 100644 --- a/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx +++ b/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx @@ -3,24 +3,26 @@ import { Bubble, Stack } from '@edx/paragon'; import PropTypes from 'prop-types'; import './styles/index.scss'; -const ProgressCategoryBubbles = ({ notStarted, inProgress, completed }) => ( - <Stack direction="horizontal" gap={2}> - <Bubble className="remaining-courses" data-testid="remaining-count"> - {notStarted} - </Bubble> - <div>Remaining</div> +function ProgressCategoryBubbles({ notStarted, inProgress, completed }) { + return ( + <Stack direction="horizontal" gap={2}> + <Bubble className="remaining-courses" data-testid="remaining-count"> + {notStarted} + </Bubble> + <div>Remaining</div> - <Bubble className="in-progress-courses" data-testid="in-progress-count"> - {inProgress} - </Bubble> - <div>In progress</div> + <Bubble className="in-progress-courses" data-testid="in-progress-count"> + {inProgress} + </Bubble> + <div>In progress</div> - <Bubble className="completed-courses" data-testid="completed-count"> - {completed} - </Bubble> - <div>Completed</div> - </Stack> -); + <Bubble className="completed-courses" data-testid="completed-count"> + {completed} + </Bubble> + <div>Completed</div> + </Stack> + ); +} ProgressCategoryBubbles.propTypes = { notStarted: PropTypes.number.isRequired, diff --git a/src/components/site-header/SiteHeaderLogos.jsx b/src/components/site-header/SiteHeaderLogos.jsx index a969565b12..71dece16e7 100644 --- a/src/components/site-header/SiteHeaderLogos.jsx +++ b/src/components/site-header/SiteHeaderLogos.jsx @@ -5,7 +5,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import GetSmarterLogo from '../../assets/icons/getsmarter-logo.svg'; -const SiteHeaderLogos = () => { +function SiteHeaderLogos() { const { enterpriseConfig } = useContext(AppContext); const { pathname } = useLocation(); const isInExecutiveEducationPath = pathname.includes('executive-education-2u'); @@ -42,6 +42,6 @@ const SiteHeaderLogos = () => { )} </> ); -}; +} export default SiteHeaderLogos; diff --git a/src/components/site-header/SiteHeaderNavMenu.jsx b/src/components/site-header/SiteHeaderNavMenu.jsx index a4843b10f9..aaa54078d6 100644 --- a/src/components/site-header/SiteHeaderNavMenu.jsx +++ b/src/components/site-header/SiteHeaderNavMenu.jsx @@ -2,7 +2,7 @@ import React, { useContext } from 'react'; import { NavLink } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; -const SiteHeaderNavMenu = () => { +function SiteHeaderNavMenu() { const { enterpriseConfig } = useContext(AppContext); const mainMenuLinkClassName = 'nav-link'; @@ -20,6 +20,6 @@ const SiteHeaderNavMenu = () => { </NavLink> </> ); -}; +} export default SiteHeaderNavMenu; From b0a366483ad7204e55f3ec63716a29fe9f1e176b Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 1 Sep 2022 14:45:02 +0500 Subject: [PATCH 09/13] refactor: resolved failing test cases --- .../tests/UserSubsidy.test.jsx | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 731eb64e70..9fb85793dc 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -67,24 +67,25 @@ function UserSubsidyWithAppContext({ authenticatedUser = TEST_USER, children, }) { - <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values - value={{ - enterpriseConfig: { - slug: TEST_ENTERPRISE_SLUG, - uuid: TEST_ENTERPRISE_UUID, - ...enterpriseConfig, - }, - authenticatedUser, - ...contextValue, - }} - > - <UserSubsidy> - {children} - </UserSubsidy> - </AppContext.Provider>; + return ( + <AppContext.Provider + // eslint-disable-next-line react/jsx-no-constructed-context-values + value={{ + enterpriseConfig: { + slug: TEST_ENTERPRISE_SLUG, + uuid: TEST_ENTERPRISE_UUID, + ...enterpriseConfig, + }, + authenticatedUser, + ...contextValue, + }} + > + <UserSubsidy> + {children} + </UserSubsidy> + </AppContext.Provider> + ); } - /* eslint-enable react/prop-types */ function SubscriptionLicenseConsumer() { From b9f3e238eb69edd4b940b401c4d4e2138f7eb2d8 Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Mon, 5 Sep 2022 16:44:31 +0500 Subject: [PATCH 10/13] refactor: implemented suggested changes --- .eslintrc.js | 3 ++ package-lock.json | 2 +- package.json | 2 +- src/components/Toasts/ToastsProvider.jsx | 7 ++--- src/components/app/App.jsx | 2 +- src/components/app/LoginRefresh.jsx | 10 +++++-- src/components/app/LoginRefresh.test.jsx | 16 +++++------ src/components/course/data/hooks.jsx | 6 ++-- .../tests/LicenseRequestedAlert.test.jsx | 28 +++++++++---------- .../tests/SubsidyRequestButton.test.jsx | 12 ++------ .../mark-complete-modal/MarkCompleteModal.jsx | 14 +++++----- .../tests/MarkCompleteModal.test.jsx | 1 - .../MoveToInProgressModal.jsx | 14 +++++----- .../tests/BaseCourseCard.test.jsx | 1 - .../unenroll/UnenrollModal.test.jsx | 1 - .../tests/CourseEnrollments.test.jsx | 1 - .../tests/CourseSection.test.jsx | 1 - .../tests/EnterpriseBanner.test.jsx | 1 - .../EnterpriseOffersBalanceAlert.test.jsx | 1 - .../tests/AutoActivateLicense.test.jsx | 1 - .../tests/UserSubsidy.test.jsx | 1 - .../tests/LicenseActivation.test.jsx | 1 - .../tests/LicenseActivationPage.test.jsx | 1 - src/components/notices-provider/index.js | 3 +- src/components/pathway/data/utils.js | 4 +-- .../pathway/tests/PathwayModal.test.jsx | 1 - .../pathway/tests/SearchPathwayCard.test.jsx | 1 - .../ProgramPathwayOpportunity.jsx | 2 +- .../program-progress/ProgramProgressPage.jsx | 6 ++-- src/components/search/SearchCourseCard.jsx | 3 +- .../search/tests/SearchCourseCard.test.jsx | 1 - .../search/tests/SearchProgramCard.test.jsx | 1 - .../skills-quiz/SearchCurrentJobCard.jsx | 6 ++-- .../skills-quiz/SkillsContextProvider.jsx | 5 ++-- .../skills-quiz/SkillsQuizHeader.jsx | 2 +- .../tests/SkillsQuizStepper.test.jsx | 1 - 36 files changed, 72 insertions(+), 91 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 5b2737cbbd..efb4e04ab4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -13,5 +13,8 @@ config.ignorePatterns = ['module.config.js']; config.rules.indent = ['error', 2, { ignoredNodes: ['TemplateLiteral', 'SwitchCase'] }]; config.rules['template-curly-spacing'] = 'off'; config.rules['import/prefer-default-export'] = 'off'; +config.overrides = [{ + files: ['*.test.jsx'], rules: { 'react/jsx-no-constructed-context-values': 'off' }, +}]; module.exports = config; diff --git a/package-lock.json b/package-lock.json index 14d544124d..0accdab910 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "^12.0.3", + "@edx/frontend-build": "12.0.3", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", diff --git a/package.json b/package.json index fbd32fb65c..ad29a7e87c 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "^12.0.3", + "@edx/frontend-build": "12.0.3", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", diff --git a/src/components/Toasts/ToastsProvider.jsx b/src/components/Toasts/ToastsProvider.jsx index c349c681df..6d29c9c7f8 100644 --- a/src/components/Toasts/ToastsProvider.jsx +++ b/src/components/Toasts/ToastsProvider.jsx @@ -27,11 +27,10 @@ function ToastsProvider({ children }) { }); }, [toasts]); + const contextValue = useMemo(() => ({ toasts, addToast, removeToast }), [removeToast, toasts]); + return ( - <ToastsContext.Provider value={ - useMemo(() => ({ toasts, addToast, removeToast }), [removeToast, toasts]) - } - > + <ToastsContext.Provider value={contextValue}> {children} </ToastsContext.Provider> ); diff --git a/src/components/app/App.jsx b/src/components/app/App.jsx index 905af85513..ab305dc4d3 100644 --- a/src/components/app/App.jsx +++ b/src/components/app/App.jsx @@ -7,7 +7,7 @@ import { initializeHotjar } from '@edx/frontend-enterprise-hotjar'; import AuthenticatedPage from './AuthenticatedPage'; import EnterpriseAppPageRoutes from './EnterpriseAppPageRoutes'; import NotFoundPage from '../NotFoundPage'; -import NoticesProvider from '../notices-provider'; +import { NoticesProvider } from '../notices-provider'; import { EnterpriseCustomerRedirect, EnterprisePageRedirect, diff --git a/src/components/app/LoginRefresh.jsx b/src/components/app/LoginRefresh.jsx index c3c6b41203..ff919f9695 100644 --- a/src/components/app/LoginRefresh.jsx +++ b/src/components/app/LoginRefresh.jsx @@ -1,12 +1,12 @@ import React, { useContext, useEffect, useState } from 'react'; +import PropTypes from 'prop-types'; import { AppContext } from '@edx/frontend-platform/react'; import { Container } from '@edx/paragon'; import { LoadingSpinner } from '../loading-spinner'; import { loginRefresh } from '../../utils/common'; -// eslint-disable-next-line react/prop-types -export default function LoginRefresh({ children }) { +function LoginRefresh({ children }) { const { authenticatedUser } = useContext(AppContext); const { roles } = authenticatedUser; @@ -34,3 +34,9 @@ export default function LoginRefresh({ children }) { } return children; } + +LoginRefresh.propTypes = { + children: PropTypes.node.isRequired, +}; + +export default LoginRefresh; diff --git a/src/components/app/LoginRefresh.test.jsx b/src/components/app/LoginRefresh.test.jsx index eaf97c1396..3c07ed6435 100644 --- a/src/components/app/LoginRefresh.test.jsx +++ b/src/components/app/LoginRefresh.test.jsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React from 'react'; import '@testing-library/jest-dom/extend-expect'; import { render, act } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; @@ -11,14 +11,12 @@ jest.mock('../../utils/common'); // eslint-disable-next-line react/prop-types function LoginRefreshWithContext({ roles = [] }) { return ( - <AppContext.Provider value={ - useMemo(() => ({ - authenticatedUser: { - userId: 1, - roles, - }, - }), [roles]) - } + <AppContext.Provider value={{ + authenticatedUser: { + userId: 1, + roles, + }, + }} > <LoginRefresh> <div>Hello!</div> diff --git a/src/components/course/data/hooks.jsx b/src/components/course/data/hooks.jsx index 2301ba9eed..49675dc2e4 100644 --- a/src/components/course/data/hooks.jsx +++ b/src/components/course/data/hooks.jsx @@ -345,8 +345,10 @@ export const useCourseEnrollmentUrl = ({ userSubsidyApplicableToCourse, }) => { const config = getConfig(); - // eslint-disable-next-line react-hooks/exhaustive-deps - const baseQueryParams = new URLSearchParams(location.search); + const baseQueryParams = useMemo( + () => new URLSearchParams(location.search), + [location.search], + ); baseQueryParams.set(ENROLLMENT_FAILED_QUERY_PARAM, true); baseQueryParams.set(ENROLLMENT_COURSE_RUN_KEY_QUERY_PARAM, courseRunKey); diff --git a/src/components/course/tests/LicenseRequestedAlert.test.jsx b/src/components/course/tests/LicenseRequestedAlert.test.jsx index 587edb66d1..c69e74a7e5 100644 --- a/src/components/course/tests/LicenseRequestedAlert.test.jsx +++ b/src/components/course/tests/LicenseRequestedAlert.test.jsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import React from 'react'; import { render, fireEvent, waitFor } from '@testing-library/react'; import Cookies from 'universal-cookie'; import LicenseRequestedAlert from '../LicenseRequestedAlert'; @@ -28,27 +28,25 @@ function LicenseRequestedAlertWrapper({ subscriptions = initialSubscriptions, licenseRequests = initialLicenseRequests, }) { return ( - <UserSubsidyContext.Provider value={ - useMemo(() => ({ - couponCodes: { - couponCodes: [], - couponCodesCount: 0, - }, - subscriptionLicense: {}, - customerAgreementConfig: { - subscriptions, - }, - }), [subscriptions]) - } + <UserSubsidyContext.Provider value={{ + couponCodes: { + couponCodes: [], + couponCodesCount: 0, + }, + subscriptionLicense: {}, + customerAgreementConfig: { + subscriptions, + }, + }} > <SubsidyRequestsContext.Provider value={ - useMemo(() => ({ + { subsidyRequestConfiguration: null, requestsBySubsidyType: { [SUBSIDY_TYPE.LICENSE]: licenseRequests, [SUBSIDY_TYPE.COUPON]: [], }, - }), [licenseRequests]) + } } > <CourseContext.Provider> diff --git a/src/components/course/tests/SubsidyRequestButton.test.jsx b/src/components/course/tests/SubsidyRequestButton.test.jsx index b24fa00319..e66e231f0e 100644 --- a/src/components/course/tests/SubsidyRequestButton.test.jsx +++ b/src/components/course/tests/SubsidyRequestButton.test.jsx @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import React, { useMemo } from 'react'; +import React from 'react'; import { screen, render, fireEvent, waitFor, } from '@testing-library/react'; @@ -59,14 +59,8 @@ function SubsidyRequestButtonWrapper({ }) { return ( <ToastsContext.Provider value={initialToastsState}> - <SubsidyRequestsContext.Provider value={ - useMemo(() => ({ ...initialSubsidyRequestsState, ...subsidyRequestsState }), [subsidyRequestsState]) - } - > - <CourseContext.Provider value={ - useMemo(() => ({ ...initialCourseState, ...courseState }), [courseState]) - } - > + <SubsidyRequestsContext.Provider value={{ ...initialSubsidyRequestsState, ...subsidyRequestsState }}> + <CourseContext.Provider value={{ ...initialCourseState, ...courseState }}> <SubsidyRequestButton enterpriseSlug={mockEnterpriseSlug} /> </CourseContext.Provider> </SubsidyRequestsContext.Provider> diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx index 2b6193e5e9..9dc710a6d2 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx @@ -65,15 +65,15 @@ function MarkCompleteModal({ onClose(); }; + const contextValue = useMemo(() => ({ + courseTitle, + courseLink, + confirmError, + }), [confirmError, courseLink, courseTitle]); + return ( <MarkCompleteModalContext.Provider - value={ - useMemo(() => ({ - courseTitle, - courseLink, - confirmError, - }), [confirmError, courseLink, courseTitle]) - } + value={contextValue} > <Modal title="Save course for later" diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx index c2634f66c9..c5c1361420 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx @@ -1,4 +1,3 @@ -/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx index 9763f6eaf1..05c1764c66 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx @@ -56,15 +56,15 @@ function MoveToInProgressModal({ onClose(); }; + const contextValue = useMemo(() => ({ + courseTitle, + courseLink, + confirmError, + }), [confirmError, courseLink, courseTitle]); + return ( <MoveToInProgressModalContext.Provider - value={ - useMemo(() => ({ - courseTitle, - courseLink, - confirmError, - }), [confirmError, courseLink, courseTitle]) - } + value={contextValue} > <Modal title="Move course to "In Progress"" diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx index 60921d4cfc..40bdcc4601 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx @@ -1,4 +1,3 @@ -/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { mount } from 'enzyme'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx index b33dc7ec5f..25237caaa9 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx @@ -40,7 +40,6 @@ function UnenrollModalWrapper({ ...props }) { return ( - // eslint-disable-next-line react/jsx-no-constructed-context-values <ToastsContext.Provider value={{ addToast: mockAddToast }}> <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> <UnenrollModal {...props} /> diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx index 029045b525..d4c1797e83 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx @@ -1,4 +1,3 @@ -/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx index 6eeec37cac..af46b61e4a 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx @@ -34,7 +34,6 @@ const TEST_ENTERPRISE_UUID = 'test-uuid'; function CourseSectionWrapper(props) { return ( - // eslint-disable-next-line react/jsx-no-constructed-context-values <AppContext.Provider value={{ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, diff --git a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx index 2000e8c5d2..4de2d6f8bb 100644 --- a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx +++ b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx @@ -21,7 +21,6 @@ describe('<EnterpriseBanner />', () => { render( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: 'slug', diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx index 789581422c..8c80b2eb9d 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx @@ -17,7 +17,6 @@ function EnterpriseOffersBalanceAlertWrapper({ hasNoEnterpriseOffersBalance, }) { return ( - // eslint-disable-next-line react/jsx-no-constructed-context-values <AppContext.Provider value={{ enterpriseConfig, }} diff --git a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx index bf4f75c1b5..a4cb6fb4b8 100644 --- a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx @@ -1,4 +1,3 @@ -/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import { Route } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 9fb85793dc..26dbc291a4 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -69,7 +69,6 @@ function UserSubsidyWithAppContext({ }) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, diff --git a/src/components/license-activation/tests/LicenseActivation.test.jsx b/src/components/license-activation/tests/LicenseActivation.test.jsx index d4690dc798..a61dfe6fab 100644 --- a/src/components/license-activation/tests/LicenseActivation.test.jsx +++ b/src/components/license-activation/tests/LicenseActivation.test.jsx @@ -28,7 +28,6 @@ function LicenseActivationWithAppContext({ }) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, diff --git a/src/components/license-activation/tests/LicenseActivationPage.test.jsx b/src/components/license-activation/tests/LicenseActivationPage.test.jsx index 2e74ab4f44..be4381dcf4 100644 --- a/src/components/license-activation/tests/LicenseActivationPage.test.jsx +++ b/src/components/license-activation/tests/LicenseActivationPage.test.jsx @@ -46,7 +46,6 @@ function LicenseActivationPageWithContext({ }) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, diff --git a/src/components/notices-provider/index.js b/src/components/notices-provider/index.js index 7c154b573b..51d8a0367f 100644 --- a/src/components/notices-provider/index.js +++ b/src/components/notices-provider/index.js @@ -1,2 +1 @@ -// eslint-disable-next-line no-restricted-exports -export { default } from './NoticesProvider'; +export { default as NoticesProvider } from './NoticesProvider'; diff --git a/src/components/pathway/data/utils.js b/src/components/pathway/data/utils.js index bd87e2b058..44525bc837 100644 --- a/src/components/pathway/data/utils.js +++ b/src/components/pathway/data/utils.js @@ -6,8 +6,8 @@ export default function coursesAndProgramsText(pathway) { let message; for (let i = 0; i < pathway.steps.length; i++) { - courseCount += pathway.steps[i].courses ? pathway.steps[i].courses.length : 0; - programCount += pathway.steps[i].programs ? pathway.steps[i].programs.length : 0; + courseCount += pathway.steps[i].courses?.length || 0; + programCount += pathway.steps[i].programs?.length || 0; } textCourse = courseCount === 1 ? 'course' : 'courses'; diff --git a/src/components/pathway/tests/PathwayModal.test.jsx b/src/components/pathway/tests/PathwayModal.test.jsx index 185505c8bc..e3b33c18df 100644 --- a/src/components/pathway/tests/PathwayModal.test.jsx +++ b/src/components/pathway/tests/PathwayModal.test.jsx @@ -29,7 +29,6 @@ jest.mock('react-loading-skeleton', () => ({ function PathwayModalWithAppContext(props) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, }} diff --git a/src/components/pathway/tests/SearchPathwayCard.test.jsx b/src/components/pathway/tests/SearchPathwayCard.test.jsx index 01fca358f8..ae91dbf180 100644 --- a/src/components/pathway/tests/SearchPathwayCard.test.jsx +++ b/src/components/pathway/tests/SearchPathwayCard.test.jsx @@ -31,7 +31,6 @@ jest.mock('@edx/frontend-enterprise-utils', () => { function SearchPathwayCardWithAppContext(props) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, }} diff --git a/src/components/program-progress/ProgramPathwayOpportunity.jsx b/src/components/program-progress/ProgramPathwayOpportunity.jsx index fdec733d68..14a3946ea4 100644 --- a/src/components/program-progress/ProgramPathwayOpportunity.jsx +++ b/src/components/program-progress/ProgramPathwayOpportunity.jsx @@ -7,7 +7,7 @@ function ProgramPathwayOpportunity({ pathways, title, pathwayClass }) { <div className={pathwayClass}> <h2 className="divider-heading"> { title } </h2> {pathways.map((pathway) => ( - <div className="pathway-wrapper"> + <div className="pathway-wrapper" key={pathway.uuid}> <div className="pathway-info"> <h2 className="pathway-heading"> { pathway.name } </h2> { pathway.description && <p> {pathway.description}</p> } diff --git a/src/components/program-progress/ProgramProgressPage.jsx b/src/components/program-progress/ProgramProgressPage.jsx index 713301808f..56c21bfc6f 100644 --- a/src/components/program-progress/ProgramProgressPage.jsx +++ b/src/components/program-progress/ProgramProgressPage.jsx @@ -37,9 +37,9 @@ function ProgramProgressPage() { [program], ); const courseData = program?.data?.courseData; - const notStartedCourses = courseData?.notStarted?.length; - const completedCourses = courseData?.completed?.length; - const inProgressCourses = courseData?.inProgress?.length; + const notStartedCourses = courseData?.notStarted?.length || 0; + const completedCourses = courseData?.completed?.length || 0; + const inProgressCourses = courseData?.inProgress?.length || 0; const totalCoursesInProgram = notStartedCourses + completedCourses + inProgressCourses; const allCoursesCompleted = !courseData?.notStarted?.length && !courseData?.inProgress?.length diff --git a/src/components/search/SearchCourseCard.jsx b/src/components/search/SearchCourseCard.jsx index f151db0744..95f62b6489 100644 --- a/src/components/search/SearchCourseCard.jsx +++ b/src/components/search/SearchCourseCard.jsx @@ -14,8 +14,7 @@ import { getPrimaryPartnerLogo, isDefinedAndNotNull } from '../../utils/common'; function SearchCourseCard({ hit, isLoading }) { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); - // eslint-disable-next-line react-hooks/exhaustive-deps - const course = hit ? camelCaseObject(hit) : {}; + const course = useMemo(() => (hit ? camelCaseObject(hit) : {}), [hit]); const linkToCourse = useMemo( () => { diff --git a/src/components/search/tests/SearchCourseCard.test.jsx b/src/components/search/tests/SearchCourseCard.test.jsx index fb84a15214..0f3eebb867 100644 --- a/src/components/search/tests/SearchCourseCard.test.jsx +++ b/src/components/search/tests/SearchCourseCard.test.jsx @@ -22,7 +22,6 @@ jest.mock('react-loading-skeleton', () => ({ function SearchCourseCardWithAppContext(props) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, }} diff --git a/src/components/search/tests/SearchProgramCard.test.jsx b/src/components/search/tests/SearchProgramCard.test.jsx index da2367e3f0..ce66a83d47 100644 --- a/src/components/search/tests/SearchProgramCard.test.jsx +++ b/src/components/search/tests/SearchProgramCard.test.jsx @@ -33,7 +33,6 @@ jest.mock('@edx/frontend-enterprise-utils', () => ({ function SearchProgramCardWithAppContext(props) { return ( <AppContext.Provider - // eslint-disable-next-line react/jsx-no-constructed-context-values value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, }} diff --git a/src/components/skills-quiz/SearchCurrentJobCard.jsx b/src/components/skills-quiz/SearchCurrentJobCard.jsx index 87631f1b8d..5388ccba5d 100644 --- a/src/components/skills-quiz/SearchCurrentJobCard.jsx +++ b/src/components/skills-quiz/SearchCurrentJobCard.jsx @@ -14,7 +14,7 @@ function SearchCurrentJobCard({ index }) { const [isLoading, setIsLoading] = useState(true); const { dispatch, state } = useContext(SkillsContext); const { currentJobRole } = state; - const jobToFetch = useMemo( + const jobsToFetch = useMemo( () => { const jobsArray = []; if (currentJob?.length > 0) { @@ -35,7 +35,7 @@ function SearchCurrentJobCard({ index }) { setIsLoading(true); const { hits } = await index.search('', { facetFilters: [ - jobToFetch, + jobsToFetch, ], }); if (!fetch) { return; } @@ -43,7 +43,7 @@ function SearchCurrentJobCard({ index }) { setIsLoading(false); } }, - [currentJob, dispatch, index, jobToFetch], + [currentJob, dispatch, index, jobsToFetch], ); return ( diff --git a/src/components/skills-quiz/SkillsContextProvider.jsx b/src/components/skills-quiz/SkillsContextProvider.jsx index eb8c05f4aa..3bf141c0b2 100644 --- a/src/components/skills-quiz/SkillsContextProvider.jsx +++ b/src/components/skills-quiz/SkillsContextProvider.jsx @@ -1,4 +1,4 @@ -import React, { createContext, useReducer } from 'react'; +import React, { createContext, useReducer, useMemo } from 'react'; import PropTypes from 'prop-types'; import { SET_KEY_VALUE, @@ -21,8 +21,7 @@ const reducer = (state, action) => { export function SkillsContextProvider({ children, initialState = { goal: GOAL_DROPDOWN_DEFAULT_OPTION } }) { const [state, dispatch] = useReducer(reducer, initialState); - // eslint-disable-next-line react/jsx-no-constructed-context-values - const value = { state, dispatch }; + const value = useMemo(() => ({ state, dispatch }), [state]); return ( <SkillsContext.Provider value={value}> diff --git a/src/components/skills-quiz/SkillsQuizHeader.jsx b/src/components/skills-quiz/SkillsQuizHeader.jsx index 623fc609eb..d26baa396b 100644 --- a/src/components/skills-quiz/SkillsQuizHeader.jsx +++ b/src/components/skills-quiz/SkillsQuizHeader.jsx @@ -3,7 +3,7 @@ import edxLogo from './images/edx-logo.svg'; function SkillsQuizHeader() { return ( - <div style={{ display: 'flex' }} className="ml-2"> + <div className="d-flex ml-2"> <img src={edxLogo} alt="edx-logo" height="110px" /> <div className="ml-5 vertical-line" diff --git a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx index 012edd1d7e..58acd25c27 100644 --- a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx +++ b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx @@ -1,4 +1,3 @@ -/* eslint-disable react/jsx-no-constructed-context-values */ import React from 'react'; import '@testing-library/jest-dom/extend-expect'; import userEvent from '@testing-library/user-event'; From 8c1b8b4d77b6a26a95f7eb28a36633a40b9c3ed2 Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Fri, 16 Sep 2022 17:33:41 +0500 Subject: [PATCH 11/13] refactor: updated tests to accommodate jsx-no-constructed-context-values rule --- .eslintrc.js | 3 - src/components/app/LoginRefresh.test.jsx | 16 +- .../tests/LicenseRequestedAlert.test.jsx | 42 +++-- .../tests/SubsidyRequestButton.test.jsx | 9 +- .../tests/MarkCompleteModal.test.jsx | 47 ++--- .../tests/BaseCourseCard.test.jsx | 90 +++++----- .../unenroll/UnenrollModal.test.jsx | 4 +- .../tests/CourseEnrollments.test.jsx | 34 ++-- .../tests/CourseSection.test.jsx | 13 +- .../tests/EnterpriseBanner.test.jsx | 31 ++-- .../EnterpriseOffersBalanceAlert.test.jsx | 10 +- .../tests/AutoActivateLicense.test.jsx | 8 +- .../tests/UserSubsidy.test.jsx | 23 ++- .../tests/LicenseActivation.test.jsx | 19 +- .../tests/LicenseActivationPage.test.jsx | 19 +- .../pathway/tests/PathwayModal.test.jsx | 11 +- .../pathway/tests/SearchPathwayCard.test.jsx | 11 +- .../search/tests/SearchCourseCard.test.jsx | 11 +- .../search/tests/SearchProgramCard.test.jsx | 11 +- .../tests/SkillsQuizStepper.test.jsx | 166 ++++++------------ 20 files changed, 268 insertions(+), 310 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index efb4e04ab4..5b2737cbbd 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -13,8 +13,5 @@ config.ignorePatterns = ['module.config.js']; config.rules.indent = ['error', 2, { ignoredNodes: ['TemplateLiteral', 'SwitchCase'] }]; config.rules['template-curly-spacing'] = 'off'; config.rules['import/prefer-default-export'] = 'off'; -config.overrides = [{ - files: ['*.test.jsx'], rules: { 'react/jsx-no-constructed-context-values': 'off' }, -}]; module.exports = config; diff --git a/src/components/app/LoginRefresh.test.jsx b/src/components/app/LoginRefresh.test.jsx index 3c07ed6435..0eb1b73783 100644 --- a/src/components/app/LoginRefresh.test.jsx +++ b/src/components/app/LoginRefresh.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import '@testing-library/jest-dom/extend-expect'; import { render, act } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; @@ -10,14 +10,14 @@ jest.mock('../../utils/common'); // eslint-disable-next-line react/prop-types function LoginRefreshWithContext({ roles = [] }) { + const contextValue = useMemo(() => ({ + authenticatedUser: { + userId: 1, + roles, + }, + }), [roles]); return ( - <AppContext.Provider value={{ - authenticatedUser: { - userId: 1, - roles, - }, - }} - > + <AppContext.Provider value={contextValue}> <LoginRefresh> <div>Hello!</div> </LoginRefresh> diff --git a/src/components/course/tests/LicenseRequestedAlert.test.jsx b/src/components/course/tests/LicenseRequestedAlert.test.jsx index c69e74a7e5..288025a97d 100644 --- a/src/components/course/tests/LicenseRequestedAlert.test.jsx +++ b/src/components/course/tests/LicenseRequestedAlert.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { render, fireEvent, waitFor } from '@testing-library/react'; import Cookies from 'universal-cookie'; import LicenseRequestedAlert from '../LicenseRequestedAlert'; @@ -27,28 +27,26 @@ const initialLicenseRequests = [ function LicenseRequestedAlertWrapper({ subscriptions = initialSubscriptions, licenseRequests = initialLicenseRequests, }) { + const contextValue = useMemo(() => ({ + couponCodes: { + couponCodes: [], + couponCodesCount: 0, + }, + subscriptionLicense: {}, + customerAgreementConfig: { + subscriptions, + }, + }), [subscriptions]); + const requestContextValue = useMemo(() => ({ + subsidyRequestConfiguration: null, + requestsBySubsidyType: { + [SUBSIDY_TYPE.LICENSE]: licenseRequests, + [SUBSIDY_TYPE.COUPON]: [], + }, + }), [licenseRequests]); return ( - <UserSubsidyContext.Provider value={{ - couponCodes: { - couponCodes: [], - couponCodesCount: 0, - }, - subscriptionLicense: {}, - customerAgreementConfig: { - subscriptions, - }, - }} - > - <SubsidyRequestsContext.Provider value={ - { - subsidyRequestConfiguration: null, - requestsBySubsidyType: { - [SUBSIDY_TYPE.LICENSE]: licenseRequests, - [SUBSIDY_TYPE.COUPON]: [], - }, - } - } - > + <UserSubsidyContext.Provider value={contextValue}> + <SubsidyRequestsContext.Provider value={requestContextValue}> <CourseContext.Provider> <LicenseRequestedAlert catalogList={[mockCatalogUUID]} /> </CourseContext.Provider> diff --git a/src/components/course/tests/SubsidyRequestButton.test.jsx b/src/components/course/tests/SubsidyRequestButton.test.jsx index e66e231f0e..6106c9cf33 100644 --- a/src/components/course/tests/SubsidyRequestButton.test.jsx +++ b/src/components/course/tests/SubsidyRequestButton.test.jsx @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, render, fireEvent, waitFor, } from '@testing-library/react'; @@ -57,10 +57,13 @@ function SubsidyRequestButtonWrapper({ subsidyRequestsState = {}, courseState = {}, }) { + const requestContextValue = useMemo(() => ( + { ...initialSubsidyRequestsState, ...subsidyRequestsState }), [subsidyRequestsState]); + const courseContextValue = useMemo(() => ({ ...initialCourseState, ...courseState }), [courseState]); return ( <ToastsContext.Provider value={initialToastsState}> - <SubsidyRequestsContext.Provider value={{ ...initialSubsidyRequestsState, ...subsidyRequestsState }}> - <CourseContext.Provider value={{ ...initialCourseState, ...courseState }}> + <SubsidyRequestsContext.Provider value={requestContextValue}> + <CourseContext.Provider value={courseContextValue}> <SubsidyRequestButton enterpriseSlug={mockEnterpriseSlug} /> </CourseContext.Provider> </SubsidyRequestsContext.Provider> diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx index c5c1361420..269d706c63 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx @@ -1,4 +1,5 @@ -import React from 'react'; +import React, { useMemo } from 'react'; +import PropTypes from 'prop-types'; import { mount } from 'enzyme'; import { act } from 'react-dom/test-utils'; import { AppContext } from '@edx/frontend-platform/react'; @@ -8,6 +9,22 @@ import * as service from '../data/service'; jest.mock('../data/service'); +function ModalWrapper({ initialProps, enterpriseConfig }) { + const contextValue = useMemo(() => ({ enterpriseConfig }), [enterpriseConfig]); + return ( + <AppContext.Provider value={contextValue}> + <MarkCompleteModal + {...initialProps} + /> + </AppContext.Provider> + ); +} + +ModalWrapper.propTypes = { + initialProps: PropTypes.shape({}).isRequired, + enterpriseConfig: PropTypes.shape({}).isRequired, +}; + describe('<MarkCompleteModal />', () => { const initialProps = { isOpen: true, @@ -30,13 +47,7 @@ describe('<MarkCompleteModal />', () => { course_run_status: 'completed', }, })); - const wrapper = mount(( - <AppContext.Provider value={{ enterpriseConfig }}> - <MarkCompleteModal - {...initialProps} - /> - </AppContext.Provider> - )); + const wrapper = mount(<ModalWrapper initialProps={initialProps} enterpriseConfig={enterpriseConfig} />); wrapper.find('.confirm-mark-complete-btn').hostNodes().simulate('click'); expect(service.updateCourseCompleteStatusRequest).toBeCalledWith({ course_id: initialProps.courseId, @@ -50,13 +61,7 @@ describe('<MarkCompleteModal />', () => { // eslint-disable-next-line no-import-assign service.markCourseAsCompleteRequest = jest.fn() .mockImplementation(() => Promise.reject(new Error('test error'))); - const wrapper = mount(( - <AppContext.Provider value={{ enterpriseConfig }}> - <MarkCompleteModal - {...initialProps} - /> - </AppContext.Provider> - )); + const wrapper = mount(<ModalWrapper initialProps={initialProps} enterpriseConfig={enterpriseConfig} />); await act(async () => { wrapper.find('.confirm-mark-complete-btn').hostNodes().simulate('click'); }); @@ -70,14 +75,10 @@ describe('<MarkCompleteModal />', () => { it('handles close modal', () => { const mockOnClose = jest.fn(); - const wrapper = mount(( - <AppContext.Provider value={{ enterpriseConfig }}> - <MarkCompleteModal - {...initialProps} - onClose={mockOnClose} - /> - </AppContext.Provider> - )); + initialProps.onClose = mockOnClose; + const wrapper = mount( + <ModalWrapper initialProps={initialProps} enterpriseConfig={enterpriseConfig} />, + ); act(() => { wrapper.find('.modal-footer button.btn-link').hostNodes().simulate('click'); }); diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx index 40bdcc4601..fa4357348a 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx @@ -1,4 +1,5 @@ -import React from 'react'; +import React, { useMemo } from 'react'; +import PropTypes from 'prop-types'; import { mount } from 'enzyme'; import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { AppContext } from '@edx/frontend-platform/react'; @@ -20,24 +21,59 @@ const enterpriseConfig = { name: 'test-enterprise-name', }; -describe('<BaseCourseCard />', () => { - let wrapper; +function CourseCardWrapper({ isLoading }) { + const contextValue = useMemo(() => ({ enterpriseConfig }), []); + return ( + <AppContext.Provider value={contextValue}> + <BaseCourseCard + type="completed" + title="edX Demonstration Course" + linkToCourse="https://edx.org" + courseRunId="my+course+key" + hasEmailsEnabled + isLoading={isLoading} + /> + </AppContext.Provider> + ); +} +CourseCardWrapper.defaultProps = { + isLoading: false, +}; - describe('email settings modal', () => { - beforeEach(() => { - jest.clearAllMocks(); +CourseCardWrapper.propTypes = { + isLoading: PropTypes.bool, +}; - wrapper = mount(( - <AppContext.Provider value={{ enterpriseConfig }}> +function CourseEnrollmentWrapper() { + const contextValue = useMemo(() => ({ enterpriseConfig }), []); + const toastContextValue = useMemo(() => ({ addToast: jest.fn() }), []); + const enrollmentContextValue = useMemo(() => ({ removeCourseEnrollment: jest.fn() }), []); + return ( + <AppContext.Provider value={contextValue}> + <ToastsContext.Provider value={toastContextValue}> + <CourseEnrollmentsContext.Provider value={enrollmentContextValue}> <BaseCourseCard - type="completed" + type="in_progress" title="edX Demonstration Course" linkToCourse="https://edx.org" courseRunId="my+course+key" + canUnenroll hasEmailsEnabled /> - </AppContext.Provider> - )); + </CourseEnrollmentsContext.Provider> + </ToastsContext.Provider> + </AppContext.Provider> + ); +} + +describe('<BaseCourseCard />', () => { + let wrapper; + + describe('email settings modal', () => { + beforeEach(() => { + jest.clearAllMocks(); + + wrapper = mount(<CourseCardWrapper />); // open email settings modal wrapper.find('Dropdown').find('button.btn-icon').simulate('click'); wrapper.find('Dropdown').find('button.dropdown-item').simulate('click'); @@ -51,27 +87,10 @@ describe('<BaseCourseCard />', () => { }); describe('unenroll modal', () => { - const mockAddToast = jest.fn(); - beforeEach(() => { jest.clearAllMocks(); - wrapper = mount(( - <AppContext.Provider value={{ enterpriseConfig }}> - <ToastsContext.Provider value={{ addToast: mockAddToast }}> - <CourseEnrollmentsContext.Provider value={{ removeCourseEnrollment: jest.fn() }}> - <BaseCourseCard - type="in_progress" - title="edX Demonstration Course" - linkToCourse="https://edx.org" - courseRunId="my+course+key" - canUnenroll - hasEmailsEnabled - /> - </CourseEnrollmentsContext.Provider> - </ToastsContext.Provider> - </AppContext.Provider> - )); + wrapper = mount(<CourseEnrollmentWrapper />); // open unenroll modal wrapper.find('Dropdown').find('button.btn-icon').simulate('click'); wrapper.find('Dropdown').find('button.dropdown-item').at(1).simulate('click'); @@ -85,18 +104,7 @@ describe('<BaseCourseCard />', () => { }); it('should render Skeleton if isLoading = true', () => { - wrapper = mount(( - <AppContext.Provider value={{ enterpriseConfig }}> - <BaseCourseCard - type="completed" - title="edX Demonstration Course" - linkToCourse="https://edx.org" - courseRunId="my+course+key" - hasEmailsEnabled - isLoading - /> - </AppContext.Provider> - )); + wrapper = mount(<CourseCardWrapper isLoading />); expect(wrapper.find(Skeleton)).toBeTruthy(); }); diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx index 25237caaa9..d1687497eb 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx @@ -1,6 +1,7 @@ import { render, screen, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import '@testing-library/jest-dom/extend-expect'; +import { useMemo } from 'react'; import { COURSE_STATUSES } from '../../../../../../constants'; import { unenrollFromCourse } from './data'; @@ -39,8 +40,9 @@ function UnenrollModalWrapper({ courseEnrollmentsContextValue = defaultCourseEnrollmentsContextValue, ...props }) { + const contextValue = useMemo(() => ({ addToast: mockAddToast }), []); return ( - <ToastsContext.Provider value={{ addToast: mockAddToast }}> + <ToastsContext.Provider value={contextValue}> <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> <UnenrollModal {...props} /> </CourseEnrollmentsContext.Provider> diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx index d4c1797e83..8e12fd4086 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { render, screen, fireEvent, act, waitFor, @@ -58,15 +58,19 @@ hooks.useCourseEnrollments.mockReturnValue({ updateCourseEnrollmentStatus: jest.fn(), }); -const renderEnrollmentsComponent = () => render( - <AppContext.Provider value={{ enterpriseConfig }}> - <SubsidyRequestsContext.Provider value={{ isLoading: false }}> - <CourseEnrollmentsContextProvider> - <CourseEnrollments /> - </CourseEnrollmentsContextProvider> - </SubsidyRequestsContext.Provider> - </AppContext.Provider>, -); +function RenderEnrollmentsComponent() { + const contextValue = useMemo(() => ({ enterpriseConfig }), []); + const requestsContextValue = useMemo(() => ({ isLoading: false }), []); + return ( + <AppContext.Provider value={contextValue}> + <SubsidyRequestsContext.Provider value={requestsContextValue}> + <CourseEnrollmentsContextProvider> + <CourseEnrollments /> + </CourseEnrollmentsContextProvider> + </SubsidyRequestsContext.Provider> + </AppContext.Provider> + ); +} describe('Course enrollments', () => { beforeEach(() => { @@ -78,7 +82,7 @@ describe('Course enrollments', () => { }); it('renders course sections', () => { - renderEnrollmentsComponent(); + render(<RenderEnrollmentsComponent />); expect(screen.getByText(COURSE_SECTION_TITLES.current)); expect(screen.getByText(COURSE_SECTION_TITLES.completed)); expect(screen.getByText(COURSE_SECTION_TITLES.savedForLater)); @@ -86,7 +90,7 @@ describe('Course enrollments', () => { }); it('generates course status update on move to in progress action', async () => { - const { getByText } = renderEnrollmentsComponent(); + const { getByText } = render(<RenderEnrollmentsComponent />); await act(async () => { fireEvent.click(screen.getByRole('button', { name: MARK_MOVE_TO_IN_PROGRESS_DEFAULT_LABEL })); }); @@ -100,7 +104,7 @@ describe('Course enrollments', () => { }); it('generates course status update on move to saved for later action', async () => { - const { getByText } = renderEnrollmentsComponent(); + const { getByText } = render(<RenderEnrollmentsComponent />); await act(async () => { fireEvent.click(screen.getByRole('button', { name: MARK_SAVED_FOR_LATER_DEFAULT_LABEL })); }); @@ -110,7 +114,7 @@ describe('Course enrollments', () => { }); it('renders in progress, upcoming, and requested course enrollments in the same section', async () => { - renderEnrollmentsComponent(); + render(<RenderEnrollmentsComponent />); const currentCourses = screen.getByText(COURSE_SECTION_TITLES.current).closest('.course-section'); expect(within(currentCourses).getByText(inProgCourseRun.title)); expect(within(currentCourses).getByText(upcomingCourseRun.title)); @@ -144,7 +148,7 @@ describe('Course enrollments', () => { }, }); - renderEnrollmentsComponent({ + render(<RenderEnrollmentsComponent />, { isSubsidyRequestsEnabled: false, }); diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx index af46b61e4a..fcff21eb44 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx @@ -4,6 +4,7 @@ import { render, screen, fireEvent, } from '@testing-library/react'; import * as frontendEnterpriseUtils from '@edx/frontend-enterprise-utils'; +import { useMemo } from 'react'; import CourseSection from '../CourseSection'; import { createCourseEnrollmentWithStatus } from './enrollment-testutils'; @@ -33,13 +34,13 @@ const CARD_COMPONENT_BY_COURSE_STATUS = { const TEST_ENTERPRISE_UUID = 'test-uuid'; function CourseSectionWrapper(props) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { + uuid: TEST_ENTERPRISE_UUID, + }, + }), []); return ( - <AppContext.Provider value={{ - enterpriseConfig: { - uuid: TEST_ENTERPRISE_UUID, - }, - }} - > + <AppContext.Provider value={contextValue}> <CourseSection {...props} /> diff --git a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx index 4de2d6f8bb..f1dcd9b465 100644 --- a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx +++ b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import '@testing-library/jest-dom/extend-expect'; import { screen, render } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; @@ -9,6 +9,22 @@ jest.mock('react-router-dom', () => ({ useLocation: jest.fn(), })); +function BannerWrapper() { + const contextValue = useMemo(() => ({ + enterpriseConfig: { + slug: 'slug', + uuid: 'uuid', + }, + }), []); + return ( + <AppContext.Provider + value={contextValue} + > + <EnterpriseBanner /> + </AppContext.Provider> + ); +} + describe('<EnterpriseBanner />', () => { afterAll(() => { jest.restoreAllMocks(); @@ -19,18 +35,7 @@ describe('<EnterpriseBanner />', () => { pathname: '/slug/search', })); - render( - <AppContext.Provider - value={{ - enterpriseConfig: { - slug: 'slug', - uuid: 'uuid', - }, - }} - > - <EnterpriseBanner /> - </AppContext.Provider>, - ); + render(<BannerWrapper />); expect(screen.getByText('Recommend courses for me')); }); diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx index 8c80b2eb9d..c1220e13fb 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, render } from '@testing-library/react'; import '@testing-library/jest-dom/extend-expect'; import { AppContext } from '@edx/frontend-platform/react'; @@ -16,11 +16,11 @@ function EnterpriseOffersBalanceAlertWrapper({ }, hasNoEnterpriseOffersBalance, }) { + const contextValue = useMemo(() => ({ + enterpriseConfig, + }), [enterpriseConfig]); return ( - <AppContext.Provider value={{ - enterpriseConfig, - }} - > + <AppContext.Provider value={contextValue}> <EnterpriseOffersBalanceAlert hasNoEnterpriseOffersBalance={hasNoEnterpriseOffersBalance} /> diff --git a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx index a4cb6fb4b8..b625d4cc26 100644 --- a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { Route } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -13,10 +13,12 @@ const initialPathname = `/${TEST_ENTERPRISE_SLUG}`; // eslint-disable-next-line react/prop-types function AutoActivateLicenseWrapper({ subscriptionLicense }) { + const contextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG } }), []); + const subsidyContextValue = useMemo(() => ({ subscriptionLicense }), [subscriptionLicense]); return ( <Route path={initialPathname} exact> - <AppContext.Provider value={{ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG } }}> - <UserSubsidyContext.Provider value={{ subscriptionLicense }}> + <AppContext.Provider value={contextValue}> + <UserSubsidyContext.Provider value={subsidyContextValue}> <AutoActivateLicense /> </UserSubsidyContext.Provider> </AppContext.Provider> diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 26dbc291a4..0d768ebcca 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -1,4 +1,4 @@ -import React, { useContext } from 'react'; +import React, { useContext, useMemo } from 'react'; import moment from 'moment'; import { screen, waitFor } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; @@ -67,18 +67,17 @@ function UserSubsidyWithAppContext({ authenticatedUser = TEST_USER, children, }) { + const appContextValue = useMemo(() => ({ + enterpriseConfig: { + slug: TEST_ENTERPRISE_SLUG, + uuid: TEST_ENTERPRISE_UUID, + ...enterpriseConfig, + }, + authenticatedUser, + ...contextValue, + }), [authenticatedUser, contextValue, enterpriseConfig]); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { - slug: TEST_ENTERPRISE_SLUG, - uuid: TEST_ENTERPRISE_UUID, - ...enterpriseConfig, - }, - authenticatedUser, - ...contextValue, - }} - > + <AppContext.Provider value={appContextValue}> <UserSubsidy> {children} </UserSubsidy> diff --git a/src/components/license-activation/tests/LicenseActivation.test.jsx b/src/components/license-activation/tests/LicenseActivation.test.jsx index a61dfe6fab..6b1800df40 100644 --- a/src/components/license-activation/tests/LicenseActivation.test.jsx +++ b/src/components/license-activation/tests/LicenseActivation.test.jsx @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, waitFor } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -26,16 +26,15 @@ function LicenseActivationWithAppContext({ activateUserLicense: jest.fn(() => true), }, }) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { + uuid: TEST_ENTERPRISE_UUID, + slug: TEST_ENTERPRISE_SLUG, + name: 'Test Enterprise', + }, + }), []); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { - uuid: TEST_ENTERPRISE_UUID, - slug: TEST_ENTERPRISE_SLUG, - name: 'Test Enterprise', - }, - }} - > + <AppContext.Provider value={contextValue}> <UserSubsidyContext.Provider value={initialUserSubsidyState}> <Route exact path="/:enterpriseSlug/licenses/:activationKey/activate"> <LicenseActivation /> diff --git a/src/components/license-activation/tests/LicenseActivationPage.test.jsx b/src/components/license-activation/tests/LicenseActivationPage.test.jsx index be4381dcf4..496983d980 100644 --- a/src/components/license-activation/tests/LicenseActivationPage.test.jsx +++ b/src/components/license-activation/tests/LicenseActivationPage.test.jsx @@ -1,5 +1,5 @@ /* eslint-disable react/prop-types */ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -44,16 +44,15 @@ function LicenseActivationPageWithContext({ }, }, }) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { + uuid: TEST_ENTERPRISE_UUID, + slug: TEST_ENTERPRISE_SLUG, + name: 'Test Enterprise', + }, + }), []); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { - uuid: TEST_ENTERPRISE_UUID, - slug: TEST_ENTERPRISE_SLUG, - name: 'Test Enterprise', - }, - }} - > + <AppContext.Provider value={contextValue}> <UserSubsidyContext.Provider value={initialUserSubsidyState}> <Route exact path="/:enterpriseSlug/licenses/:activationKey/activate"> <LicenseActivationPage /> diff --git a/src/components/pathway/tests/PathwayModal.test.jsx b/src/components/pathway/tests/PathwayModal.test.jsx index e3b33c18df..1e8eec394c 100644 --- a/src/components/pathway/tests/PathwayModal.test.jsx +++ b/src/components/pathway/tests/PathwayModal.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, fireEvent } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -27,12 +27,11 @@ jest.mock('react-loading-skeleton', () => ({ })); function PathwayModalWithAppContext(props) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, + }), []); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, - }} - > + <AppContext.Provider value={contextValue}> <PathwayModal {...props} /> </AppContext.Provider> ); diff --git a/src/components/pathway/tests/SearchPathwayCard.test.jsx b/src/components/pathway/tests/SearchPathwayCard.test.jsx index ae91dbf180..d87321c377 100644 --- a/src/components/pathway/tests/SearchPathwayCard.test.jsx +++ b/src/components/pathway/tests/SearchPathwayCard.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, fireEvent } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -29,12 +29,11 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); function SearchPathwayCardWithAppContext(props) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, + }), []); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, - }} - > + <AppContext.Provider value={contextValue}> <SearchPathwayCard {...props} /> </AppContext.Provider> ); diff --git a/src/components/search/tests/SearchCourseCard.test.jsx b/src/components/search/tests/SearchCourseCard.test.jsx index 0f3eebb867..63a186c03f 100644 --- a/src/components/search/tests/SearchCourseCard.test.jsx +++ b/src/components/search/tests/SearchCourseCard.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -20,12 +20,11 @@ jest.mock('react-loading-skeleton', () => ({ })); function SearchCourseCardWithAppContext(props) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, + }), []); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, - }} - > + <AppContext.Provider value={contextValue}> <SearchCourseCard {...props} /> </AppContext.Provider> ); diff --git a/src/components/search/tests/SearchProgramCard.test.jsx b/src/components/search/tests/SearchProgramCard.test.jsx index ce66a83d47..d48712f239 100644 --- a/src/components/search/tests/SearchProgramCard.test.jsx +++ b/src/components/search/tests/SearchProgramCard.test.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { screen, fireEvent } from '@testing-library/react'; import { AppContext } from '@edx/frontend-platform/react'; import '@testing-library/jest-dom/extend-expect'; @@ -31,12 +31,11 @@ jest.mock('@edx/frontend-enterprise-utils', () => ({ })); function SearchProgramCardWithAppContext(props) { + const contextValue = useMemo(() => ({ + enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, + }), []); return ( - <AppContext.Provider - value={{ - enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, - }} - > + <AppContext.Provider value={contextValue}> <SearchProgramCard {...props} /> </AppContext.Provider> ); diff --git a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx index 58acd25c27..560e4b8d7a 100644 --- a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx +++ b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx @@ -1,4 +1,5 @@ -import React from 'react'; +import React, { useMemo } from 'react'; +import PropTypes from 'prop-types'; import '@testing-library/jest-dom/extend-expect'; import userEvent from '@testing-library/user-event'; import { screen, act } from '@testing-library/react'; @@ -68,6 +69,49 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; +function SkillsQuizStepperWrapper({ searchContext, skillsQuizContextState }) { + const contextValue = useMemo(() => ({ ...searchContext }), [searchContext]); + const skillContextProvider = skillsQuizContextState ? ( + <SkillsContext.Provider value={skillsQuizContextState}> + <SkillsQuizStepper /> + </SkillsContext.Provider> + ) : ( + <SkillsContextProvider> + <SkillsQuizStepper /> + </SkillsContextProvider> + ); + + const searchContextProvider = searchContext ? ( + <SearchContext.Provider value={contextValue}> + {skillContextProvider} + </SearchContext.Provider> + ) : ( + <SearchData> + {skillContextProvider} + </SearchData> + ); + return ( + <AppContext.Provider value={defaultAppState}> + <UserSubsidyContext.Provider value={defaultUserSubsidyState}> + <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> + <SearchContext.Provider value={contextValue}> + {searchContextProvider} + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + ); +} +SkillsQuizStepperWrapper.defaultProps = { + searchContext: null, + skillsQuizContextState: null, +}; + +SkillsQuizStepperWrapper.propTypes = { + searchContext: PropTypes.shape({}), + skillsQuizContextState: PropTypes.shape({}), +}; + describe('<SkillsQuizStepper />', () => { afterAll(() => { jest.restoreAllMocks(); @@ -80,17 +124,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContextProvider> - <SkillsQuizStepper /> - </SkillsContextProvider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} />, { route: '/test/skills-quiz/' }, ); expect(screen.queryByText(GOAL_DROPDOWN_DEFAULT_OPTION)).toBeInTheDocument(); @@ -112,17 +146,7 @@ describe('<SkillsQuizStepper />', () => { }; const { getByAltText } = renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContextProvider> - <SkillsQuizStepper /> - </SkillsContextProvider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} />, { route: '/test/skills-quiz/' }, ); expect(screen.getByText('Skills Builder')).toBeTruthy(); @@ -138,17 +162,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContextProvider> - <SkillsQuizStepper /> - </SkillsContextProvider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} />, { route: '/test/skills-quiz/' }, ); expect(screen.getByText('Continue').disabled).toBeTruthy(); @@ -161,17 +175,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContextProvider> - <SkillsQuizStepper /> - </SkillsContextProvider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} />, { route: '/test/skills-quiz/' }, ); expect(screen.getByText('Continue').disabled).toBeFalsy(); @@ -187,17 +191,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContext.Provider value={skillsQuizContextInitialState}> - <SkillsQuizStepper /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} skillsQuizContextState={skillsQuizContextInitialState} />, { route: '/test/skills-quiz/' }, ); expect(screen.getByText(DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE)).toBeInTheDocument(); @@ -214,17 +208,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContext.Provider value={skillsQuizContextInitialState}> - <SkillsQuizStepper /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} skillsQuizContextState={skillsQuizContextInitialState} />, { route: '/test/skills-quiz/' }, ); expect(screen.getByText(DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE)).toBeInTheDocument(); @@ -241,17 +225,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContext.Provider value={skillsQuizContextInitialState}> - <SkillsQuizStepper /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} skillsQuizContextState={skillsQuizContextInitialState} />, { route: '/test/skills-quiz/' }, ); expect(screen.queryByText(GOAL_DROPDOWN_DEFAULT_OPTION)).toBeInTheDocument(); @@ -267,17 +241,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={searchContext}> - <SkillsContextProvider> - <SkillsQuizStepper /> - </SkillsContextProvider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} />, { route: '/test/skills-quiz/' }, ); expect(screen.queryByText(GOAL_DROPDOWN_DEFAULT_OPTION)).toBeInTheDocument(); @@ -322,17 +286,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={{ ...searchContext }}> - <SkillsContextProvider> - <SkillsQuizStepper /> - </SkillsContextProvider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper searchContext={searchContext} />, { route: '/test/skills-quiz/' }, ); @@ -378,17 +332,7 @@ describe('<SkillsQuizStepper />', () => { }; renderWithRouter( - <AppContext.Provider value={defaultAppState}> - <UserSubsidyContext.Provider value={defaultUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchData> - <SkillsContext.Provider value={skillsQuizContextInitialState}> - <SkillsQuizStepper /> - </SkillsContext.Provider> - </SearchData> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider>, + <SkillsQuizStepperWrapper skillsQuizContextState={skillsQuizContextInitialState} />, { route: '/test/skills-quiz/?skill_names=xyz' }, ); const isStudentCheckbox = screen.getByTestId('is-student-checkbox'); From 9e4a052401b44394893dddceb8c2aee1bdea6b4a Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Fri, 28 Oct 2022 12:12:29 +0500 Subject: [PATCH 12/13] refactor: updated frontend-build & resolved eslint issues --- package-lock.json | 2395 ++++++++--------- package.json | 2 +- src/components/NotFoundPage/index.jsx | 4 +- src/components/TagCloud/index.jsx | 34 +- src/components/Toasts/ToastsProvider.jsx | 4 +- src/components/app/App.jsx | 6 +- src/components/app/AuthenticatedPage.jsx | 6 +- .../app/AuthenticatedUserSubsidyPage.jsx | 24 +- .../app/EnterpriseAppPageRoutes.jsx | 50 +- src/components/app/LoginRefresh.jsx | 4 +- src/components/app/LoginRefresh.test.jsx | 4 +- src/components/contact-admin-mailto/index.jsx | 6 +- .../course/CourseAssociatedPrograms.jsx | 6 +- .../course/CourseContextProvider.jsx | 4 +- .../course/CourseEnrollmentFailedAlert.jsx | 4 +- src/components/course/CourseHeader.jsx | 6 +- src/components/course/CourseMainContent.jsx | 6 +- src/components/course/CoursePage.jsx | 6 +- .../course/CourseRecommendationCard.jsx | 4 +- .../course/CourseRecommendations.jsx | 4 +- src/components/course/CourseRunCard.jsx | 18 +- src/components/course/CourseRunCards.jsx | 4 +- src/components/course/CourseSidebar.jsx | 6 +- .../course/CourseSidebarListItem.jsx | 28 +- src/components/course/CourseSidebarPrice.jsx | 4 +- src/components/course/CourseSkills.jsx | 6 +- src/components/course/CreatedBy.jsx | 6 +- src/components/course/EnrollModal.jsx | 6 +- .../course/LicenseRequestedAlert.jsx | 4 +- .../course/SubsidyRequestButton.jsx | 2 +- src/components/course/VerifiedCertPitch.jsx | 74 +- .../course/enrollment/EnrollAction.jsx | 4 +- src/components/course/enrollment/common.jsx | 30 +- .../enrollment/components/DisabledEnroll.jsx | 16 +- .../components/ToCoursewarePage.jsx | 6 +- .../components/ToDataSharingConsent.jsx | 2 +- .../components/ToEcomBasketPage.jsx | 4 +- .../enrollment/components/ViewOnDashboard.jsx | 4 +- .../enrollment/tests/EnrollAction.test.jsx | 7 +- .../tests/ToEcomBasketPage.test.jsx | 22 +- .../course/enrollment/tests/hooks.test.jsx | 22 +- .../tests/CourseAssociatedPrograms.test.jsx | 18 +- .../tests/CourseContextProvider.test.jsx | 18 +- .../CourseEnrollmentFailedAlert.test.jsx | 18 +- .../course/tests/CourseHeader.test.jsx | 30 +- .../tests/CourseRecommendationCard.test.jsx | 12 +- .../tests/CourseRecommendations.test.jsx | 16 +- .../course/tests/CourseRunCard.test.jsx | 15 +- .../course/tests/CourseSidebarPrice.test.jsx | 26 +- .../course/tests/CourseSkills.test.jsx | 22 +- .../course/tests/CreatedBy.test.jsx | 16 +- .../tests/LicenseRequestedAlert.test.jsx | 6 +- .../tests/SubsidyRequestButton.test.jsx | 25 +- src/components/dashboard/DashboardPage.jsx | 6 +- .../dashboard/SubscriptionExpirationModal.jsx | 4 +- .../main-content/DashboardMainContent.jsx | 4 +- .../course-enrollments/CollapsibleIcon.jsx | 16 +- .../course-enrollments/CourseEnrollments.jsx | 4 +- .../CourseEnrollmentsAlert.jsx | 6 +- .../CourseEnrollmentsContextProvider.jsx | 4 +- ...adeableCourseEnrollmentContextProvider.jsx | 4 +- .../course-cards/CompletedCourseCard.jsx | 4 +- .../course-cards/ContinueLearningButton.jsx | 8 +- .../course-cards/InProgressCourseCard.jsx | 6 +- .../course-cards/Notification.jsx | 50 +- .../course-cards/RequestedCourseCard.jsx | 16 +- .../course-cards/SavedForLaterCourseCard.jsx | 4 +- .../course-cards/UpcomingCourseCard.jsx | 4 +- .../course-cards/UpgradeCourseButton.jsx | 8 +- .../mark-complete-modal/MarkCompleteModal.jsx | 6 +- .../mark-complete-modal/ModalBody.jsx | 4 +- .../mark-complete-modal/ModalError.jsx | 4 +- .../tests/MarkCompleteModal.test.jsx | 4 +- .../move-to-in-progress-modal/ModalBody.jsx | 4 +- .../move-to-in-progress-modal/ModalError.jsx | 4 +- .../MoveToInProgressModal.jsx | 6 +- .../tests/BaseCourseCard.test.jsx | 8 +- .../tests/InProgressCourseCard.test.jsx | 26 +- .../course-cards/unenroll/UnenrollModal.jsx | 8 +- .../unenroll/UnenrollModal.test.jsx | 6 +- .../tests/CourseEnrollments.test.jsx | 4 +- .../tests/CourseSection.test.jsx | 4 +- .../sidebar/CouponCodesSummaryCard.jsx | 6 +- .../dashboard/sidebar/DashboardSidebar.jsx | 22 +- .../sidebar/EnterpriseOffersSummaryCard.jsx | 2 +- .../dashboard/sidebar/SidebarCard.jsx | 24 +- .../sidebar/SubscriptionSummaryCard.jsx | 6 +- .../dashboard/sidebar/SubsidiesSummary.jsx | 82 +- .../dashboard/sidebar/SupportInformation.jsx | 4 +- .../sidebar/tests/DashboardSidebar.test.jsx | 26 +- .../tests/SubscriptionSummaryCard.test.jsx | 16 +- .../dashboard/tests/DashboardPage.test.jsx | 30 +- .../enterprise-banner/EnterpriseBanner.jsx | 6 +- .../tests/EnterpriseBanner.test.jsx | 4 +- .../EnterpriseInvitePage.jsx | 4 +- .../enterprise-page/EnterprisePage.jsx | 6 +- .../enterprise-page/EnterprisePage.test.jsx | 4 +- .../EnterpriseCustomerRedirect.jsx | 4 +- .../EnterprisePageRedirect.jsx | 4 +- .../tests/EnterpriseCustomerRedirect.test.jsx | 14 +- .../tests/EnterprisePageRedirect.test.jsx | 14 +- .../SubsidyRequestsContextProvider.jsx | 4 +- .../SubsidyRequestsContextProvider.test.jsx | 22 +- .../AutoActivateLicense.jsx | 4 +- .../enterprise-user-subsidy/UserSubsidy.jsx | 4 +- .../EnterpriseOffersBalanceAlert.jsx | 4 +- .../EnterpriseOffersBalanceAlert.test.jsx | 6 +- .../tests/AutoActivateLicense.test.jsx | 4 +- .../tests/UserSubsidy.test.jsx | 14 +- src/components/error-page/ErrorPage.jsx | 38 +- .../error-page/ErrorPageContent.jsx | 12 +- src/components/error-page/ErrorPageHeader.jsx | 4 +- .../error-page/ErrorPageSubtitle.jsx | 4 +- src/components/error-page/ErrorPageTitle.jsx | 4 +- .../ExecutiveEducation2UError.jsx | 4 +- .../ExecutiveEducation2UPage.jsx | 4 +- .../ExecutiveEducation2UPage.test.jsx | 14 +- .../FormSectionHeading.jsx | 4 +- .../UserEnrollmentForm.jsx | 6 +- .../UserEnrollmentForm.test.jsx | 22 +- .../IntegrationWarningModal.jsx | 6 +- .../integration-warning-modal/ModalBody.jsx | 20 +- src/components/layout/Layout.jsx | 6 +- src/components/layout/MainContent.jsx | 12 +- src/components/layout/SidebarBlock.jsx | 6 +- .../license-activation/LicenseActivation.jsx | 4 +- .../LicenseActivationErrorAlert.jsx | 26 +- .../LicenseActivationPage.jsx | 4 +- .../tests/LicenseActivation.test.jsx | 6 +- .../tests/LicenseActivationPage.test.jsx | 6 +- .../loading-spinner/LoadingSpinner.jsx | 14 +- .../pathway-progress/PathwayNode.jsx | 4 +- .../pathway-progress/PathwayProgressCard.jsx | 4 +- .../PathwayProgressContextProvider.jsx | 12 +- .../PathwayProgressHeader.jsx | 4 +- .../PathwayProgressListingPage.jsx | 44 +- .../pathway-progress/PathwayProgressPage.jsx | 6 +- .../pathway-progress/PathwayRequirements.jsx | 6 +- .../pathway-progress/PathwayStep.jsx | 4 +- .../SubscriptionStatusCard.jsx | 4 +- .../tests/PathwayProgressListingCard.test.jsx | 16 +- .../tests/PathwayProgressListingPage.test.jsx | 22 +- src/components/pathway/PathwayModal.jsx | 8 +- src/components/pathway/SearchPathwayCard.jsx | 8 +- .../pathway/tests/PathwayModal.test.jsx | 4 +- .../pathway/tests/SearchPathwayCard.test.jsx | 4 +- .../preview-expand/PreviewExpand.jsx | 8 +- .../CouponCodesWarningModal.jsx | 4 +- .../program-progress/ProgramListingCard.jsx | 4 +- .../program-progress/ProgramListingPage.jsx | 34 +- .../ProgramPathwayOpportunity.jsx | 54 +- .../program-progress/ProgramProgress.jsx | 14 +- .../ProgramProgressCircle.jsx | 10 +- .../ProgramProgressContextProvider.jsx | 12 +- .../ProgramProgressCourses.jsx | 4 +- .../ProgramProgressHeader.jsx | 4 +- .../program-progress/ProgramProgressPage.jsx | 4 +- .../ProgramProgressRedirect.jsx | 4 +- .../ProgramProgressSidebar.jsx | 4 +- .../SubscriptionExpiringWarningModal.jsx | 6 +- .../tests/ProgramListingCard.test.jsx | 16 +- .../tests/ProgramListingPage.test.jsx | 22 +- .../tests/ProgramProgressCircle.test.jsx | 14 +- .../tests/ProgramProgressCourses.test.jsx | 22 +- .../tests/ProgramProgressHeader.test.jsx | 14 +- .../tests/ProgramProgressSidebar.test.jsx | 14 +- src/components/program/BulletList.jsx | 20 +- src/components/program/ProgramCTA.jsx | 4 +- .../program/ProgramContextProvider.jsx | 12 +- src/components/program/ProgramCourses.jsx | 4 +- src/components/program/ProgramDataBar.jsx | 4 +- .../program/ProgramDataBarDetails.jsx | 4 +- .../program/ProgramEndorsements.jsx | 4 +- src/components/program/ProgramFAQ.jsx | 4 +- src/components/program/ProgramHeader.jsx | 4 +- src/components/program/ProgramInstructors.jsx | 8 +- src/components/program/ProgramMainContent.jsx | 4 +- src/components/program/ProgramPage.jsx | 4 +- src/components/program/ProgramSidebar.jsx | 4 +- .../program/ProgramSidebarListItem.jsx | 28 +- .../program/tests/ProgramCTA.test.jsx | 26 +- .../program/tests/ProgramCourses.test.jsx | 22 +- .../program/tests/ProgramDataBar.test.jsx | 20 +- .../tests/ProgramEndorsements.test.jsx | 22 +- .../program/tests/ProgramFAQ.test.jsx | 22 +- .../program/tests/ProgramHeader.test.jsx | 22 +- .../program/tests/ProgramInstructors.test.jsx | 12 +- .../program/tests/ProgramMainContent.test.jsx | 22 +- .../program/tests/ProgramPage.test.jsx | 22 +- .../program/tests/ProgramSidebar.test.jsx | 22 +- .../ProgressCategoryBubbles.jsx | 34 +- src/components/search/Search.jsx | 4 +- src/components/search/SearchCourse.jsx | 4 +- src/components/search/SearchCourseCard.jsx | 8 +- src/components/search/SearchError.jsx | 4 +- src/components/search/SearchNoResults.jsx | 4 +- src/components/search/SearchPathway.jsx | 4 +- src/components/search/SearchProgram.jsx | 4 +- src/components/search/SearchProgramCard.jsx | 8 +- src/components/search/SearchResults.jsx | 6 +- .../search/popular-results/PopularResults.jsx | 6 +- .../popular-results/PopularResultsIndex.jsx | 4 +- .../search/tests/SearchCourseCard.test.jsx | 4 +- .../search/tests/SearchProgramCard.test.jsx | 4 +- .../search/tests/SearchResults.test.jsx | 24 +- src/components/site-header/AvatarDropdown.jsx | 4 +- src/components/site-header/SiteHeader.jsx | 6 +- .../site-header/SiteHeaderLogos.jsx | 4 +- .../site-header/SiteHeaderNavMenu.jsx | 4 +- src/components/site-header/menu/Menu.jsx | 20 +- .../site-header/tests/SiteHeader.test.jsx | 14 +- .../skills-quiz/CardLoadingSkeleton.jsx | 64 +- src/components/skills-quiz/CourseCard.jsx | 6 +- .../skills-quiz/CurrentJobDropdown.jsx | 4 +- src/components/skills-quiz/GoalDropdown.jsx | 4 +- .../skills-quiz/JobCardComponent.jsx | 4 +- .../skills-quiz/SearchCourseCard.jsx | 4 +- .../skills-quiz/SearchCurrentJobCard.jsx | 4 +- src/components/skills-quiz/SearchJobCard.jsx | 4 +- .../skills-quiz/SearchJobDropdown.jsx | 4 +- src/components/skills-quiz/SearchPathways.jsx | 4 +- .../skills-quiz/SearchProgramCard.jsx | 4 +- src/components/skills-quiz/SelectJobCard.jsx | 4 +- .../skills-quiz/SelectedJobSkills.jsx | 4 +- .../skills-quiz/SkillsContextProvider.jsx | 4 +- src/components/skills-quiz/SkillsCourses.jsx | 4 +- src/components/skills-quiz/SkillsDropDown.jsx | 4 +- src/components/skills-quiz/SkillsQuiz.jsx | 4 +- .../skills-quiz/SkillsQuizHeader.jsx | 28 +- src/components/skills-quiz/SkillsQuizPage.jsx | 6 +- .../skills-quiz/SkillsQuizStepper.jsx | 4 +- .../skills-quiz/data/tests/service.test.jsx | 1 + .../skills-quiz/tests/GoalsDropdown.test.jsx | 22 +- .../tests/SearchCourseCard.test.jsx | 30 +- .../tests/SearchCurrentJobCard.test.jsx | 22 +- .../skills-quiz/tests/SearchJobCard.test.jsx | 22 +- .../skills-quiz/tests/SearchPathways.test.jsx | 30 +- .../tests/SearchProgramCard.test.jsx | 30 +- .../skills-quiz/tests/SelectJobCard.test.jsx | 22 +- .../tests/SelectedJobSkills.test.jsx | 22 +- .../skills-quiz/tests/SkillsCourses.test.jsx | 30 +- .../skills-quiz/tests/SkillsQuiz.test.jsx | 22 +- .../tests/SkillsQuizStepper.test.jsx | 4 +- .../SystemWideWarningBanner.jsx | 14 +- src/utils/tests.jsx | 4 +- 245 files changed, 2516 insertions(+), 2717 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea49a8923f..891bbe6d45 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "12.0.3", + "@edx/frontend-build": "12.3.0", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", @@ -261,9 +261,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -336,12 +336,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", - "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", + "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", "dev": true, "dependencies": { - "@babel/types": "^7.18.10", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" }, @@ -375,14 +375,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "engines": { @@ -402,14 +402,14 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.18.9", @@ -423,9 +423,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -439,9 +439,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.17.7", @@ -486,13 +486,13 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -535,19 +535,19 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -566,9 +566,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -593,28 +593,28 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -645,18 +645,18 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "engines": { "node": ">=6.9.0" } @@ -671,29 +671,29 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz", - "integrity": "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -713,9 +713,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz", - "integrity": "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", + "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -757,13 +757,13 @@ } }, "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", + "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -1284,12 +1284,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1299,16 +1299,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" @@ -1336,12 +1337,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1460,14 +1461,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1477,15 +1477,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" }, "engines": { "node": ">=6.9.0" @@ -1495,16 +1494,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, "dependencies": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" }, "engines": { "node": ">=6.9.0" @@ -1530,13 +1528,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1607,9 +1605,9 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz", - "integrity": "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz", + "integrity": "sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==", "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.9" @@ -1637,16 +1635,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", - "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.18.10" + "@babel/types": "^7.19.0" }, "engines": { "node": ">=6.9.0" @@ -1733,12 +1731,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" }, "engines": { @@ -1794,13 +1792,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz", - "integrity": "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", + "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-create-class-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-typescript": "^7.18.6" }, "engines": { @@ -2029,19 +2027,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz", - "integrity": "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", + "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", + "@babel/generator": "^7.19.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10", + "@babel/parser": "^7.19.6", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2050,13 +2048,13 @@ } }, "node_modules/@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2123,9 +2121,9 @@ } }, "node_modules/@edx/frontend-build": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.0.3.tgz", - "integrity": "sha512-q/BoMntXSXSXfSTUpr7G051jrqkAvEFRQHG4+R2rPMQX+Ok2FSE9HTa74kkEP2H2Ij6x5VHXhU5F1powu/x6Zw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.3.0.tgz", + "integrity": "sha512-GewVd5qD59d8hHZFnXyS5jWkDY8TWYENqO5dd+/Kmu7cmjKrp69PKmNyVs+QgZEADodYI5UT48A2LhsDZjDx7A==", "dev": true, "dependencies": { "@babel/cli": "7.16.0", @@ -2535,14 +2533,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", + "espree": "^9.4.0", "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -2552,6 +2550,9 @@ }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/argparse": { @@ -3675,13 +3676,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "node_modules/@newrelic/publish-sourcemap": { @@ -3863,9 +3864,9 @@ } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz", - "integrity": "sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.0.tgz", + "integrity": "sha512-Cp1JR1IPrQNvPRbkfcPmax52iunBC+eQDyBce8feOIIbVH6ZpVhErYoJtPWRBj2rKi4Wi9HvCm1+L1UD6QlBmg==", "dev": true, "engines": { "node": ">=10" @@ -3879,9 +3880,9 @@ } }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz", - "integrity": "sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz", + "integrity": "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==", "dev": true, "engines": { "node": ">=10" @@ -3895,9 +3896,9 @@ } }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz", - "integrity": "sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz", + "integrity": "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==", "dev": true, "engines": { "node": ">=10" @@ -3911,9 +3912,9 @@ } }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz", - "integrity": "sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.0.tgz", + "integrity": "sha512-XWm64/rSPUCQ+MFyA9lhMO+w8bOZvkTvovRIU1lpIy63ysPaVAFtxjQiZj+S7QaLaLGUXkSkf8WZsaN+QPo/gA==", "dev": true, "engines": { "node": ">=10" @@ -3927,9 +3928,9 @@ } }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz", - "integrity": "sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.0.tgz", + "integrity": "sha512-JIF2D2ltiWFGlTw2fJ9jJg1fNT9rWjOD2Cf0/xzeW6Z2LIRQTHcRHxpZq359+SRWtEPsCXEWV2Xmd+DMBj6dBw==", "dev": true, "engines": { "node": ">=10" @@ -3943,9 +3944,9 @@ } }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz", - "integrity": "sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.0.tgz", + "integrity": "sha512-uuo0FfLP4Nu2zncOcoUFDzZdXWma2bxkTGk0etRThs4/PghvPIGaW8cPhCg6yJ8zpaauWcKV0wZtzKlJRCtVzg==", "dev": true, "engines": { "node": ">=10" @@ -3959,9 +3960,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz", - "integrity": "sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.0.tgz", + "integrity": "sha512-VMRWyOmrV+DaEFPgP3hZMsFgs2g87ojs3txw0Rx8iz6Nf/E3UoHUwTqpkSCWd3Hsnc9gMOY9+wl6+/Ycleh1sw==", "dev": true, "engines": { "node": ">=10" @@ -3975,9 +3976,9 @@ } }, "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz", - "integrity": "sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.0.tgz", + "integrity": "sha512-b67Ul3SelaqvGEEG/1B3VJ03KUtGFgRQjRLCCjdttMQLcYa9l/izQFEclNFx53pNqhijUMNKHPhGMY/CWGVKig==", "dev": true, "engines": { "node": ">=12" @@ -3991,19 +3992,19 @@ } }, "node_modules/@svgr/babel-preset": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.3.1.tgz", - "integrity": "sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.0.tgz", + "integrity": "sha512-UWM98PKVuMqw2UZo8YO3erI6nF1n7/XBYTXBqR0QhZP7HTjYK6QxFNvPfIshddy1hBdzhVpkf148Vg8xiVOtyg==", "dev": true, "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.3.1", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.3.1", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.3.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.3.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.3.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.3.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.3.1", - "@svgr/babel-plugin-transform-svg-component": "^6.3.1" + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.5.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.5.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.0", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.0", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.0", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.0", + "@svgr/babel-plugin-transform-svg-component": "^6.5.0" }, "engines": { "node": ">=10" @@ -4017,12 +4018,14 @@ } }, "node_modules/@svgr/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz", - "integrity": "sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.0.tgz", + "integrity": "sha512-jIbu36GMjfK8HCCQitkfVVeQ2vSXGfq0ef0GO9HUxZGjal6Kvpkk4PwpkFP+OyCzF+skQFT9aWrUqekT3pKF8w==", "dev": true, "dependencies": { - "@svgr/plugin-jsx": "^6.3.1", + "@babel/core": "^7.18.5", + "@svgr/babel-preset": "^6.5.0", + "@svgr/plugin-jsx": "^6.5.0", "camelcase": "^6.2.0", "cosmiconfig": "^7.0.1" }, @@ -4034,10 +4037,49 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@svgr/core/node_modules/@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@svgr/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.3.1.tgz", - "integrity": "sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.0.tgz", + "integrity": "sha512-PPy94U/EiPQ2dY0b4jEqj4QOdDRq6DG7aTHjpGaL8HlKSHkpU1DpjfywCXTJqtOdCo2FywjWvg0U2FhqMeUJaA==", "dev": true, "dependencies": { "@babel/types": "^7.18.4", @@ -4052,9 +4094,9 @@ } }, "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true, "engines": { "node": ">=0.12" @@ -4064,14 +4106,14 @@ } }, "node_modules/@svgr/plugin-jsx": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz", - "integrity": "sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.0.tgz", + "integrity": "sha512-1CHMqOBKoNk/ZPU+iGXKcQPC6q9zaD7UOI99J+BaGY5bdCztcf5bZyi0QZSDRJtCQpdofeVv7XfBYov2mtl0Pw==", "dev": true, "dependencies": { "@babel/core": "^7.18.5", - "@svgr/babel-preset": "^6.3.1", - "@svgr/hast-util-to-babel-ast": "^6.3.1", + "@svgr/babel-preset": "^6.5.0", + "@svgr/hast-util-to-babel-ast": "^6.5.0", "svg-parser": "^2.0.4" }, "engines": { @@ -4086,21 +4128,21 @@ } }, "node_modules/@svgr/plugin-jsx/node_modules/@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -4125,9 +4167,9 @@ } }, "node_modules/@svgr/plugin-svgo": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz", - "integrity": "sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.0.tgz", + "integrity": "sha512-8Zv1Yyv6I7HlIqrqGFM0sDKQrhjbfNZJawR8UjIaVWSb0tKZP1Ra6ymhqIFu6FT6kDRD0Ct5NlQZ10VUujSspw==", "dev": true, "dependencies": { "cosmiconfig": "^7.0.1", @@ -4441,9 +4483,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", + "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", "dev": true, "dependencies": { "@babel/types": "^7.3.0" @@ -4493,9 +4535,9 @@ "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" }, "node_modules/@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", "dev": true, "dependencies": { "@types/estree": "*", @@ -4519,9 +4561,9 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -4531,9 +4573,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "dev": true, "dependencies": { "@types/node": "*", @@ -4642,15 +4684,15 @@ "dev": true }, "node_modules/@types/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-fccbsHKqFDXClBZTDLA43zl0+TbxyIwyzIzwwhvoJvhNjOErCdeX2xJbURimv2EbSVUGav001PaCJg4mZxMl4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "node_modules/@types/node": { @@ -4671,9 +4713,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.4.tgz", - "integrity": "sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", "dev": true }, "node_modules/@types/prop-types": { @@ -4806,9 +4848,9 @@ } }, "node_modules/@types/uglify-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz", - "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==", + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", "dev": true, "dependencies": { "source-map": "^0.6.1" @@ -4829,9 +4871,9 @@ "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" }, "node_modules/@types/webpack": { - "version": "4.41.32", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", - "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", + "version": "4.41.33", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", + "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==", "dev": true, "dependencies": { "@types/node": "*", @@ -5168,9 +5210,9 @@ } }, "node_modules/address": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", - "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -5603,6 +5645,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/assert-ok": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz", @@ -5635,7 +5695,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/at-least-node": { @@ -5686,6 +5746,15 @@ "postcss": "^8.1.0" } }, + "node_modules/axe-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -5913,15 +5982,6 @@ "semver": "bin/semver.js" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -5954,13 +6014,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "peerDependencies": { @@ -6635,9 +6695,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "dependencies": { "bytes": "3.1.2", @@ -6648,7 +6708,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -6682,21 +6742,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", @@ -6758,9 +6803,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -6773,10 +6818,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -7030,9 +7075,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", "dev": true, "funding": [ { @@ -7447,9 +7492,9 @@ } }, "node_modules/colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true }, "node_modules/colorette": { @@ -7542,6 +7587,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -7605,26 +7656,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -7635,13 +7666,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { "version": "0.4.1", @@ -7683,28 +7711,18 @@ } }, "node_modules/core-js-compat": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", - "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", "dev": true, "dependencies": { - "browserslist": "^4.21.3", - "semver": "7.0.0" + "browserslist": "^4.21.4" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/core-js-pure": { "version": "3.16.1", "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.1.tgz", @@ -7716,9 +7734,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "node_modules/cosmiconfig": { @@ -7771,9 +7789,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", - "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", + "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", "dev": true, "engines": { "node": "^10 || ^12 || >=14" @@ -7823,9 +7841,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -8111,9 +8129,9 @@ } }, "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", "dev": true }, "node_modules/decode-uri-component": { @@ -8479,7 +8497,7 @@ "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "engines": { "node": ">=0.4.0" @@ -8866,9 +8884,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "node_modules/email-prop-type": { @@ -9376,16 +9394,20 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-module-utils/node_modules/debug": { @@ -9397,73 +9419,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-import": { "version": "2.26.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", @@ -9518,23 +9473,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/eslint-plugin-import/node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "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-plugin-jsx-a11y": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", @@ -9861,9 +9799,9 @@ } }, "node_modules/espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "dependencies": { "acorn": "^8.8.0", @@ -10383,14 +10321,14 @@ "dev": true }, "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -10409,7 +10347,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -10460,41 +10398,6 @@ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true }, - "node_modules/express/node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, "node_modules/ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", @@ -10600,9 +10503,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -10675,9 +10578,9 @@ } }, "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { "bser": "2.1.1" @@ -10912,9 +10815,9 @@ } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "node_modules/focus-lock": { @@ -11108,9 +11011,9 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -12611,9 +12514,9 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "node_modules/immer": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", + "version": "9.0.16", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz", + "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==", "dev": true, "funding": { "type": "opencollective", @@ -12856,7 +12759,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "node_modules/is-bigint": { @@ -12944,9 +12847,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -13382,7 +13285,7 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "node_modules/is-valid-path": { @@ -13467,9 +13370,9 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", @@ -15193,9 +15096,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -15660,13 +15563,13 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", - "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", + "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.5", - "object.assign": "^4.1.2" + "object.assign": "^4.1.3" }, "engines": { "node": ">=4.0" @@ -15723,6 +15626,21 @@ "node": ">= 8" } }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -15763,9 +15681,9 @@ } }, "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "node_modules/loader-runner": { @@ -15778,9 +15696,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -16237,10 +16155,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mixin-deep": { "version": "1.3.2", @@ -16476,9 +16397,9 @@ } }, "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "optional": true, "dependencies": { @@ -16491,16 +16412,6 @@ "node": ">=10" } }, - "node_modules/node-notifier/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/node-notifier/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -16614,9 +16525,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", - "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", "dev": true }, "node_modules/object-assign": { @@ -16767,13 +16678,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -17623,14 +17534,14 @@ } }, "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "engines": { "node": ">= 0.12.0" @@ -17802,9 +17713,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -18403,9 +18314,9 @@ "optional": true }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "node_modules/pubsub-js": { @@ -18433,12 +18344,18 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/query-string": { @@ -18456,6 +18373,12 @@ "node": ">=0.10.0" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -19414,6 +19337,12 @@ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -19439,27 +19368,15 @@ } }, "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dev": true, - "dependencies": { - "minimatch": "3.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/recursive-readdir/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "minimatch": "^3.0.5" }, "engines": { - "node": "*" + "node": ">=6.0.0" } }, "node_modules/redent": { @@ -19496,9 +19413,9 @@ "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "dependencies": { "regenerate": "^1.4.2" @@ -19569,15 +19486,15 @@ } }, "node_modules/regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" }, @@ -19586,15 +19503,15 @@ } }, "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { "jsesc": "~0.5.0" @@ -19703,13 +19620,17 @@ "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "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" @@ -19882,10 +19803,24 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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" + } + ] }, "node_modules/safe-regex": { "version": "1.1.0", @@ -20212,9 +20147,9 @@ "dev": true }, "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "dependencies": { "node-forge": "^1" @@ -20494,10 +20429,13 @@ } }, "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/shellwords": { "version": "0.1.1", @@ -20792,15 +20730,6 @@ "websocket-driver": "^0.7.4" } }, - "node_modules/sockjs/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -20836,7 +20765,7 @@ "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -20954,9 +20883,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "node_modules/spdy": { @@ -21018,7 +20947,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "node_modules/stable": { @@ -21183,6 +21112,12 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -21464,9 +21399,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "dependencies": { "has-flag": "^4.0.0", @@ -21616,6 +21551,17 @@ "node": ">=4" } }, + "node_modules/tempfile/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "optional": true, + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -21633,9 +21579,9 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", @@ -21651,16 +21597,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "engines": { "node": ">= 10.13.0" @@ -21803,7 +21749,7 @@ "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { "node": ">=4" @@ -21885,23 +21831,24 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "engines": { "node": ">= 4.0.0" @@ -21973,7 +21920,7 @@ "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "optional": true, "dependencies": { @@ -22122,9 +22069,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, "engines": { "node": ">=4" @@ -22236,9 +22183,9 @@ "dev": true }, "node_modules/update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "funding": [ { @@ -22304,6 +22251,16 @@ } } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -22399,14 +22356,12 @@ } }, "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "optional": true, "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache": { @@ -22466,6 +22421,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" @@ -23083,9 +23039,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -23602,9 +23558,9 @@ } }, "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", + "integrity": "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==", "dev": true }, "@babel/core": { @@ -23658,12 +23614,12 @@ } }, "@babel/generator": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.10.tgz", - "integrity": "sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", + "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", "dev": true, "requires": { - "@babel/types": "^7.18.10", + "@babel/types": "^7.19.4", "@jridgewell/gen-mapping": "^0.3.2", "jsesc": "^2.5.1" } @@ -23688,14 +23644,14 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz", + "integrity": "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==", "dev": true, "requires": { - "@babel/compat-data": "^7.18.8", + "@babel/compat-data": "^7.19.3", "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", + "browserslist": "^4.21.3", "semver": "^6.3.0" }, "dependencies": { @@ -23708,14 +23664,14 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", + "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", "@babel/helper-replace-supers": "^7.18.9", @@ -23723,9 +23679,9 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", + "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", @@ -23733,9 +23689,9 @@ } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.17.7", @@ -23770,13 +23726,13 @@ } }, "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" } }, "@babel/helper-hoist-variables": { @@ -23807,19 +23763,19 @@ } }, "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", + "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-simple-access": "^7.19.4", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4" } }, "@babel/helper-optimise-call-expression": { @@ -23832,9 +23788,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", + "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -23850,25 +23806,25 @@ } }, "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-member-expression-to-functions": "^7.18.9", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" } }, "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", + "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.19.4" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -23890,15 +23846,15 @@ } }, "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { "version": "7.18.6", @@ -23907,26 +23863,26 @@ "dev": true }, "@babel/helper-wrap-function": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz", - "integrity": "sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", + "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/traverse": "^7.19.0", + "@babel/types": "^7.19.0" } }, "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz", + "integrity": "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==", "dev": true, "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.4", + "@babel/types": "^7.19.4" } }, "@babel/highlight": { @@ -23940,9 +23896,9 @@ } }, "@babel/parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.10.tgz", - "integrity": "sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.6.tgz", + "integrity": "sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -23966,13 +23922,13 @@ } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", - "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz", + "integrity": "sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-remap-async-to-generator": "^7.18.9", "@babel/plugin-syntax-async-generators": "^7.8.4" } @@ -24316,25 +24272,26 @@ } }, "@babel/plugin-transform-block-scoping": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.19.4.tgz", + "integrity": "sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", + "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.19.0", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-replace-supers": "^7.18.9", "@babel/helper-split-export-declaration": "^7.18.6", "globals": "^11.1.0" @@ -24350,12 +24307,12 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.19.4.tgz", + "integrity": "sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-dotall-regex": { @@ -24426,39 +24383,36 @@ } }, "@babel/plugin-transform-modules-amd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", "dev": true, "requires": { "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" } }, "@babel/plugin-transform-modules-umd": { @@ -24472,13 +24426,13 @@ } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", + "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0" } }, "@babel/plugin-transform-new-target": { @@ -24519,9 +24473,9 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.9.tgz", - "integrity": "sha512-IrTYh1I3YCEL1trjknnlLKTp5JggjzhKl/d3ibzPc97JhpFcDTr38Jdek/oX4cFbS6By0bXJcOkpRvJ5ZHK2wQ==", + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz", + "integrity": "sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9" @@ -24537,16 +24491,16 @@ } }, "@babel/plugin-transform-react-jsx": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz", - "integrity": "sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz", + "integrity": "sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.18.6", "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.18.10" + "@babel/types": "^7.19.0" } }, "@babel/plugin-transform-react-jsx-development": { @@ -24597,12 +24551,12 @@ } }, "@babel/plugin-transform-spread": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" } }, @@ -24634,13 +24588,13 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz", - "integrity": "sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ==", + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.19.3.tgz", + "integrity": "sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-create-class-features-plugin": "^7.19.0", + "@babel/helper-plugin-utils": "^7.19.0", "@babel/plugin-syntax-typescript": "^7.18.6" } }, @@ -24820,31 +24774,31 @@ } }, "@babel/traverse": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.10.tgz", - "integrity": "sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", + "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", + "@babel/generator": "^7.19.6", "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", "@babel/helper-hoist-variables": "^7.18.6", "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10", + "@babel/parser": "^7.19.6", + "@babel/types": "^7.19.4", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.10.tgz", - "integrity": "sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz", + "integrity": "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -24888,9 +24842,9 @@ "requires": {} }, "@edx/frontend-build": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.0.3.tgz", - "integrity": "sha512-q/BoMntXSXSXfSTUpr7G051jrqkAvEFRQHG4+R2rPMQX+Ok2FSE9HTa74kkEP2H2Ij6x5VHXhU5F1powu/x6Zw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@edx/frontend-build/-/frontend-build-12.3.0.tgz", + "integrity": "sha512-GewVd5qD59d8hHZFnXyS5jWkDY8TWYENqO5dd+/Kmu7cmjKrp69PKmNyVs+QgZEADodYI5UT48A2LhsDZjDx7A==", "dev": true, "requires": { "@babel/cli": "7.16.0", @@ -25213,14 +25167,14 @@ } }, "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.2", + "espree": "^9.4.0", "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -26113,13 +26067,13 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, "@newrelic/publish-sourcemap": { @@ -26241,92 +26195,125 @@ } }, "@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.3.1.tgz", - "integrity": "sha512-jDBKArXYO1u0B1dmd2Nf8Oy6aTF5vLDfLoO9Oon/GLkqZ/NiggYWZA+a2HpUMH4ITwNqS3z43k8LWApB8S583w==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.0.tgz", + "integrity": "sha512-Cp1JR1IPrQNvPRbkfcPmax52iunBC+eQDyBce8feOIIbVH6ZpVhErYoJtPWRBj2rKi4Wi9HvCm1+L1UD6QlBmg==", "dev": true, "requires": {} }, "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.3.1.tgz", - "integrity": "sha512-dQzyJ4prwjcFd929T43Z8vSYiTlTu8eafV40Z2gO7zy/SV5GT+ogxRJRBIKWomPBOiaVXFg3jY4S5hyEN3IBjQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz", + "integrity": "sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==", "dev": true, "requires": {} }, "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.3.1.tgz", - "integrity": "sha512-HBOUc1XwSU67fU26V5Sfb8MQsT0HvUyxru7d0oBJ4rA2s4HW3PhyAPC7fV/mdsSGpAvOdd8Wpvkjsr0fWPUO7A==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz", + "integrity": "sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==", "dev": true, "requires": {} }, "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.3.1.tgz", - "integrity": "sha512-C12e6aN4BXAolRrI601gPn5MDFCRHO7C4TM8Kks+rDtl8eEq+NN1sak0eAzJu363x3TmHXdZn7+Efd2nr9I5dA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.0.tgz", + "integrity": "sha512-XWm64/rSPUCQ+MFyA9lhMO+w8bOZvkTvovRIU1lpIy63ysPaVAFtxjQiZj+S7QaLaLGUXkSkf8WZsaN+QPo/gA==", "dev": true, "requires": {} }, "@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.3.1.tgz", - "integrity": "sha512-6NU55Mmh3M5u2CfCCt6TX29/pPneutrkJnnDCHbKZnjukZmmgUAZLtZ2g6ZoSPdarowaQmAiBRgAHqHmG0vuqA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.0.tgz", + "integrity": "sha512-JIF2D2ltiWFGlTw2fJ9jJg1fNT9rWjOD2Cf0/xzeW6Z2LIRQTHcRHxpZq359+SRWtEPsCXEWV2Xmd+DMBj6dBw==", "dev": true, "requires": {} }, "@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.3.1.tgz", - "integrity": "sha512-HV1NGHYTTe1vCNKlBgq/gKuCSfaRlKcHIADn7P8w8U3Zvujdw1rmusutghJ1pZJV7pDt3Gt8ws+SVrqHnBO/Qw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.0.tgz", + "integrity": "sha512-uuo0FfLP4Nu2zncOcoUFDzZdXWma2bxkTGk0etRThs4/PghvPIGaW8cPhCg6yJ8zpaauWcKV0wZtzKlJRCtVzg==", "dev": true, "requires": {} }, "@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.3.1.tgz", - "integrity": "sha512-2wZhSHvTolFNeKDAN/ZmIeSz2O9JSw72XD+o2bNp2QAaWqa8KGpn5Yk5WHso6xqfSAiRzAE+GXlsrBO4UP9LLw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.0.tgz", + "integrity": "sha512-VMRWyOmrV+DaEFPgP3hZMsFgs2g87ojs3txw0Rx8iz6Nf/E3UoHUwTqpkSCWd3Hsnc9gMOY9+wl6+/Ycleh1sw==", "dev": true, "requires": {} }, "@svgr/babel-plugin-transform-svg-component": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.3.1.tgz", - "integrity": "sha512-cZ8Tr6ZAWNUFfDeCKn/pGi976iWSkS8ijmEYKosP+6ktdZ7lW9HVLHojyusPw3w0j8PI4VBeWAXAmi/2G7owxw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.0.tgz", + "integrity": "sha512-b67Ul3SelaqvGEEG/1B3VJ03KUtGFgRQjRLCCjdttMQLcYa9l/izQFEclNFx53pNqhijUMNKHPhGMY/CWGVKig==", "dev": true, "requires": {} }, "@svgr/babel-preset": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.3.1.tgz", - "integrity": "sha512-tQtWtzuMMQ3opH7je+MpwfuRA1Hf3cKdSgTtAYwOBDfmhabP7rcTfBi3E7V3MuwJNy/Y02/7/RutvwS1W4Qv9g==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.0.tgz", + "integrity": "sha512-UWM98PKVuMqw2UZo8YO3erI6nF1n7/XBYTXBqR0QhZP7HTjYK6QxFNvPfIshddy1hBdzhVpkf148Vg8xiVOtyg==", "dev": true, "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.3.1", - "@svgr/babel-plugin-remove-jsx-attribute": "^6.3.1", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.3.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.3.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.3.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.3.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.3.1", - "@svgr/babel-plugin-transform-svg-component": "^6.3.1" + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^6.5.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^6.5.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.0", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.0", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.0", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.0", + "@svgr/babel-plugin-transform-svg-component": "^6.5.0" } }, "@svgr/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.3.1.tgz", - "integrity": "sha512-Sm3/7OdXbQreemf9aO25keerZSbnKMpGEfmH90EyYpj1e8wMD4TuwJIb3THDSgRMWk1kYJfSRulELBy4gVgZUA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.0.tgz", + "integrity": "sha512-jIbu36GMjfK8HCCQitkfVVeQ2vSXGfq0ef0GO9HUxZGjal6Kvpkk4PwpkFP+OyCzF+skQFT9aWrUqekT3pKF8w==", "dev": true, "requires": { - "@svgr/plugin-jsx": "^6.3.1", + "@babel/core": "^7.18.5", + "@svgr/babel-preset": "^6.5.0", + "@svgr/plugin-jsx": "^6.5.0", "camelcase": "^6.2.0", "cosmiconfig": "^7.0.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "@svgr/hast-util-to-babel-ast": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.3.1.tgz", - "integrity": "sha512-NgyCbiTQIwe3wHe/VWOUjyxmpUmsrBjdoIxKpXt3Nqc3TN30BpJG22OxBvVzsAh9jqep0w0/h8Ywvdk3D9niNQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.0.tgz", + "integrity": "sha512-PPy94U/EiPQ2dY0b4jEqj4QOdDRq6DG7aTHjpGaL8HlKSHkpU1DpjfywCXTJqtOdCo2FywjWvg0U2FhqMeUJaA==", "dev": true, "requires": { "@babel/types": "^7.18.4", @@ -26334,41 +26321,41 @@ }, "dependencies": { "entities": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.3.1.tgz", - "integrity": "sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true } } }, "@svgr/plugin-jsx": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.3.1.tgz", - "integrity": "sha512-r9+0mYG3hD4nNtUgsTXWGYJomv/bNd7kC16zvsM70I/bGeoCi/3lhTmYqeN6ChWX317OtQCSZZbH4wq9WwoXbw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.0.tgz", + "integrity": "sha512-1CHMqOBKoNk/ZPU+iGXKcQPC6q9zaD7UOI99J+BaGY5bdCztcf5bZyi0QZSDRJtCQpdofeVv7XfBYov2mtl0Pw==", "dev": true, "requires": { "@babel/core": "^7.18.5", - "@svgr/babel-preset": "^6.3.1", - "@svgr/hast-util-to-babel-ast": "^6.3.1", + "@svgr/babel-preset": "^6.5.0", + "@svgr/hast-util-to-babel-ast": "^6.5.0", "svg-parser": "^2.0.4" }, "dependencies": { "@babel/core": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", - "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", + "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.10", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helpers": "^7.18.9", - "@babel/parser": "^7.18.10", + "@babel/generator": "^7.19.6", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helpers": "^7.19.4", + "@babel/parser": "^7.19.6", "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.10", - "@babel/types": "^7.18.10", + "@babel/traverse": "^7.19.6", + "@babel/types": "^7.19.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -26385,9 +26372,9 @@ } }, "@svgr/plugin-svgo": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.3.1.tgz", - "integrity": "sha512-yJIjTDKPYqzFVjmsbH5EdIwEsmKxjxdXSGJVLeUgwZOZPAkNQmD1v7LDbOdOKbR44FG8465Du+zWPdbYGnbMbw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.0.tgz", + "integrity": "sha512-8Zv1Yyv6I7HlIqrqGFM0sDKQrhjbfNZJawR8UjIaVWSb0tKZP1Ra6ymhqIFu6FT6kDRD0Ct5NlQZ10VUujSspw==", "dev": true, "requires": { "cosmiconfig": "^7.0.1", @@ -26617,9 +26604,9 @@ } }, "@types/babel__traverse": { - "version": "7.17.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", - "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", + "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -26669,9 +26656,9 @@ "integrity": "sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==" }, "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "version": "8.4.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.8.tgz", + "integrity": "sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==", "dev": true, "requires": { "@types/estree": "*", @@ -26695,9 +26682,9 @@ "dev": true }, "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", "dev": true, "requires": { "@types/body-parser": "*", @@ -26707,9 +26694,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", + "version": "4.17.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", "dev": true, "requires": { "@types/node": "*", @@ -26818,15 +26805,15 @@ "dev": true }, "@types/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-fccbsHKqFDXClBZTDLA43zl0+TbxyIwyzIzwwhvoJvhNjOErCdeX2xJbURimv2EbSVUGav001PaCJg4mZxMl4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", "dev": true }, "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "@types/node": { @@ -26847,9 +26834,9 @@ "dev": true }, "@types/prettier": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.4.tgz", - "integrity": "sha512-fOwvpvQYStpb/zHMx0Cauwywu9yLDmzWiiQBC7gJyq5tYLUXFZvDG7VK1B7WBxxjBJNKFOZ0zLoOQn8vmATbhw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", "dev": true }, "@types/prop-types": { @@ -26981,9 +26968,9 @@ } }, "@types/uglify-js": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.16.0.tgz", - "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==", + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", + "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -27003,9 +26990,9 @@ "integrity": "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" }, "@types/webpack": { - "version": "4.41.32", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", - "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", + "version": "4.41.33", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", + "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==", "dev": true, "requires": { "@types/node": "*", @@ -27307,9 +27294,9 @@ "dev": true }, "address": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", - "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.1.tgz", + "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "dev": true }, "adjust-sourcemap-loader": { @@ -27623,6 +27610,18 @@ "es-shim-unscopables": "^1.0.0" } }, + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, "assert-ok": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-ok/-/assert-ok-1.0.0.tgz", @@ -27652,7 +27651,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "at-least-node": { @@ -27681,6 +27680,12 @@ "postcss-value-parser": "^4.1.0" } }, + "axe-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.5.0.tgz", + "integrity": "sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==", + "dev": true + }, "axios": { "version": "0.21.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", @@ -27847,15 +27852,6 @@ } } }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -27882,13 +27878,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", "dev": true, "requires": { "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", + "@babel/helper-define-polyfill-provider": "^0.3.3", "semver": "^6.1.1" }, "dependencies": { @@ -28442,9 +28438,9 @@ } }, "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", "dev": true, "requires": { "bytes": "3.1.2", @@ -28455,7 +28451,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.10.3", + "qs": "6.11.0", "raw-body": "2.5.1", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -28481,15 +28477,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } } } }, @@ -28544,15 +28531,15 @@ "dev": true }, "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "update-browserslist-db": "^1.0.9" } }, "bser": { @@ -28752,9 +28739,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001374", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz", - "integrity": "sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==", + "version": "1.0.30001426", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001426.tgz", + "integrity": "sha512-n7cosrHLl8AWt0wwZw/PJZgUg3lV0gk9LMI7ikGJwhyhgsd2Nb65vKvmSexCqq/J7rbH3mFG6yZZiPR5dLPW5A==", "dev": true }, "capture-exit": { @@ -29080,9 +29067,9 @@ } }, "colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true }, "colorette": { @@ -29162,6 +29149,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -29211,14 +29204,6 @@ "dev": true, "requires": { "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "content-type": { @@ -29228,13 +29213,10 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { "version": "0.4.1", @@ -29265,21 +29247,12 @@ "integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==" }, "core-js-compat": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.24.1.tgz", - "integrity": "sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", + "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", "dev": true, "requires": { - "browserslist": "^4.21.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "browserslist": "^4.21.4" } }, "core-js-pure": { @@ -29288,9 +29261,9 @@ "integrity": "sha512-TyofCdMzx0KMhi84mVRS8rL1XsRk2SPUNz2azmth53iRN0/08Uim9fdhQTaZTG1LqaXHYVci4RDHka6WrXfnvg==" }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, "cosmiconfig": { @@ -29342,9 +29315,9 @@ } }, "css-declaration-sorter": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", - "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", + "integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", "dev": true, "requires": {} }, @@ -29376,9 +29349,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -29583,9 +29556,9 @@ "dev": true }, "decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.2.tgz", + "integrity": "sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==", "dev": true }, "decode-uri-component": { @@ -29872,7 +29845,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "depd": { @@ -30185,9 +30158,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.211", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.211.tgz", - "integrity": "sha512-BZSbMpyFQU0KBJ1JG26XGeFI3i4op+qOYGxftmZXFZoHkhLgsSv4DHDJfl8ogII3hIuzGt51PaZ195OVu0yJ9A==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "email-prop-type": { @@ -30695,13 +30668,12 @@ } }, "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { @@ -30712,55 +30684,6 @@ "requires": { "ms": "^2.1.1" } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true } } }, @@ -30808,17 +30731,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } } } }, @@ -30944,9 +30856,9 @@ "dev": true }, "espree": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.3.tgz", - "integrity": "sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", "dev": true, "requires": { "acorn": "^8.8.0", @@ -31358,14 +31270,14 @@ } }, "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.0", + "body-parser": "1.20.1", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.5.0", @@ -31384,7 +31296,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.10.3", + "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.18.0", @@ -31428,21 +31340,6 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true } } }, @@ -31532,9 +31429,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -31591,9 +31488,9 @@ } }, "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "requires": { "bser": "2.1.1" @@ -31770,9 +31667,9 @@ } }, "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, "focus-lock": { @@ -31894,9 +31791,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -33014,9 +32911,9 @@ "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, "immer": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", - "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==", + "version": "9.0.16", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.16.tgz", + "integrity": "sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==", "dev": true }, "immutable": { @@ -33208,7 +33105,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { @@ -33258,9 +33155,9 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -33570,7 +33467,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-valid-path": { @@ -33634,9 +33531,9 @@ "dev": true }, "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "requires": { "@babel/core": "^7.12.3", @@ -34936,9 +34833,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -35295,13 +35192,13 @@ } }, "jsx-ast-utils": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", - "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", + "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.5", - "object.assign": "^4.1.2" + "object.assign": "^4.1.3" } }, "junk": { @@ -35343,6 +35240,21 @@ "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -35374,9 +35286,9 @@ "dev": true }, "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, "loader-runner": { @@ -35386,9 +35298,9 @@ "dev": true }, "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", + "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", "dev": true, "requires": { "big.js": "^5.2.2", @@ -35766,9 +35678,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "mixin-deep": { @@ -35957,22 +35869,15 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "optional": true, "requires": { "lru-cache": "^6.0.0" } }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -36065,9 +35970,9 @@ } }, "nwsapi": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", - "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", "dev": true }, "object-assign": { @@ -36183,13 +36088,13 @@ } }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -36800,14 +36705,14 @@ "peer": true }, "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "dependencies": { "debug": { @@ -36919,9 +36824,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -37333,9 +37238,9 @@ "optional": true }, "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, "pubsub-js": { @@ -37360,10 +37265,13 @@ "dev": true }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } }, "query-string": { "version": "5.1.1", @@ -37377,6 +37285,12 @@ "strict-uri-encode": "^1.0.0" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -38090,6 +38004,12 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -38112,23 +38032,12 @@ } }, "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "requires": { - "minimatch": "3.0.4" - }, - "dependencies": { - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "minimatch": "^3.0.5" } }, "redent": { @@ -38162,9 +38071,9 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", "dev": true, "requires": { "regenerate": "^1.4.2" @@ -38217,29 +38126,29 @@ "dev": true }, "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", + "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", "dev": true, "requires": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", "dev": true }, "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -38326,13 +38235,14 @@ "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -38457,9 +38367,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "safe-regex": { @@ -38712,9 +38622,9 @@ "dev": true }, "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dev": true, "requires": { "node-forge": "^1" @@ -38954,9 +38864,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", + "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", "dev": true }, "shellwords": { @@ -39210,14 +39120,6 @@ "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" - }, - "dependencies": { - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } } }, "sort-keys": { @@ -39249,7 +39151,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true }, "source-map-js": { @@ -39351,9 +39253,9 @@ } }, "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, "spdy": { @@ -39408,7 +39310,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "stable": { @@ -39542,6 +39444,14 @@ "dev": true, "requires": { "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } } }, "string-length": { @@ -39758,9 +39668,9 @@ } }, "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -39873,6 +39783,15 @@ "requires": { "temp-dir": "^1.0.0", "uuid": "^3.0.1" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true, + "optional": true + } } }, "terminal-link": { @@ -39886,9 +39805,9 @@ } }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -39906,16 +39825,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.7", + "@jridgewell/trace-mapping": "^0.3.14", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" + "terser": "^5.14.1" }, "dependencies": { "has-flag": { @@ -40015,7 +39934,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-object-path": { @@ -40078,20 +39997,21 @@ "dev": true }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dev": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "dependencies": { "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true } } @@ -40152,7 +40072,7 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "optional": true, "requires": { @@ -40261,9 +40181,9 @@ "dev": true }, "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, "union-value": { @@ -40354,9 +40274,9 @@ } }, "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -40389,6 +40309,16 @@ "schema-utils": "^3.0.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -40448,11 +40378,10 @@ "dev": true }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "optional": true + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true }, "v8-compile-cache": { "version": "2.3.0", @@ -40948,9 +40877,9 @@ } }, "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", + "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", "dev": true, "requires": {} } diff --git a/package.json b/package.json index 84b87a2c84..f9ca68f044 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "universal-cookie": "4.0.4" }, "devDependencies": { - "@edx/frontend-build": "12.0.3", + "@edx/frontend-build": "12.3.0", "@testing-library/jest-dom": "5.11.9", "@testing-library/react": "11.2.7", "@testing-library/react-hooks": "3.7.0", diff --git a/src/components/NotFoundPage/index.jsx b/src/components/NotFoundPage/index.jsx index 7eda7aa0e0..24e71abe42 100644 --- a/src/components/NotFoundPage/index.jsx +++ b/src/components/NotFoundPage/index.jsx @@ -4,7 +4,7 @@ import { Helmet } from 'react-helmet'; import { AppContext } from '@edx/frontend-platform/react'; import { Container } from '@edx/paragon'; -function NotFoundPage({ pageTitle, errorHeading, errorMessage }) { +const NotFoundPage = ({ pageTitle, errorHeading, errorMessage }) => { const { enterpriseConfig } = useContext(AppContext); let PAGE_TITLE = pageTitle; @@ -22,7 +22,7 @@ function NotFoundPage({ pageTitle, errorHeading, errorMessage }) { </div> </Container> ); -} +}; NotFoundPage.defaultProps = { pageTitle: 'Page not found', diff --git a/src/components/TagCloud/index.jsx b/src/components/TagCloud/index.jsx index d716203422..cede0a18cb 100644 --- a/src/components/TagCloud/index.jsx +++ b/src/components/TagCloud/index.jsx @@ -3,24 +3,22 @@ import PropTypes from 'prop-types'; import './styles/TagCloud.scss'; -function TagCloud({ tags, onRemove }) { - return ( - <div className="skills-tag"> - <ul className="item"> - { - tags.map( - tag => ( - <li className="list-item" key={tag.title}> - <span className="black">{tag.title}</span> - <button data-testid={tag.title} type="button" className="remove" onClick={() => onRemove(tag.metadata)}>x</button> - </li> - ), - ) - } - </ul> - </div> - ); -} +const TagCloud = ({ tags, onRemove }) => ( + <div className="skills-tag"> + <ul className="item"> + { + tags.map( + tag => ( + <li className="list-item" key={tag.title}> + <span className="black">{tag.title}</span> + <button data-testid={tag.title} type="button" className="remove" onClick={() => onRemove(tag.metadata)}>x</button> + </li> + ), + ) + } + </ul> + </div> +); TagCloud.propTypes = { onRemove: PropTypes.func.isRequired, diff --git a/src/components/Toasts/ToastsProvider.jsx b/src/components/Toasts/ToastsProvider.jsx index 6d29c9c7f8..770bbbf054 100644 --- a/src/components/Toasts/ToastsProvider.jsx +++ b/src/components/Toasts/ToastsProvider.jsx @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'; export const ToastsContext = createContext(); -function ToastsProvider({ children }) { +const ToastsProvider = ({ children }) => { const [toasts, setToasts] = useState([]); const addToast = (message) => { @@ -34,7 +34,7 @@ function ToastsProvider({ children }) { {children} </ToastsContext.Provider> ); -} +}; ToastsProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/app/App.jsx b/src/components/app/App.jsx index ab305dc4d3..3ebe1ce797 100644 --- a/src/components/app/App.jsx +++ b/src/components/app/App.jsx @@ -16,7 +16,7 @@ import { EnterpriseInvitePage } from '../enterprise-invite'; import { ExecutiveEducation2UPage } from '../executive-education-2u'; import { ToastsProvider, Toasts } from '../Toasts'; -export default function App() { +const App = () => { useEffect(() => { if (process.env.HOTJAR_APP_ID) { try { @@ -56,4 +56,6 @@ export default function App() { </NoticesProvider> </AppProvider> ); -} +}; + +export default App; diff --git a/src/components/app/AuthenticatedPage.jsx b/src/components/app/AuthenticatedPage.jsx index b24c55e959..494f261473 100644 --- a/src/components/app/AuthenticatedPage.jsx +++ b/src/components/app/AuthenticatedPage.jsx @@ -13,7 +13,7 @@ import { Layout } from '../layout'; import LoginRefresh from './LoginRefresh'; import { ErrorPage } from '../error-page'; -export default function AuthenticatedPage({ children, useEnterpriseConfigCache }) { +const AuthenticatedPage = ({ children, useEnterpriseConfigCache }) => { const location = useLocation(); const params = new URLSearchParams(location.search); const { enterpriseSlug } = useParams(); @@ -55,7 +55,7 @@ export default function AuthenticatedPage({ children, useEnterpriseConfigCache } </LoginRefresh> </LoginRedirect> ); -} +}; AuthenticatedPage.propTypes = { children: PropTypes.node.isRequired, @@ -65,3 +65,5 @@ AuthenticatedPage.propTypes = { AuthenticatedPage.defaultProps = { useEnterpriseConfigCache: true, }; + +export default AuthenticatedPage; diff --git a/src/components/app/AuthenticatedUserSubsidyPage.jsx b/src/components/app/AuthenticatedUserSubsidyPage.jsx index 5691f61d04..d5b5259511 100644 --- a/src/components/app/AuthenticatedUserSubsidyPage.jsx +++ b/src/components/app/AuthenticatedUserSubsidyPage.jsx @@ -8,19 +8,19 @@ import { } from '../enterprise-user-subsidy'; import { SubsidyRequestsContextProvider } from '../enterprise-subsidy-requests'; -export default function AuthenticatedUserSubsidyPage({ children }) { - return ( - <AuthenticatedPage> - <UserSubsidy> - <SubsidyRequestsContextProvider> - <AutoActivateLicense /> - {children} - </SubsidyRequestsContextProvider> - </UserSubsidy> - </AuthenticatedPage> - ); -} +const AuthenticatedUserSubsidyPage = ({ children }) => ( + <AuthenticatedPage> + <UserSubsidy> + <SubsidyRequestsContextProvider> + <AutoActivateLicense /> + {children} + </SubsidyRequestsContextProvider> + </UserSubsidy> + </AuthenticatedPage> +); AuthenticatedUserSubsidyPage.propTypes = { children: PropTypes.node.isRequired, }; + +export default AuthenticatedUserSubsidyPage; diff --git a/src/components/app/EnterpriseAppPageRoutes.jsx b/src/components/app/EnterpriseAppPageRoutes.jsx index bee4811f98..1fbc335965 100644 --- a/src/components/app/EnterpriseAppPageRoutes.jsx +++ b/src/components/app/EnterpriseAppPageRoutes.jsx @@ -12,31 +12,29 @@ import { features } from '../../config'; import { LicenseActivationPage } from '../license-activation'; import { PathwayProgressPage } from '../pathway-progress'; -function EnterpriseAppPageRoutes() { - return ( - <AuthenticatedUserSubsidyPage> - <PageRoute exact path="/:enterpriseSlug" component={DashboardPage} /> - <PageRoute - exact - path={['/:enterpriseSlug/search', '/:enterpriseSlug/search/:pathwayUUID']} - component={SearchPage} - /> - <PageRoute exact path="/:enterpriseSlug/course/:courseKey" component={CoursePage} /> - {features.ENABLE_PROGRAMS && ( - <PageRoute exact path="/:enterpriseSlug/program/:programUuid" component={ProgramPage} /> - )} - { - // Deprecated URL, will be removed in the future. - <PageRoute exact path="/:enterpriseSlug/program-progress/:programUUID" component={ProgramProgressRedirect} /> - } - <PageRoute exact path="/:enterpriseSlug/program/:programUUID/progress" component={ProgramProgressPage} /> - <PageRoute exact path="/:enterpriseSlug/skills-quiz" component={SkillsQuizPage} /> - <PageRoute exact path="/:enterpriseSlug/licenses/:activationKey/activate" component={LicenseActivationPage} /> - {features.FEATURE_ENABLE_PATHWAY_PROGRESS && ( - <PageRoute exact path="/:enterpriseSlug/pathway/:pathwayUUID/progress" component={PathwayProgressPage} /> - )} - </AuthenticatedUserSubsidyPage> - ); -} +const EnterpriseAppPageRoutes = () => ( + <AuthenticatedUserSubsidyPage> + <PageRoute exact path="/:enterpriseSlug" component={DashboardPage} /> + <PageRoute + exact + path={['/:enterpriseSlug/search', '/:enterpriseSlug/search/:pathwayUUID']} + component={SearchPage} + /> + <PageRoute exact path="/:enterpriseSlug/course/:courseKey" component={CoursePage} /> + {features.ENABLE_PROGRAMS && ( + <PageRoute exact path="/:enterpriseSlug/program/:programUuid" component={ProgramPage} /> + )} + { + // Deprecated URL, will be removed in the future. + <PageRoute exact path="/:enterpriseSlug/program-progress/:programUUID" component={ProgramProgressRedirect} /> + } + <PageRoute exact path="/:enterpriseSlug/program/:programUUID/progress" component={ProgramProgressPage} /> + <PageRoute exact path="/:enterpriseSlug/skills-quiz" component={SkillsQuizPage} /> + <PageRoute exact path="/:enterpriseSlug/licenses/:activationKey/activate" component={LicenseActivationPage} /> + {features.FEATURE_ENABLE_PATHWAY_PROGRESS && ( + <PageRoute exact path="/:enterpriseSlug/pathway/:pathwayUUID/progress" component={PathwayProgressPage} /> + )} + </AuthenticatedUserSubsidyPage> +); export default EnterpriseAppPageRoutes; diff --git a/src/components/app/LoginRefresh.jsx b/src/components/app/LoginRefresh.jsx index ff919f9695..1728997fab 100644 --- a/src/components/app/LoginRefresh.jsx +++ b/src/components/app/LoginRefresh.jsx @@ -6,7 +6,7 @@ import { Container } from '@edx/paragon'; import { LoadingSpinner } from '../loading-spinner'; import { loginRefresh } from '../../utils/common'; -function LoginRefresh({ children }) { +const LoginRefresh = ({ children }) => { const { authenticatedUser } = useContext(AppContext); const { roles } = authenticatedUser; @@ -33,7 +33,7 @@ function LoginRefresh({ children }) { ); } return children; -} +}; LoginRefresh.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/app/LoginRefresh.test.jsx b/src/components/app/LoginRefresh.test.jsx index 0eb1b73783..2adf9682f4 100644 --- a/src/components/app/LoginRefresh.test.jsx +++ b/src/components/app/LoginRefresh.test.jsx @@ -9,7 +9,7 @@ import * as utils from '../../utils/common'; jest.mock('../../utils/common'); // eslint-disable-next-line react/prop-types -function LoginRefreshWithContext({ roles = [] }) { +const LoginRefreshWithContext = ({ roles = [] }) => { const contextValue = useMemo(() => ({ authenticatedUser: { userId: 1, @@ -23,7 +23,7 @@ function LoginRefreshWithContext({ roles = [] }) { </LoginRefresh> </AppContext.Provider> ); -} /* eslint-enable react/prop-types */ +}; /* eslint-enable react/prop-types */ describe('<LoginRefresh />', () => { it('should call loginRefresh if the user has no roles', async () => { diff --git a/src/components/contact-admin-mailto/index.jsx b/src/components/contact-admin-mailto/index.jsx index be6c3fd84b..bb62606ce9 100644 --- a/src/components/contact-admin-mailto/index.jsx +++ b/src/components/contact-admin-mailto/index.jsx @@ -3,9 +3,9 @@ import { AppContext } from '@edx/frontend-platform/react'; import { MailtoLink } from '@edx/paragon'; import PropTypes from 'prop-types'; -function ContactAdminMailto({ +const ContactAdminMailto = ({ children, -}) { +}) => { const { enterpriseConfig: { adminUsers } } = useContext(AppContext); const adminEmails = adminUsers.map(user => user.email); @@ -21,7 +21,7 @@ function ContactAdminMailto({ } return children; -} +}; ContactAdminMailto.propTypes = { children: PropTypes.node, diff --git a/src/components/course/CourseAssociatedPrograms.jsx b/src/components/course/CourseAssociatedPrograms.jsx index 84f1ca93f6..8da08a3e91 100644 --- a/src/components/course/CourseAssociatedPrograms.jsx +++ b/src/components/course/CourseAssociatedPrograms.jsx @@ -7,7 +7,7 @@ import { CourseContext } from './CourseContextProvider'; import { getProgramIcon, formatProgramType } from './data/utils'; import { features } from '../../config'; -export default function CourseAssociatedPrograms() { +const CourseAssociatedPrograms = () => { const { state } = useContext(CourseContext); const { course } = state; const { enterpriseConfig } = useContext(AppContext); @@ -55,4 +55,6 @@ export default function CourseAssociatedPrograms() { </ul> </div> ); -} +}; + +export default CourseAssociatedPrograms; diff --git a/src/components/course/CourseContextProvider.jsx b/src/components/course/CourseContextProvider.jsx index 2cc2f44b23..ddc0b293c8 100644 --- a/src/components/course/CourseContextProvider.jsx +++ b/src/components/course/CourseContextProvider.jsx @@ -18,7 +18,7 @@ const reducer = (state, action) => { } }; -export function CourseContextProvider({ children, initialState }) { +export const CourseContextProvider = ({ children, initialState }) => { const { catalogsForSubsidyRequests } = useContext(SubsidyRequestsContext); const [state, dispatch] = useReducer(reducer, initialState); const { catalog } = state; @@ -42,7 +42,7 @@ export function CourseContextProvider({ children, initialState }) { {children} </CourseContext.Provider> ); -} +}; CourseContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/course/CourseEnrollmentFailedAlert.jsx b/src/components/course/CourseEnrollmentFailedAlert.jsx index d1b63603f0..224a1fa89e 100644 --- a/src/components/course/CourseEnrollmentFailedAlert.jsx +++ b/src/components/course/CourseEnrollmentFailedAlert.jsx @@ -67,7 +67,7 @@ const createUpgradeFailureMessages = (contactHelpText, enrollmentSource) => ({ * reasons. The contents of the alert are determined by a ``failureReason`` which is passed * from the Data Sharing Consent (DSC) page as a query parameter. */ -function CourseEnrollmentFailedAlert({ className, enrollmentSource }) { +const CourseEnrollmentFailedAlert = ({ className, enrollmentSource }) => { const { search } = useLocation(); const { enterpriseConfig } = useContext(AppContext); const renderContactHelpText = useRenderContactHelpText(enterpriseConfig); @@ -112,7 +112,7 @@ function CourseEnrollmentFailedAlert({ className, enrollmentSource }) { </Alert> </Container> ); -} +}; CourseEnrollmentFailedAlert.defaultProps = { className: 'mt-3', diff --git a/src/components/course/CourseHeader.jsx b/src/components/course/CourseHeader.jsx index 1ce7ed74bd..f4a317f29b 100644 --- a/src/components/course/CourseHeader.jsx +++ b/src/components/course/CourseHeader.jsx @@ -24,7 +24,7 @@ import { import LicenseRequestedAlert from './LicenseRequestedAlert'; import SubsidyRequestButton from './SubsidyRequestButton'; -export default function CourseHeader() { +const CourseHeader = () => { const { enterpriseConfig } = useContext(AppContext); const { state } = useContext(CourseContext); const { course, catalog } = state; @@ -111,4 +111,6 @@ export default function CourseHeader() { </Container> </div> ); -} +}; + +export default CourseHeader; diff --git a/src/components/course/CourseMainContent.jsx b/src/components/course/CourseMainContent.jsx index 318d5b5ed9..69a21b87df 100644 --- a/src/components/course/CourseMainContent.jsx +++ b/src/components/course/CourseMainContent.jsx @@ -28,7 +28,7 @@ function formatSponsorTextList(sponsors) { return sponsorTextList; } -export default function CourseMainContent() { +const CourseMainContent = () => { const { config } = useContext(AppContext); const { state } = useContext(CourseContext); const { course, activeCourseRun } = state; @@ -156,4 +156,6 @@ export default function CourseMainContent() { )} </> ); -} +}; + +export default CourseMainContent; diff --git a/src/components/course/CoursePage.jsx b/src/components/course/CoursePage.jsx index c88ca824e6..372363a7e8 100644 --- a/src/components/course/CoursePage.jsx +++ b/src/components/course/CoursePage.jsx @@ -23,7 +23,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy/UserSubsidy'; import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; import { useSearchCatalogs } from '../search/data/hooks'; -export default function CoursePage() { +const CoursePage = () => { const { courseKey } = useParams(); const { enterpriseConfig } = useContext(AppContext); const { search } = useLocation(); @@ -154,4 +154,6 @@ export default function CoursePage() { </CourseEnrollmentsContextProvider> </> ); -} +}; + +export default CoursePage; diff --git a/src/components/course/CourseRecommendationCard.jsx b/src/components/course/CourseRecommendationCard.jsx index 042bb01341..2083181758 100644 --- a/src/components/course/CourseRecommendationCard.jsx +++ b/src/components/course/CourseRecommendationCard.jsx @@ -11,7 +11,7 @@ import { getPrimaryPartnerLogo, isDefinedAndNotNull } from '../../utils/common'; export const COURSE_REC_EVENT_NAME = 'edx.ui.enterprise.learner_portal.recommended.course.clicked'; export const SAME_PART_EVENT_NAME = 'edx.ui.enterprise.learner_portal.same.partner.recommended.course.clicked'; -function CourseRecommendationCard({ course, isPartnerRecommendation }) { +const CourseRecommendationCard = ({ course, isPartnerRecommendation }) => { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const eventName = isPartnerRecommendation ? SAME_PART_EVENT_NAME : COURSE_REC_EVENT_NAME; const history = useHistory(); @@ -87,7 +87,7 @@ function CourseRecommendationCard({ course, isPartnerRecommendation }) { </Card.Footer> </Card> ); -} +}; CourseRecommendationCard.propTypes = { course: PropTypes.shape({ diff --git a/src/components/course/CourseRecommendations.jsx b/src/components/course/CourseRecommendations.jsx index 1924d78935..83eea0b585 100644 --- a/src/components/course/CourseRecommendations.jsx +++ b/src/components/course/CourseRecommendations.jsx @@ -3,7 +3,7 @@ import { CardGrid } from '@edx/paragon'; import { CourseContext } from './CourseContextProvider'; import CourseRecommendationCard from './CourseRecommendationCard'; -function CourseRecommendations() { +const CourseRecommendations = () => { const { state } = useContext(CourseContext); const { course, courseRecommendations } = state; const { allRecommendations, samePartnerRecommendations } = courseRecommendations; @@ -36,6 +36,6 @@ function CourseRecommendations() { )} </div> ); -} +}; export default CourseRecommendations; diff --git a/src/components/course/CourseRunCard.jsx b/src/components/course/CourseRunCard.jsx index 093fab484a..0346f0ed98 100644 --- a/src/components/course/CourseRunCard.jsx +++ b/src/components/course/CourseRunCard.jsx @@ -45,14 +45,12 @@ const LicenseSubsidyPriceText = ({ }); return ( - <> - <div className="mt-2" data-testid="subsidy-license-price-text"> - <del> - <span className="sr-only">Priced reduced from:</span>${numberWithPrecision(coursePrice.list)} {currency} - </del> - <span>{' '}included in your subscription</span> - </div> - </> + <div className="mt-2" data-testid="subsidy-license-price-text"> + <del> + <span className="sr-only">Priced reduced from:</span>${numberWithPrecision(coursePrice.list)} {currency} + </del> + <span>{' '}included in your subscription</span> + </div> ); }; @@ -62,7 +60,7 @@ const CourseRunCard = ({ userEnrollments, courseKey, subsidyRequestCatalogsApplicableToCourse, -}) { +}) => { const { availability, pacingType, @@ -268,7 +266,7 @@ const CourseRunCard = ({ </Card.Section> </Card> ); -} +}; CourseRunCard.propTypes = { courseKey: PropTypes.string.isRequired, diff --git a/src/components/course/CourseRunCards.jsx b/src/components/course/CourseRunCards.jsx index 65f0f11451..1e8baf2f5e 100644 --- a/src/components/course/CourseRunCards.jsx +++ b/src/components/course/CourseRunCards.jsx @@ -6,7 +6,7 @@ import { import { CourseContext } from './CourseContextProvider'; import CourseRunCard from './CourseRunCard'; -function CourseRunCards() { +const CourseRunCards = () => { const { state: courseData, subsidyRequestCatalogsApplicableToCourse, @@ -35,6 +35,6 @@ function CourseRunCards() { ))} </CardGrid> ); -} +}; export default CourseRunCards; diff --git a/src/components/course/CourseSidebar.jsx b/src/components/course/CourseSidebar.jsx index e7fbea5987..04a55adb9d 100644 --- a/src/components/course/CourseSidebar.jsx +++ b/src/components/course/CourseSidebar.jsx @@ -28,7 +28,7 @@ import { useCoursePacingType, } from './data/hooks'; -export default function CourseSidebar() { +const CourseSidebar = () => { const { state } = useContext(CourseContext); const { course, activeCourseRun } = state; const { primarySubject } = useCourseSubjects(course); @@ -155,4 +155,6 @@ export default function CourseSidebar() { )} </> ); -} +}; + +export default CourseSidebar; diff --git a/src/components/course/CourseSidebarListItem.jsx b/src/components/course/CourseSidebarListItem.jsx index 92927d22d0..8a5309117f 100644 --- a/src/components/course/CourseSidebarListItem.jsx +++ b/src/components/course/CourseSidebarListItem.jsx @@ -3,26 +3,26 @@ import PropTypes from 'prop-types'; import { Row, Col } from '@edx/paragon'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -export default function CourseSidebarListItem({ +const CourseSidebarListItem = ({ icon, label, content, -}) { - return ( - <Row as="li" className="d-flex align-items-start border-bottom py-3"> - <Col className="d-flex align-items-center"> - <FontAwesomeIcon className="mr-3" icon={icon} /> - <span>{label}:</span> - </Col> - <Col> - {content} - </Col> - </Row> - ); -} +}) => ( + <Row as="li" className="d-flex align-items-start border-bottom py-3"> + <Col className="d-flex align-items-center"> + <FontAwesomeIcon className="mr-3" icon={icon} /> + <span>{label}:</span> + </Col> + <Col> + {content} + </Col> + </Row> +); CourseSidebarListItem.propTypes = { icon: PropTypes.shape().isRequired, label: PropTypes.string.isRequired, content: PropTypes.node.isRequired, }; + +export default CourseSidebarListItem; diff --git a/src/components/course/CourseSidebarPrice.jsx b/src/components/course/CourseSidebarPrice.jsx index 410a6acd29..3adec9daf5 100644 --- a/src/components/course/CourseSidebarPrice.jsx +++ b/src/components/course/CourseSidebarPrice.jsx @@ -19,7 +19,7 @@ export const FREE_WHEN_APPROVED_MESSAGE = 'Free to me\n(when approved)'; export const COVERED_BY_ENTERPRISE_OFFER_MESSAGE = 'This course can be purchased with your organization\'s learner credit'; export const INSUFFICIENT_ENTERPRISE_OFFER_BALANCE = 'Your organization doesn\'t have enough learner credit remaining.'; -function CourseSidebarPrice() { +const CourseSidebarPrice = () => { const { enterpriseConfig } = useContext(AppContext); const { state: courseData } = useContext(CourseContext); const { activeCourseRun, userSubsidyApplicableToCourse } = courseData; @@ -117,6 +117,6 @@ function CourseSidebarPrice() { <small>{discountedPriceMessage}</small> </> ); -} +}; export default CourseSidebarPrice; diff --git a/src/components/course/CourseSkills.jsx b/src/components/course/CourseSkills.jsx index 8437698ee6..929904dc12 100644 --- a/src/components/course/CourseSkills.jsx +++ b/src/components/course/CourseSkills.jsx @@ -14,7 +14,7 @@ import { shortenString } from './data/utils'; export const MAX_VISIBLE_SKILLS = 5; -export default function CourseSkills() { +const CourseSkills = () => { const { enterpriseConfig } = useContext(AppContext); const { state } = useContext(CourseContext); const { skills } = state.course; @@ -57,4 +57,6 @@ export default function CourseSkills() { </div> </div> ); -} +}; + +export default CourseSkills; diff --git a/src/components/course/CreatedBy.jsx b/src/components/course/CreatedBy.jsx index 91581025ce..394bb5f623 100644 --- a/src/components/course/CreatedBy.jsx +++ b/src/components/course/CreatedBy.jsx @@ -5,7 +5,7 @@ import { Hyperlink } from '@edx/paragon'; import { CourseContext } from './CourseContextProvider'; import { useCoursePartners } from './data/hooks'; -export default function CreatedBy() { +const CreatedBy = () => { const { config } = useContext(AppContext); const { state } = useContext(CourseContext); const { course, activeCourseRun } = state; @@ -73,4 +73,6 @@ export default function CreatedBy() { )} </div> ); -} +}; + +export default CreatedBy; diff --git a/src/components/course/EnrollModal.jsx b/src/components/course/EnrollModal.jsx index 48cb0450c2..4f355a5672 100644 --- a/src/components/course/EnrollModal.jsx +++ b/src/components/course/EnrollModal.jsx @@ -35,7 +35,7 @@ export const MODAL_TEXTS = { }, }; -function EnrollModal({ +const EnrollModal = ({ isModalOpen, setIsModalOpen, enrollmentUrl, @@ -43,7 +43,7 @@ function EnrollModal({ userSubsidyApplicableToCourse, couponCodesCount, onEnroll, -}) { +}) => { const [isLoading, setIsLoading] = useState(false); const getModalTexts = () => { @@ -103,7 +103,7 @@ function EnrollModal({ onClose={() => setIsModalOpen(false)} /> ); -} +}; EnrollModal.propTypes = { isModalOpen: PropTypes.bool.isRequired, diff --git a/src/components/course/LicenseRequestedAlert.jsx b/src/components/course/LicenseRequestedAlert.jsx index 4dabc3f67a..4bd0798e99 100644 --- a/src/components/course/LicenseRequestedAlert.jsx +++ b/src/components/course/LicenseRequestedAlert.jsx @@ -15,7 +15,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy/UserSubsidy'; * A component to render an alert when a learner has a license request that is pending review. * Once dismissed, the learner will not see this alert again until the cookies are cleared. */ -function LicenseRequestedAlert({ catalogList }) { +const LicenseRequestedAlert = ({ catalogList }) => { const cookies = new Cookies(); const previouslyDismissed = cookies.get(LICENSE_REQUESTED_ALERT_DISMISSED_COOKIE_NAME); const [isAlertOpen, setIsAlertOpen] = useState(!previouslyDismissed); @@ -56,7 +56,7 @@ function LicenseRequestedAlert({ catalogList }) { </Alert> </Container> ); -} +}; LicenseRequestedAlert.propTypes = { catalogList: PropTypes.arrayOf(PropTypes.string).isRequired, diff --git a/src/components/course/SubsidyRequestButton.jsx b/src/components/course/SubsidyRequestButton.jsx index 8c50901cab..33ca95deca 100644 --- a/src/components/course/SubsidyRequestButton.jsx +++ b/src/components/course/SubsidyRequestButton.jsx @@ -118,6 +118,6 @@ const SubsidyRequestButton = () => { return ( <StatefulButton {...props} state={getButtonState()} onClick={handleRequestButtonClick} /> ); -} +}; export default SubsidyRequestButton; diff --git a/src/components/course/VerifiedCertPitch.jsx b/src/components/course/VerifiedCertPitch.jsx index 58dc167376..d587afbcbd 100644 --- a/src/components/course/VerifiedCertPitch.jsx +++ b/src/components/course/VerifiedCertPitch.jsx @@ -5,46 +5,44 @@ import { faRoad, faRocket } from '@fortawesome/free-solid-svg-icons'; import './styles/VerifiedCertPitch.scss'; -function VerifiedCertPitchIcon({ icon }) { - return ( - <div className="icon d-flex bg-info mr-3 p-2 align-items-center justify-content-center"> - <FontAwesomeIcon className="text-white" icon={icon} /> - </div> - ); -} +const VerifiedCertPitchIcon = ({ icon }) => ( + <div className="icon d-flex bg-info mr-3 p-2 align-items-center justify-content-center"> + <FontAwesomeIcon className="text-white" icon={icon} /> + </div> +); VerifiedCertPitchIcon.propTypes = { icon: PropTypes.shape({}).isRequired, }; -export default function VerifiedCertPitch() { - return ( - <div className="verified-cert-pitch mb-5"> - <h3 className="mb-4"> - Pursue a Verified Certificate to highlight the knowledge and skills you gain - </h3> - <ul className="pl-0 mb-0 list-unstyled"> - <li className="d-flex mb-4"> - <VerifiedCertPitchIcon icon={faRocket} /> - <div> - <h4>Official and Verified</h4> - <span> - Receive an instructor-signed certificate with the institution's - logo to verify your achievement. - </span> - </div> - </li> - <li className="d-flex mb-4"> - <VerifiedCertPitchIcon icon={faRoad} /> - <div> - <h4>Easily Shareable</h4> - <span> - Add the certificate to your CV or resume, or post it - directly on LinkedIn. - </span> - </div> - </li> - </ul> - </div> - ); -} +const VerifiedCertPitch = () => ( + <div className="verified-cert-pitch mb-5"> + <h3 className="mb-4"> + Pursue a Verified Certificate to highlight the knowledge and skills you gain + </h3> + <ul className="pl-0 mb-0 list-unstyled"> + <li className="d-flex mb-4"> + <VerifiedCertPitchIcon icon={faRocket} /> + <div> + <h4>Official and Verified</h4> + <span> + Receive an instructor-signed certificate with the institution's + logo to verify your achievement. + </span> + </div> + </li> + <li className="d-flex mb-4"> + <VerifiedCertPitchIcon icon={faRoad} /> + <div> + <h4>Easily Shareable</h4> + <span> + Add the certificate to your CV or resume, or post it + directly on LinkedIn. + </span> + </div> + </li> + </ul> + </div> +); + +export default VerifiedCertPitch; diff --git a/src/components/course/enrollment/EnrollAction.jsx b/src/components/course/enrollment/EnrollAction.jsx index 3507f00473..e90eb060ef 100644 --- a/src/components/course/enrollment/EnrollAction.jsx +++ b/src/components/course/enrollment/EnrollAction.jsx @@ -29,7 +29,7 @@ const { * @param {string} args.userEnrollment enrollment if applicable, or null. * @param {string} args.subscriptionLicense user license if applicable, or null. */ -function EnrollAction({ +const EnrollAction = ({ enrollmentType, enrollmentUrl, enrollLabel, @@ -71,7 +71,7 @@ function EnrollAction({ case HIDE_BUTTON: default: return null; } -} +}; EnrollAction.propTypes = { enrollmentType: PropTypes.string.isRequired, diff --git a/src/components/course/enrollment/common.jsx b/src/components/course/enrollment/common.jsx index c17da13751..e26332e804 100644 --- a/src/components/course/enrollment/common.jsx +++ b/src/components/course/enrollment/common.jsx @@ -5,19 +5,17 @@ import { Button } from '@edx/paragon'; // Common UI components for enrollment to avoid duplication, consistent styling etc. // Each enroll component can use the EnrollButtonCta to render the enroll behavior -function EnrollButtonWrapper({ +const EnrollButtonWrapper = ({ as: Component, children, ...props -}) { - return ( - <div> - <Component {...props}> - {children} - </Component> - </div> - ); -} +}) => ( + <div> + <Component {...props}> + {children} + </Component> + </div> +); EnrollButtonWrapper.propTypes = { children: PropTypes.node.isRequired, @@ -28,13 +26,11 @@ EnrollButtonWrapper.defaultProps = { as: Button, }; -function EnrollButtonCta({ enrollLabel: EnrollLabel, ...props }) { - return ( - <EnrollButtonWrapper {...props}> - {EnrollLabel} - </EnrollButtonWrapper> - ); -} +const EnrollButtonCta = ({ enrollLabel: EnrollLabel, ...props }) => ( + <EnrollButtonWrapper {...props}> + {EnrollLabel} + </EnrollButtonWrapper> +); EnrollButtonCta.propTypes = { enrollLabel: PropTypes.node.isRequired }; diff --git a/src/components/course/enrollment/components/DisabledEnroll.jsx b/src/components/course/enrollment/components/DisabledEnroll.jsx index 5243cac42d..b619d9f7b9 100644 --- a/src/components/course/enrollment/components/DisabledEnroll.jsx +++ b/src/components/course/enrollment/components/DisabledEnroll.jsx @@ -3,15 +3,13 @@ import PropTypes from 'prop-types'; import { EnrollButtonCta } from '../common'; -function EnrollBtnDisabled({ enrollLabel }) { - return ( - <EnrollButtonCta - enrollLabel={enrollLabel} - as="div" - className="btn btn-light btn-block disabled d-block" - /> - ); -} +const EnrollBtnDisabled = ({ enrollLabel }) => ( + <EnrollButtonCta + enrollLabel={enrollLabel} + as="div" + className="btn btn-light btn-block disabled d-block" + /> +); EnrollBtnDisabled.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ToCoursewarePage.jsx b/src/components/course/enrollment/components/ToCoursewarePage.jsx index f8cbf038ea..524c18b033 100644 --- a/src/components/course/enrollment/components/ToCoursewarePage.jsx +++ b/src/components/course/enrollment/components/ToCoursewarePage.jsx @@ -13,9 +13,9 @@ import { enrollLinkClass } from '../constants'; * Renders a hyperlink to the course info url (or enrollment url) * Uses the passed in enroll label as the Label shown along with enroll link */ -function ToCoursewarePage({ +const ToCoursewarePage = ({ enrollLabel, enrollmentUrl, userEnrollment, subscriptionLicense, -}) { +}) => { const shouldUseEnrollmentUrl = shouldUpgradeUserEnrollment({ userEnrollment, subscriptionLicense, @@ -36,7 +36,7 @@ function ToCoursewarePage({ onClick={handleClick} /> ); -} +}; ToCoursewarePage.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ToDataSharingConsent.jsx b/src/components/course/enrollment/components/ToDataSharingConsent.jsx index f471ae373f..aee9f91103 100644 --- a/src/components/course/enrollment/components/ToDataSharingConsent.jsx +++ b/src/components/course/enrollment/components/ToDataSharingConsent.jsx @@ -51,7 +51,7 @@ const ToDataSharingConsentPage = ({ enrollLabel, enrollmentUrl, triggerLicenseSu }} /> ); -} +}; ToDataSharingConsentPage.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ToEcomBasketPage.jsx b/src/components/course/enrollment/components/ToEcomBasketPage.jsx index 127f71c487..e97517c8f8 100644 --- a/src/components/course/enrollment/components/ToEcomBasketPage.jsx +++ b/src/components/course/enrollment/components/ToEcomBasketPage.jsx @@ -21,7 +21,7 @@ import { * @param {Component} args.enrollLabel An EnrollLabel component * @returns {Component} Rendered enroll button with a enrollment modal behavior included. */ -function ToEcomBasketPage({ enrollLabel, enrollmentUrl, courseRunPrice }) { +const ToEcomBasketPage = ({ enrollLabel, enrollmentUrl, courseRunPrice }) => { const { userSubsidyApplicableToCourse, couponCodesCount } = useSubsidyDataForCourse(); const [isModalOpen, setIsModalOpen] = useState(false); @@ -68,7 +68,7 @@ function ToEcomBasketPage({ enrollLabel, enrollmentUrl, courseRunPrice }) { /> </> ); -} +}; ToEcomBasketPage.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/components/ViewOnDashboard.jsx b/src/components/course/enrollment/components/ViewOnDashboard.jsx index 14ad0bc37c..b19c6890c8 100644 --- a/src/components/course/enrollment/components/ViewOnDashboard.jsx +++ b/src/components/course/enrollment/components/ViewOnDashboard.jsx @@ -9,7 +9,7 @@ import { EnrollButtonCta } from '../common'; import { enrollLinkClass } from '../constants'; -function ViewOnDashboard({ enrollLabel }) { +const ViewOnDashboard = ({ enrollLabel }) => { const { enterpriseConfig } = useContext(AppContext); const handleClick = useTrackSearchConversionClickHandler({ eventName: 'edx.ui.enterprise.learner_portal.course.enroll_button.to_dashboard.clicked', @@ -24,7 +24,7 @@ function ViewOnDashboard({ enrollLabel }) { onClick={handleClick} /> ); -} +}; ViewOnDashboard.propTypes = { enrollLabel: PropTypes.node.isRequired, diff --git a/src/components/course/enrollment/tests/EnrollAction.test.jsx b/src/components/course/enrollment/tests/EnrollAction.test.jsx index 6a344734dd..a4899e5717 100644 --- a/src/components/course/enrollment/tests/EnrollAction.test.jsx +++ b/src/components/course/enrollment/tests/EnrollAction.test.jsx @@ -52,10 +52,9 @@ const subscriptionLicense = { uuid: 'a-license' }; * @param {object} args Arguments. * @param {string} args.enrollAction */ -function EnrollLabel(props) { - // eslint-disable-next-line react/prop-types - return <div>{props.enrollLabelText}</div>; -} +// eslint-disable-next-line react/prop-types +const EnrollLabel = (props) => <div>{props.enrollLabelText}</div>; + const renderEnrollAction = ({ enrollAction, courseInitState = selfPacedCourseWithLicenseSubsidy, diff --git a/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx b/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx index 5d89cbe9c5..ab43d4445a 100644 --- a/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx +++ b/src/components/course/enrollment/tests/ToEcomBasketPage.test.jsx @@ -20,7 +20,7 @@ jest.mock('../../EnrollModal', () => ({ jest.mock('../hooks'); -function ToEcomBasketPageWrapper({ +const ToEcomBasketPageWrapper = ({ courseContextValue = { state: { activeCourseRun: { @@ -32,17 +32,15 @@ function ToEcomBasketPageWrapper({ courseEnrollmentsByStatus: {}, }, ...rest -}) { - return ( - <CourseContext.Provider value={courseContextValue}> - <CourseEnrollmentsContext.Provider value={CourseEnrollmentsContextVAlue}> - <ToEcomBasketPage - {...rest} - />, - </CourseEnrollmentsContext.Provider> - </CourseContext.Provider> - ); -} +}) => ( + <CourseContext.Provider value={courseContextValue}> + <CourseEnrollmentsContext.Provider value={CourseEnrollmentsContextVAlue}> + <ToEcomBasketPage + {...rest} + />, + </CourseEnrollmentsContext.Provider> + </CourseContext.Provider> +); describe('<ToEcomBasketPage />', () => { it('should render <EnrollButtonCta /> and <EnrollModal />', () => { diff --git a/src/components/course/enrollment/tests/hooks.test.jsx b/src/components/course/enrollment/tests/hooks.test.jsx index b13fa9c361..11745c04f6 100644 --- a/src/components/course/enrollment/tests/hooks.test.jsx +++ b/src/components/course/enrollment/tests/hooks.test.jsx @@ -39,22 +39,20 @@ const baseUserSubsidyState = { }, }; -function ContextWrapper({ +const ContextWrapper = ({ initialCourseState, initialSubsidyRequestContextValue, initialUserSubsidyState, children, -}) { - return ( - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> - <CourseContextProvider initialState={initialCourseState}> - {children} - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - ); -} +}) => ( + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> + <CourseContextProvider initialState={initialCourseState}> + {children} + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> +); ContextWrapper.propTypes = { initialCourseState: PropTypes.shape(), diff --git a/src/components/course/tests/CourseAssociatedPrograms.test.jsx b/src/components/course/tests/CourseAssociatedPrograms.test.jsx index 225ef67479..08f934456e 100644 --- a/src/components/course/tests/CourseAssociatedPrograms.test.jsx +++ b/src/components/course/tests/CourseAssociatedPrograms.test.jsx @@ -11,18 +11,16 @@ const baseSubsidyRequestContextValue = { catalogsForSubsidyRequests: [], }; -function CourseAssociatedProgramsWithCourseContext({ +const CourseAssociatedProgramsWithCourseContext = ({ initialState, subsidyRequestContextValue, -}) { - return ( - <SubsidyRequestsContext.Provider value={subsidyRequestContextValue}> - <CourseContextProvider initialState={initialState}> - <CourseAssociatedPrograms /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - ); -} +}) => ( + <SubsidyRequestsContext.Provider value={subsidyRequestContextValue}> + <CourseContextProvider initialState={initialState}> + <CourseAssociatedPrograms /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> +); CourseAssociatedProgramsWithCourseContext.propTypes = { initialState: PropTypes.shape(), diff --git a/src/components/course/tests/CourseContextProvider.test.jsx b/src/components/course/tests/CourseContextProvider.test.jsx index 0f8b908e8a..c4edd99262 100644 --- a/src/components/course/tests/CourseContextProvider.test.jsx +++ b/src/components/course/tests/CourseContextProvider.test.jsx @@ -18,19 +18,17 @@ const baseInitialCourseState = { catalog: { catalogList: [] }, }; -function CourseContextProviderWrapper({ +const CourseContextProviderWrapper = ({ subsidyRequestsContextValue, initialCourseState, children, -}) { - return ( - <SubsidyRequestsContext.Provider value={subsidyRequestsContextValue}> - <CourseContextProvider initialState={initialCourseState}> - {children} - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - ); -} +}) => ( + <SubsidyRequestsContext.Provider value={subsidyRequestsContextValue}> + <CourseContextProvider initialState={initialCourseState}> + {children} + </CourseContextProvider> + </SubsidyRequestsContext.Provider> +); CourseContextProviderWrapper.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx b/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx index d4d2854d34..675b031012 100644 --- a/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx +++ b/src/components/course/tests/CourseEnrollmentFailedAlert.test.jsx @@ -36,19 +36,17 @@ const defaultCourseEnrollmentsState = { }, }; -function CourseEnrollmentFailedAlertWrapper({ +const CourseEnrollmentFailedAlertWrapper = ({ initialAppState = defaultAppState, initialCourseEnrollmentsState = defaultCourseEnrollmentsState, ...rest -}) { - return ( - <AppContext.Provider value={initialAppState}> - <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> - <CourseEnrollmentFailedAlert {...rest} /> - </CourseEnrollmentsContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> + <CourseEnrollmentFailedAlert {...rest} /> + </CourseEnrollmentsContext.Provider> + </AppContext.Provider> +); describe('<CourseEnrollmentFailedAlert />', () => { describe('Upgraded from dashboard', () => { diff --git a/src/components/course/tests/CourseHeader.test.jsx b/src/components/course/tests/CourseHeader.test.jsx index 04db125b1c..6be2c5b168 100644 --- a/src/components/course/tests/CourseHeader.test.jsx +++ b/src/components/course/tests/CourseHeader.test.jsx @@ -47,27 +47,25 @@ const defaultCourseEnrollmentsState = { }; /* eslint-disable react/prop-types */ -function CourseHeaderWrapper({ +const CourseHeaderWrapper = ({ initialAppState = {}, initialCourseEnrollmentsState = defaultCourseEnrollmentsState, initialCourseState = {}, initialUserSubsidyState = {}, initialSubsidyRequestsState = defaultSubsidyRequestsState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> - <CourseContextProvider initialState={initialCourseState}> - <CourseHeader /> - </CourseContextProvider> - </CourseEnrollmentsContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <CourseEnrollmentsContext.Provider value={initialCourseEnrollmentsState}> + <CourseContextProvider initialState={initialCourseState}> + <CourseHeader /> + </CourseContextProvider> + </CourseEnrollmentsContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<CourseHeader />', () => { diff --git a/src/components/course/tests/CourseRecommendationCard.test.jsx b/src/components/course/tests/CourseRecommendationCard.test.jsx index 6a0a3e934a..caf254e5ff 100644 --- a/src/components/course/tests/CourseRecommendationCard.test.jsx +++ b/src/components/course/tests/CourseRecommendationCard.test.jsx @@ -26,13 +26,11 @@ const initialAppState = { }; /* eslint-disable react/prop-types */ -function CourseRecommendationCardWithContext(props) { - return ( - <AppContext.Provider value={initialAppState}> - <CourseRecommendationCard {...props} /> - </AppContext.Provider> - ); -} +const CourseRecommendationCardWithContext = (props) => ( + <AppContext.Provider value={initialAppState}> + <CourseRecommendationCard {...props} /> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const TEST_COURSE_KEY = 'test-course-key'; diff --git a/src/components/course/tests/CourseRecommendations.test.jsx b/src/components/course/tests/CourseRecommendations.test.jsx index e00d049f78..76a25b7a7c 100644 --- a/src/components/course/tests/CourseRecommendations.test.jsx +++ b/src/components/course/tests/CourseRecommendations.test.jsx @@ -54,15 +54,13 @@ const initialCourseState = { }; /* eslint-disable react/prop-types */ -function CourseRecommendationsWithContext() { - return ( - <AppContext.Provider value={initialAppState}> - <CourseContext.Provider value={initialCourseState}> - <CourseRecommendations /> - </CourseContext.Provider> - </AppContext.Provider> - ); -} +const CourseRecommendationsWithContext = () => ( + <AppContext.Provider value={initialAppState}> + <CourseContext.Provider value={initialCourseState}> + <CourseRecommendations /> + </CourseContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<CourseRecommendations />', () => { diff --git a/src/components/course/tests/CourseRunCard.test.jsx b/src/components/course/tests/CourseRunCard.test.jsx index 0188daef4f..04285cecb1 100644 --- a/src/components/course/tests/CourseRunCard.test.jsx +++ b/src/components/course/tests/CourseRunCard.test.jsx @@ -33,12 +33,15 @@ const COURSE_ID = '123'; jest.mock('../../../config'); -jest.mock('../enrollment/EnrollAction', () => ({ enrollLabel, enrollmentType }) => ( - <> - <span>{enrollLabel}</span> - <span>{enrollmentType}</span> - </> -)); +// eslint-disable-next-line react/prop-types +jest.mock('../enrollment/EnrollAction', () => function ({ enrollLabel, enrollmentType }) { + return ( + <> + <span>{enrollLabel}</span> + <span>{enrollmentType}</span> + </> + ); +}); jest.mock('../data/hooks', () => ({ useUserHasSubsidyRequestForCourse: jest.fn(() => false), useCourseEnrollmentUrl: jest.fn(() => false), diff --git a/src/components/course/tests/CourseSidebarPrice.test.jsx b/src/components/course/tests/CourseSidebarPrice.test.jsx index c9d661bb91..913f190734 100644 --- a/src/components/course/tests/CourseSidebarPrice.test.jsx +++ b/src/components/course/tests/CourseSidebarPrice.test.jsx @@ -96,24 +96,22 @@ const defaultUserSubsidyState = { }; /* eslint-disable react/prop-types */ -function SidebarWithContext({ +const SidebarWithContext = ({ initialAppState = appStateWithOrigPriceHidden, subsidyRequestsState = defaultSubsidyRequestsState, initialCourseState, initialUserSubsidyState = defaultUserSubsidyState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={subsidyRequestsState}> - <CourseContextProvider initialState={initialCourseState}> - <CourseSidebarPrice /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={subsidyRequestsState}> + <CourseContextProvider initialState={initialCourseState}> + <CourseSidebarPrice /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const SPONSORED_BY_TEXT = 'Sponsored by test-enterprise'; diff --git a/src/components/course/tests/CourseSkills.test.jsx b/src/components/course/tests/CourseSkills.test.jsx index 90006598cb..a4ff82e679 100644 --- a/src/components/course/tests/CourseSkills.test.jsx +++ b/src/components/course/tests/CourseSkills.test.jsx @@ -25,21 +25,19 @@ const baseSubsidyRequestContextValue = { catalogsForSubsidyRequests: [], }; -function CourseSkillsWithContext({ +const CourseSkillsWithContext = ({ initialAppState, initialCourseState, initialSubsidyRequestContextValue, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> - <CourseContextProvider initialState={initialCourseState}> - <CourseSkills /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestContextValue}> + <CourseContextProvider initialState={initialCourseState}> + <CourseSkills /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> + </AppContext.Provider> +); CourseSkillsWithContext.propTypes = { initialAppState: PropTypes.shape(), diff --git a/src/components/course/tests/CreatedBy.test.jsx b/src/components/course/tests/CreatedBy.test.jsx index d85ac81bfe..5f69c34588 100644 --- a/src/components/course/tests/CreatedBy.test.jsx +++ b/src/components/course/tests/CreatedBy.test.jsx @@ -13,15 +13,13 @@ const initialSubsidyRequestsState = { }; // eslint-disable-next-line react/prop-types -function CreatedByWithCourseContext({ initialState = {} }) { - return ( - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <CourseContextProvider initialState={initialState}> - <CreatedBy /> - </CourseContextProvider> - </SubsidyRequestsContext.Provider> - ); -} +const CreatedByWithCourseContext = ({ initialState = {} }) => ( + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <CourseContextProvider initialState={initialState}> + <CreatedBy /> + </CourseContextProvider> + </SubsidyRequestsContext.Provider> +); describe('<CreatedBy />', () => { const initialState = { diff --git a/src/components/course/tests/LicenseRequestedAlert.test.jsx b/src/components/course/tests/LicenseRequestedAlert.test.jsx index 288025a97d..5a98c9e0ed 100644 --- a/src/components/course/tests/LicenseRequestedAlert.test.jsx +++ b/src/components/course/tests/LicenseRequestedAlert.test.jsx @@ -24,9 +24,9 @@ const initialLicenseRequests = [ ]; /* eslint-disable react/prop-types */ -function LicenseRequestedAlertWrapper({ +const LicenseRequestedAlertWrapper = ({ subscriptions = initialSubscriptions, licenseRequests = initialLicenseRequests, -}) { +}) => { const contextValue = useMemo(() => ({ couponCodes: { couponCodes: [], @@ -53,7 +53,7 @@ function LicenseRequestedAlertWrapper({ </SubsidyRequestsContext.Provider> </UserSubsidyContext.Provider> ); -} +}; /* eslint-enable react/prop-types */ describe('<LicenseRequestedAlert />', () => { diff --git a/src/components/course/tests/SubsidyRequestButton.test.jsx b/src/components/course/tests/SubsidyRequestButton.test.jsx index 2b4cde6992..e6af8a19f2 100644 --- a/src/components/course/tests/SubsidyRequestButton.test.jsx +++ b/src/components/course/tests/SubsidyRequestButton.test.jsx @@ -52,18 +52,23 @@ const initialCourseState = { subsidyRequestCatalogsApplicableToCourse: new Set([TEST_CATALOG_UUID]), }; -function SubsidyRequestButtonWrapper({ +const SubsidyRequestButtonWrapper = ({ subsidyRequestsState = {}, courseState = {}, -}) => ( - <ToastsContext.Provider value={initialToastsState}> - <SubsidyRequestsContext.Provider value={{ ...initialSubsidyRequestsState, ...subsidyRequestsState }}> - <CourseContext.Provider value={{ ...initialCourseState, ...courseState }}> - <SubsidyRequestButton /> - </CourseContext.Provider> - </SubsidyRequestsContext.Provider> - </ToastsContext.Provider> -); +}) => { + const subsidyContextValue = useMemo(() => ( + { ...initialSubsidyRequestsState, ...subsidyRequestsState }), [subsidyRequestsState]); + const courseContextValue = useMemo(() => ({ ...initialCourseState, ...courseState }), [courseState]); + return ( + <ToastsContext.Provider value={initialToastsState}> + <SubsidyRequestsContext.Provider value={subsidyContextValue}> + <CourseContext.Provider value={courseContextValue}> + <SubsidyRequestButton /> + </CourseContext.Provider> + </SubsidyRequestsContext.Provider> + </ToastsContext.Provider> + ); +}; describe('<SubsidyRequestButton />', () => { afterEach(() => jest.clearAllMocks()); diff --git a/src/components/dashboard/DashboardPage.jsx b/src/components/dashboard/DashboardPage.jsx index db48287d44..f02964d501 100644 --- a/src/components/dashboard/DashboardPage.jsx +++ b/src/components/dashboard/DashboardPage.jsx @@ -20,7 +20,7 @@ import { features } from '../../config'; export const LICENCE_ACTIVATION_MESSAGE = 'Your license was successfully activated.'; -export default function DashboardPage() { +const DashboardPage = () => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, showExpirationNotifications } = useContext(UserSubsidyContext); const { state } = useLocation(); @@ -100,4 +100,6 @@ export default function DashboardPage() { </Container> </> ); -} +}; + +export default DashboardPage; diff --git a/src/components/dashboard/SubscriptionExpirationModal.jsx b/src/components/dashboard/SubscriptionExpirationModal.jsx index bdebd5474d..67645db190 100644 --- a/src/components/dashboard/SubscriptionExpirationModal.jsx +++ b/src/components/dashboard/SubscriptionExpirationModal.jsx @@ -18,7 +18,7 @@ export const MODAL_DIALOG_CLASS_NAME = 'subscription-expiration'; export const SUBSCRIPTION_EXPIRED_MODAL_TITLE = 'Your subscription has expired'; export const SUBSCRIPTION_EXPIRING_MODAL_TITLE = 'Your subscription is expiring'; -function SubscriptionExpirationModal() { +const SubscriptionExpirationModal = () => { const { enterpriseConfig: { uuid: enterpriseId, adminUsers }, config, @@ -156,6 +156,6 @@ function SubscriptionExpirationModal() { open /> ); -} +}; export default SubscriptionExpirationModal; diff --git a/src/components/dashboard/main-content/DashboardMainContent.jsx b/src/components/dashboard/main-content/DashboardMainContent.jsx index e7ccdceaa7..befafe8b4d 100644 --- a/src/components/dashboard/main-content/DashboardMainContent.jsx +++ b/src/components/dashboard/main-content/DashboardMainContent.jsx @@ -11,7 +11,7 @@ import SupportInformation from '../sidebar/SupportInformation'; import SubsidiesSummary from '../sidebar/SubsidiesSummary'; import CourseRecommendations from './CourseRecommendations'; -function DashboardMainContent() { +const DashboardMainContent = () => { const { enterpriseConfig: { name, @@ -59,6 +59,6 @@ function DashboardMainContent() { </MediaQuery> </> ); -} +}; export default DashboardMainContent; diff --git a/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx b/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx index 22e4bf0bc2..6f8f302ff6 100644 --- a/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CollapsibleIcon.jsx @@ -2,15 +2,13 @@ import React from 'react'; import PropTypes from 'prop-types'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -function CollapsibleIcon(props) { - return ( - <FontAwesomeIcon - className="color-brand-primary mr-2" - icon={props.icon} - size="2x" - /> - ); -} +const CollapsibleIcon = (props) => ( + <FontAwesomeIcon + className="color-brand-primary mr-2" + icon={props.icon} + size="2x" + /> +); CollapsibleIcon.propTypes = { icon: PropTypes.shape({ diff --git a/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx b/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx index 7c3a01c528..3e649820a6 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseEnrollments.jsx @@ -13,7 +13,7 @@ export const COURSE_SECTION_TITLES = { savedForLater: 'Saved for later', }; -function CourseEnrollments({ children }) { +const CourseEnrollments = ({ children }) => { const { courseEnrollmentsByStatus, fetchCourseEnrollmentsError, @@ -88,7 +88,7 @@ function CourseEnrollments({ children }) { </> </> ); -} +}; CourseEnrollments.propTypes = { children: PropTypes.node, diff --git a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx index dad03cd9f6..049b26c2eb 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsAlert.jsx @@ -8,11 +8,11 @@ const iconByVariant = { danger: WarningFilled, }; -function CourseEnrollmentsAlert({ +const CourseEnrollmentsAlert = ({ children, variant, onClose, -}) { +}) => { const icon = iconByVariant[variant]; return ( @@ -26,7 +26,7 @@ function CourseEnrollmentsAlert({ {children} </Alert> ); -} +}; CourseEnrollmentsAlert.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx index e2f6b0130e..e70c62eff4 100644 --- a/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx +++ b/src/components/dashboard/main-content/course-enrollments/CourseEnrollmentsContextProvider.jsx @@ -11,7 +11,7 @@ import { transformSubsidyRequest } from './data/utils'; export const CourseEnrollmentsContext = createContext(); -function CourseEnrollmentsContextProvider({ children }) { +const CourseEnrollmentsContextProvider = ({ children }) => { const { enterpriseConfig: { uuid: enterpriseUUID, @@ -82,7 +82,7 @@ function CourseEnrollmentsContextProvider({ children }) { {children} </CourseEnrollmentsContext.Provider> ); -} +}; CourseEnrollmentsContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx b/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx index d4d5aeb8bc..70c47ae13b 100644 --- a/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx +++ b/src/components/dashboard/main-content/course-enrollments/UpgradeableCourseEnrollmentContextProvider.jsx @@ -9,7 +9,7 @@ import { UserSubsidyContext } from '../../../enterprise-user-subsidy'; export const UpgradeableCourseEnrollmentContext = createContext({ isLoading: false, upgradeUrl: undefined }); -export function UpgradeableCourseEnrollmentContextProvider({ courseEnrollment, children }) { +export const UpgradeableCourseEnrollmentContextProvider = ({ courseEnrollment, children }) => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionLicense, couponCodes: { couponCodes } } = useContext(UserSubsidyContext); const location = useLocation(); @@ -43,7 +43,7 @@ export function UpgradeableCourseEnrollmentContextProvider({ courseEnrollment, c {children} </UpgradeableCourseEnrollmentContext.Provider> ); -} +}; UpgradeableCourseEnrollmentContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx index 24c6114c3a..0ede7c7a4c 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/CompletedCourseCard.jsx @@ -9,7 +9,7 @@ import ContinueLearningButton from './ContinueLearningButton'; import { isCourseEnded } from '../../../../../utils/common'; import CertificateImg from './images/edx-verified-mini-cert.png'; -function CompletedCourseCard(props) { +const CompletedCourseCard = (props) => { const user = getAuthenticatedUser(); const { username } = user; const { @@ -69,7 +69,7 @@ function CompletedCourseCard(props) { {renderCertificateInfo()} </BaseCourseCard> ); -} +}; CompletedCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/ContinueLearningButton.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/ContinueLearningButton.jsx index e9a0be3ff4..e9c28922a7 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/ContinueLearningButton.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/ContinueLearningButton.jsx @@ -15,12 +15,12 @@ import { sendEnterpriseTrackEvent } from '@edx/frontend-enterprise-utils'; * * @returns {Function} A functional React component for the continue learning button. */ -export default function ContinueLearningButton({ +const ContinueLearningButton = ({ className, linkToCourse, title, courseRunId, -}) { +}) => { const { enterpriseConfig } = useContext(AppContext); const onClickHandler = () => { @@ -42,7 +42,7 @@ export default function ContinueLearningButton({ <span className="sr-only">for {title}</span> </a> ); -} +}; ContinueLearningButton.defaultProps = { className: 'btn-outline-primary', @@ -54,3 +54,5 @@ ContinueLearningButton.propTypes = { title: PropTypes.string.isRequired, courseRunId: PropTypes.string.isRequired, }; + +export default ContinueLearningButton; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx index 5dbfb003d2..1ed35d2038 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/InProgressCourseCard.jsx @@ -14,14 +14,14 @@ import { CourseEnrollmentsContext } from '../CourseEnrollmentsContextProvider'; import { UpgradeableCourseEnrollmentContext } from '../UpgradeableCourseEnrollmentContextProvider'; import UpgradeCourseButton from './UpgradeCourseButton'; -export function InProgressCourseCard({ +export const InProgressCourseCard = ({ linkToCourse, courseRunId, title, notifications, courseRunStatus, ...rest -}) { +}) => { const { isLoading: isLoadingUpgradeUrl, licenseUpgradeUrl, @@ -165,7 +165,7 @@ export function InProgressCourseCard({ /> </BaseCourseCard> ); -} +}; InProgressCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx index b8a0850c57..c57bcfe237 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/Notification.jsx @@ -3,34 +3,32 @@ import PropTypes from 'prop-types'; import moment from 'moment'; import { sendEnterpriseTrackEvent } from '@edx/frontend-enterprise-utils'; -function Notification(props) { - return ( - <li> - <div className="notification p-2 mb-2 border rounded"> - <div className="row no-gutters"> - <div className="col-12"> - <a - href={props.url} - onClick={() => sendEnterpriseTrackEvent( - props.enterpriseUUID, - 'edx.ui.enterprise.learner_portal.notification.clicked', - { course_run_id: props.courseRunId, name: props.name }, - )} - > - {props.name} - </a> - {' is due '} - <span className="font-weight-bold"> - {moment(props.date).fromNow()} - </span> - {' on '} - {moment(props.date).format('ddd MMMM D, YYYY')} - </div> +const Notification = (props) => ( + <li> + <div className="notification p-2 mb-2 border rounded"> + <div className="row no-gutters"> + <div className="col-12"> + <a + href={props.url} + onClick={() => sendEnterpriseTrackEvent( + props.enterpriseUUID, + 'edx.ui.enterprise.learner_portal.notification.clicked', + { course_run_id: props.courseRunId, name: props.name }, + )} + > + {props.name} + </a> + {' is due '} + <span className="font-weight-bold"> + {moment(props.date).fromNow()} + </span> + {' on '} + {moment(props.date).format('ddd MMMM D, YYYY')} </div> </div> - </li> - ); -} + </div> + </li> +); Notification.propTypes = { name: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx index 0c7c7b6110..becab65b8e 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/RequestedCourseCard.jsx @@ -5,15 +5,13 @@ import BaseCourseCard from './BaseCourseCard'; import { COURSE_STATUSES } from '../data/constants'; -function RequestedCourseCard(props) { - return ( - <BaseCourseCard - type={COURSE_STATUSES.requested} - hasViewCertificateLink={false} - {...props} - /> - ); -} +const RequestedCourseCard = (props) => ( + <BaseCourseCard + type={COURSE_STATUSES.requested} + hasViewCertificateLink={false} + {...props} + /> +); RequestedCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx index ba3489152f..f5fcbdcbbc 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/SavedForLaterCourseCard.jsx @@ -11,7 +11,7 @@ import { isCourseEnded } from '../../../../../utils/common'; import { COURSE_STATUSES } from '../data/constants'; import { CourseEnrollmentsContext } from '../CourseEnrollmentsContextProvider'; -function SavedForLaterCourseCard(props) { +const SavedForLaterCourseCard = (props) => { const { title, linkToCourse, @@ -122,7 +122,7 @@ function SavedForLaterCourseCard(props) { /> </BaseCourseCard> ); -} +}; SavedForLaterCourseCard.propTypes = { linkToCourse: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx index c5455f75ca..4cee187557 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/UpcomingCourseCard.jsx @@ -5,7 +5,7 @@ import moment from 'moment'; import { Button } from '@edx/paragon'; import BaseCourseCard from './BaseCourseCard'; -function UpcomingCourseCard(props) { +const UpcomingCourseCard = (props) => { const renderButtons = () => ( <Button className="btn-xs-block" variant="light" disabled> Available on {moment(props.startDate).format('MMM D')} @@ -15,7 +15,7 @@ function UpcomingCourseCard(props) { return ( <BaseCourseCard type="upcoming" buttons={renderButtons()} {...props} /> ); -} +}; UpcomingCourseCard.propTypes = { startDate: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/UpgradeCourseButton.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/UpgradeCourseButton.jsx index 84c454c883..8b58949bc2 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/UpgradeCourseButton.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/UpgradeCourseButton.jsx @@ -11,11 +11,11 @@ import { UserSubsidyContext } from '../../../../enterprise-user-subsidy'; /** * Button for upgrading a course via coupon code (possibly offer later on). */ -export default function UpgradeCourseButton({ +const UpgradeCourseButton = ({ className, title, variant, -}) { +}) => { const [isModalOpen, setIsModalOpen] = useState(false); const { enterpriseConfig: { uuid } } = useContext(AppContext); @@ -64,7 +64,7 @@ export default function UpgradeCourseButton({ </> ); -} +}; UpgradeCourseButton.defaultProps = { className: undefined, @@ -76,3 +76,5 @@ UpgradeCourseButton.propTypes = { variant: PropTypes.string, title: PropTypes.string.isRequired, }; + +export default UpgradeCourseButton; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx index 9dc710a6d2..71e21f6d37 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/MarkCompleteModal.jsx @@ -17,14 +17,14 @@ const initialState = { confirmSuccessful: false, }; -function MarkCompleteModal({ +const MarkCompleteModal = ({ courseId, isOpen, courseTitle, courseLink, onSuccess, onClose, -}) { +}) => { const { enterpriseConfig: { uuid } } = useContext(AppContext); const [ { confirmButtonState, confirmError, confirmSuccessful }, @@ -97,7 +97,7 @@ function MarkCompleteModal({ /> </MarkCompleteModalContext.Provider> ); -} +}; MarkCompleteModal.propTypes = { courseId: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx index fa6812b8e3..7efbde7724 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalBody.jsx @@ -3,7 +3,7 @@ import React, { useContext } from 'react'; import ModalError from './ModalError'; import MarkCompleteModalContext from './MarkCompleteModalContext'; -function ModalBody() { +const ModalBody = () => { const { confirmError, courseLink, @@ -26,6 +26,6 @@ function ModalBody() { </p> </> ); -} +}; export default ModalBody; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx index 0937fc288c..68e44fcc86 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/ModalError.jsx @@ -4,13 +4,13 @@ import { Error } from '@edx/paragon/icons'; import MarkCompleteModalContext from './MarkCompleteModalContext'; -function ModalError() { +const ModalError = () => { const { courseLink, courseTitle } = useContext(MarkCompleteModalContext); return ( <Alert variant="danger" icon={Error}> Unable to save <Alert.Link href={courseLink}>{courseTitle}</Alert.Link> for later. Please try again. </Alert> ); -} +}; export default ModalError; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx index 269d706c63..e7ca3b7fc4 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/mark-complete-modal/tests/MarkCompleteModal.test.jsx @@ -9,7 +9,7 @@ import * as service from '../data/service'; jest.mock('../data/service'); -function ModalWrapper({ initialProps, enterpriseConfig }) { +const ModalWrapper = ({ initialProps, enterpriseConfig }) => { const contextValue = useMemo(() => ({ enterpriseConfig }), [enterpriseConfig]); return ( <AppContext.Provider value={contextValue}> @@ -18,7 +18,7 @@ function ModalWrapper({ initialProps, enterpriseConfig }) { /> </AppContext.Provider> ); -} +}; ModalWrapper.propTypes = { initialProps: PropTypes.shape({}).isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx index 0dc9711a5c..9c2227e2f8 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalBody.jsx @@ -3,7 +3,7 @@ import React, { useContext } from 'react'; import ModalError from './ModalError'; import MoveToInProgressModalContext from './MoveToInProgressModalContext'; -function ModalBody() { +const ModalBody = () => { const { confirmError, courseLink, @@ -24,6 +24,6 @@ function ModalBody() { </p> </> ); -} +}; export default ModalBody; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx index 5034d8c015..a7b41013c5 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/ModalError.jsx @@ -4,13 +4,13 @@ import { Error } from '@edx/paragon/icons'; import MoveToInProgressModalContext from './MoveToInProgressModalContext'; -function ModalError() { +const ModalError = () => { const { courseLink, courseTitle } = useContext(MoveToInProgressModalContext); return ( <Alert variant="danger" icon={Error}> An error occurred while unarchiving <Alert.Link href={courseLink}>{courseTitle}</Alert.Link>. Please try again. </Alert> ); -} +}; export default ModalError; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx index 05c1764c66..2a73ea9e46 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/move-to-in-progress-modal/MoveToInProgressModal.jsx @@ -17,14 +17,14 @@ const initialState = { confirmSuccessful: false, }; -function MoveToInProgressModal({ +const MoveToInProgressModal = ({ courseId, isOpen, courseTitle, courseLink, onSuccess, onClose, -}) { +}) => { const { enterpriseConfig: { uuid } } = useContext(AppContext); const [ { confirmButtonState, confirmError, confirmSuccessful }, @@ -88,7 +88,7 @@ function MoveToInProgressModal({ /> </MoveToInProgressModalContext.Provider> ); -} +}; MoveToInProgressModal.propTypes = { courseId: PropTypes.string.isRequired, diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx index fa4357348a..9dfcfbba9c 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/BaseCourseCard.test.jsx @@ -21,7 +21,7 @@ const enterpriseConfig = { name: 'test-enterprise-name', }; -function CourseCardWrapper({ isLoading }) { +const CourseCardWrapper = ({ isLoading }) => { const contextValue = useMemo(() => ({ enterpriseConfig }), []); return ( <AppContext.Provider value={contextValue}> @@ -35,7 +35,7 @@ function CourseCardWrapper({ isLoading }) { /> </AppContext.Provider> ); -} +}; CourseCardWrapper.defaultProps = { isLoading: false, }; @@ -44,7 +44,7 @@ CourseCardWrapper.propTypes = { isLoading: PropTypes.bool, }; -function CourseEnrollmentWrapper() { +const CourseEnrollmentWrapper = () => { const contextValue = useMemo(() => ({ enterpriseConfig }), []); const toastContextValue = useMemo(() => ({ addToast: jest.fn() }), []); const enrollmentContextValue = useMemo(() => ({ removeCourseEnrollment: jest.fn() }), []); @@ -64,7 +64,7 @@ function CourseEnrollmentWrapper() { </ToastsContext.Provider> </AppContext.Provider> ); -} +}; describe('<BaseCourseCard />', () => { let wrapper; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx index 7d7f9fc92d..7b6c090a17 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/tests/InProgressCourseCard.test.jsx @@ -26,7 +26,7 @@ const basicProps = { notifications: [], }; -function InProgressCourseCardWrapper({ +const InProgressCourseCardWrapper = ({ appContextValue = { enterpriseConfig: { @@ -48,19 +48,17 @@ function InProgressCourseCardWrapper({ couponUpgradeUrl: undefined, }, ...rest -}) { - return ( - <AppContext.Provider value={appContextValue}> - <UserSubsidyContext.Provider value={userSubsidyContextValue}> - <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> - <UpgradeableCourseEnrollmentContext.Provider value={upgradeableCourseEnrollmentContextValue}> - <InProgressCourseCard {...rest} /> - </UpgradeableCourseEnrollmentContext.Provider> - </CourseEnrollmentsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={appContextValue}> + <UserSubsidyContext.Provider value={userSubsidyContextValue}> + <CourseEnrollmentsContext.Provider value={courseEnrollmentsContextValue}> + <UpgradeableCourseEnrollmentContext.Provider value={upgradeableCourseEnrollmentContextValue}> + <InProgressCourseCard {...rest} /> + </UpgradeableCourseEnrollmentContext.Provider> + </CourseEnrollmentsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<InProgressCourseCard />', () => { it('should not render upgrade course button if there is no couponUpgradeUrl', () => { diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.jsx index 81e3bc6f97..b4bcee2562 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.jsx @@ -14,13 +14,13 @@ const btnLabels = { pending: 'Unenrolling...', }; -export default function UnenrollModal({ +const UnenrollModal = ({ courseRunId, enrollmentType, isOpen, onClose, onSuccess, -}) { +}) => { const { removeCourseEnrollment } = useContext(CourseEnrollmentsContext); const { addToast } = useContext(ToastsContext); @@ -88,7 +88,7 @@ export default function UnenrollModal({ </> </AlertModal> ); -} +}; UnenrollModal.propTypes = { courseRunId: PropTypes.string.isRequired, @@ -97,3 +97,5 @@ UnenrollModal.propTypes = { onClose: PropTypes.func.isRequired, onSuccess: PropTypes.func.isRequired, }; + +export default UnenrollModal; diff --git a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx index d1687497eb..3559dc0632 100644 --- a/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/course-cards/unenroll/UnenrollModal.test.jsx @@ -35,11 +35,11 @@ const baseUnenrollModalProps = { const mockAddToast = jest.fn(); -function UnenrollModalWrapper({ +const UnenrollModalWrapper = ({ // eslint-disable-next-line react/prop-types courseEnrollmentsContextValue = defaultCourseEnrollmentsContextValue, ...props -}) { +}) => { const contextValue = useMemo(() => ({ addToast: mockAddToast }), []); return ( <ToastsContext.Provider value={contextValue}> @@ -48,7 +48,7 @@ function UnenrollModalWrapper({ </CourseEnrollmentsContext.Provider> </ToastsContext.Provider> ); -} +}; describe('<UnenrollModal />', () => { beforeEach(() => { diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx index 8e12fd4086..8e597c63dd 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseEnrollments.test.jsx @@ -58,7 +58,7 @@ hooks.useCourseEnrollments.mockReturnValue({ updateCourseEnrollmentStatus: jest.fn(), }); -function RenderEnrollmentsComponent() { +const RenderEnrollmentsComponent = () => { const contextValue = useMemo(() => ({ enterpriseConfig }), []); const requestsContextValue = useMemo(() => ({ isLoading: false }), []); return ( @@ -70,7 +70,7 @@ function RenderEnrollmentsComponent() { </SubsidyRequestsContext.Provider> </AppContext.Provider> ); -} +}; describe('Course enrollments', () => { beforeEach(() => { diff --git a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx index fcff21eb44..2162fe6695 100644 --- a/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx +++ b/src/components/dashboard/main-content/course-enrollments/tests/CourseSection.test.jsx @@ -33,7 +33,7 @@ const CARD_COMPONENT_BY_COURSE_STATUS = { }; const TEST_ENTERPRISE_UUID = 'test-uuid'; -function CourseSectionWrapper(props) { +const CourseSectionWrapper = (props) => { const contextValue = useMemo(() => ({ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, @@ -46,7 +46,7 @@ function CourseSectionWrapper(props) { /> </AppContext.Provider> ); -} +}; describe('<CourseSection />', () => { it('should handle collapsible toggle', () => { diff --git a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx index 6955e29f2f..85068fbf28 100644 --- a/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx +++ b/src/components/dashboard/sidebar/CouponCodesSummaryCard.jsx @@ -16,9 +16,9 @@ import { } from './data/constants'; import CouponCodesWarningModal from '../../program-progress/CouponCodesWarningModal'; -function CouponCodesSummaryCard({ +const CouponCodesSummaryCard = ({ couponCodesCount, couponCodeRequestsCount, className, totalCoursesEligibleForCertificate, programProgressPage, -}) { +}) => { const [ isCouponCodeWarningModalOpen, couponCodeWarningModalOpen, @@ -105,7 +105,7 @@ function CouponCodesSummaryCard({ )} </> ); -} +}; CouponCodesSummaryCard.propTypes = { couponCodesCount: PropTypes.number, diff --git a/src/components/dashboard/sidebar/DashboardSidebar.jsx b/src/components/dashboard/sidebar/DashboardSidebar.jsx index c1af5fe06d..b020d51b51 100644 --- a/src/components/dashboard/sidebar/DashboardSidebar.jsx +++ b/src/components/dashboard/sidebar/DashboardSidebar.jsx @@ -4,17 +4,15 @@ import { Card } from '@edx/paragon'; import SupportInformation from './SupportInformation'; import SubsidiesSummary from './SubsidiesSummary'; -function DashboardSidebar() { - return ( - <div className="mt-3 mt-lg-0"> - <SubsidiesSummary /> - <Card> - <Card.Section> - <SupportInformation /> - </Card.Section> - </Card> - </div> - ); -} +const DashboardSidebar = () => ( + <div className="mt-3 mt-lg-0"> + <SubsidiesSummary /> + <Card> + <Card.Section> + <SupportInformation /> + </Card.Section> + </Card> + </div> +); export default DashboardSidebar; diff --git a/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx b/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx index 7073ec2f01..6c6148ec45 100644 --- a/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx +++ b/src/components/dashboard/sidebar/EnterpriseOffersSummaryCard.jsx @@ -44,7 +44,7 @@ const EnterpriseOffersSummaryCard = ({ className, offer, searchCoursesCta }) => </p> ) } - {offer.endDatetime + {offer.endDatetime && ( <p data-testid="offer-summary-end-date-text"> Available until <b>{moment(offer.endDatetime).format('MMM D, YYYY')}</b> diff --git a/src/components/dashboard/sidebar/SidebarCard.jsx b/src/components/dashboard/sidebar/SidebarCard.jsx index 02ed1fd39f..0fa3ea598a 100644 --- a/src/components/dashboard/sidebar/SidebarCard.jsx +++ b/src/components/dashboard/sidebar/SidebarCard.jsx @@ -2,23 +2,21 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Card } from '@edx/paragon'; -function SidebarCard({ +const SidebarCard = ({ title, children, cardClassNames, cardSectionClassNames, -}) { - return ( - <Card className={cardClassNames}> - {title && <Card.Header title={title} />} - <Card.Section - className={cardSectionClassNames} - > - {children} - </Card.Section> - </Card> - ); -} +}) => ( + <Card className={cardClassNames}> + {title && <Card.Header title={title} />} + <Card.Section + className={cardSectionClassNames} + > + {children} + </Card.Section> + </Card> +); SidebarCard.propTypes = { title: PropTypes.node, diff --git a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx index f11af04f53..3b3b7cb0a9 100644 --- a/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx +++ b/src/components/dashboard/sidebar/SubscriptionSummaryCard.jsx @@ -22,9 +22,9 @@ import { } from './data/constants'; import SubscriptionExpirationWarningModal from '../../program-progress/SubscriptionExpiringWarningModal'; -function SubscriptionSummaryCard({ +const SubscriptionSummaryCard = ({ subscriptionPlan, licenseRequest, className, courseEndDate, programProgressPage, -}) { +}) => { const [ isSubscriptionExpiringWarningModalOpen, subscriptionExpiringWarningModalOpen, @@ -147,7 +147,7 @@ function SubscriptionSummaryCard({ )} </> ); -} +}; SubscriptionSummaryCard.propTypes = { subscriptionPlan: PropTypes.shape({ diff --git a/src/components/dashboard/sidebar/SubsidiesSummary.jsx b/src/components/dashboard/sidebar/SubsidiesSummary.jsx index 2587ed692d..b4bcfb94dd 100644 --- a/src/components/dashboard/sidebar/SubsidiesSummary.jsx +++ b/src/components/dashboard/sidebar/SubsidiesSummary.jsx @@ -15,9 +15,9 @@ import SidebarCard from './SidebarCard'; import { CourseEnrollmentsContext } from '../main-content/course-enrollments/CourseEnrollmentsContextProvider'; import { SubsidyRequestsContext, SUBSIDY_TYPE } from '../../enterprise-subsidy-requests'; -function SubsidiesSummary({ +const SubsidiesSummary = ({ className, showSearchCoursesCta, totalCoursesEligibleForCertificate, courseEndDate, programProgressPage, -}) { +}) => { const { enterpriseConfig: { slug, @@ -77,48 +77,46 @@ function SubsidiesSummary({ return ( // TODO: Design debt, don't have cards in a card - <> - <SidebarCard - cardSectionClassNames="border-remove" - cardClassNames={classNames('mb-5', { 'col-8 border-remove': programProgressPage })} - > - <div className={className} data-testid="subsidies-summary"> - {hasActiveLicenseOrLicenseRequest && ( - <SubscriptionSummaryCard - subscriptionPlan={subscriptionPlan} - licenseRequest={licenseRequests[0]} - courseEndDate={courseEndDate} - programProgressPage={programProgressPage} - className="mb-2 border-remove" - /> - )} - {hasAssignedCodesOrCodeRequests && ( - <CouponCodesSummaryCard - couponCodesCount={couponCodesCount} - couponCodeRequestsCount={couponCodeRequests.length} - totalCoursesEligibleForCertificate={totalCoursesEligibleForCertificate} - programProgressPage={programProgressPage} - className="mb-2 border-remove" - /> - )} - {canEnrollWithEnterpriseOffers && ( - <EnterpriseOffersSummaryCard - className="border-remove" - offer={enterpriseOffers[0]} - /> - )} - </div> - {searchCoursesCta && ( - <SidebarCard - cardClassNames="border-remove" - > - {searchCoursesCta} - </SidebarCard> + <SidebarCard + cardSectionClassNames="border-remove" + cardClassNames={classNames('mb-5', { 'col-8 border-remove': programProgressPage })} + > + <div className={className} data-testid="subsidies-summary"> + {hasActiveLicenseOrLicenseRequest && ( + <SubscriptionSummaryCard + subscriptionPlan={subscriptionPlan} + licenseRequest={licenseRequests[0]} + courseEndDate={courseEndDate} + programProgressPage={programProgressPage} + className="mb-2 border-remove" + /> + )} + {hasAssignedCodesOrCodeRequests && ( + <CouponCodesSummaryCard + couponCodesCount={couponCodesCount} + couponCodeRequestsCount={couponCodeRequests.length} + totalCoursesEligibleForCertificate={totalCoursesEligibleForCertificate} + programProgressPage={programProgressPage} + className="mb-2 border-remove" + /> )} - </SidebarCard> - </> + {canEnrollWithEnterpriseOffers && ( + <EnterpriseOffersSummaryCard + className="border-remove" + offer={enterpriseOffers[0]} + /> + )} + </div> + {searchCoursesCta && ( + <SidebarCard + cardClassNames="border-remove" + > + {searchCoursesCta} + </SidebarCard> + )} + </SidebarCard> ); -} +}; SubsidiesSummary.propTypes = { totalCoursesEligibleForCertificate: PropTypes.number, diff --git a/src/components/dashboard/sidebar/SupportInformation.jsx b/src/components/dashboard/sidebar/SupportInformation.jsx index 78cfed7dad..1403098981 100644 --- a/src/components/dashboard/sidebar/SupportInformation.jsx +++ b/src/components/dashboard/sidebar/SupportInformation.jsx @@ -7,7 +7,7 @@ import PropTypes from 'prop-types'; import { SidebarBlock } from '../../layout'; import { CONTACT_HELP_EMAIL_MESSAGE, NEED_HELP_BLOCK_TITLE } from './data/constants'; -function SupportInformation({ className }) { +const SupportInformation = ({ className }) => { const config = getConfig(); const { enterpriseConfig: { @@ -51,7 +51,7 @@ function SupportInformation({ className }) { </p> </SidebarBlock> ); -} +}; SupportInformation.propTypes = { className: PropTypes.string, diff --git a/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx b/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx index 5f6cceec35..0055ee89c9 100644 --- a/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx +++ b/src/components/dashboard/sidebar/tests/DashboardSidebar.test.jsx @@ -20,7 +20,7 @@ import { SubsidyRequestsContext } from '../../../enterprise-subsidy-requests'; import { SUBSIDY_REQUEST_STATE, SUBSIDY_TYPE } from '../../../enterprise-subsidy-requests/constants'; /* eslint-disable react/prop-types */ -function DashboardSidebarWithContext({ +const DashboardSidebarWithContext = ({ initialAppState = { fakeContext: 'foo' }, initialUserSubsidyState = {}, initialSubsidyRequestsState = { @@ -34,19 +34,17 @@ function DashboardSidebarWithContext({ initialCourseEnrollmentsState = { courseEnrollmentsByStatus: {}, }, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <CourseEnrollmentsContextProvider value={initialCourseEnrollmentsState}> - <DashboardSidebar /> - </CourseEnrollmentsContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <CourseEnrollmentsContextProvider value={initialCourseEnrollmentsState}> + <DashboardSidebar /> + </CourseEnrollmentsContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<DashboardSidebar />', () => { diff --git a/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx b/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx index ce6c8d6350..57452becc5 100644 --- a/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx +++ b/src/components/dashboard/sidebar/tests/SubscriptionSummaryCard.test.jsx @@ -42,15 +42,13 @@ const initialUserSubsidyState = { }, }; -function SubscriptionSummaryCardForProgressPageWithContext(props) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubscriptionSummaryCard {...props} /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +const SubscriptionSummaryCardForProgressPageWithContext = (props) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubscriptionSummaryCard {...props} /> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SubscriptionSummaryCard />', () => { const subscriptionPlan = { diff --git a/src/components/dashboard/tests/DashboardPage.test.jsx b/src/components/dashboard/tests/DashboardPage.test.jsx index 77badd0cb8..c3a42f7e3b 100644 --- a/src/components/dashboard/tests/DashboardPage.test.jsx +++ b/src/components/dashboard/tests/DashboardPage.test.jsx @@ -104,26 +104,24 @@ let mockLocation = { }; /* eslint-disable react/prop-types */ -function DashboardWithContext({ +const DashboardWithContext = ({ initialAppState = defaultAppState, initialUserSubsidyState = defaultUserSubsidyState, initialCourseState = defaultCourseState, initialSubsidyRequestState = defaultSubsidyRequestState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <CourseEnrollmentsContextProvider> - <CourseContextProvider initialState={initialCourseState}> - <DashboardPage /> - </CourseContextProvider> - </CourseEnrollmentsContextProvider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <CourseEnrollmentsContextProvider> + <CourseContextProvider initialState={initialCourseState}> + <DashboardPage /> + </CourseContextProvider> + </CourseEnrollmentsContextProvider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ jest.mock('react-router-dom', () => ({ diff --git a/src/components/enterprise-banner/EnterpriseBanner.jsx b/src/components/enterprise-banner/EnterpriseBanner.jsx index aaeb028c6e..0eddde8287 100644 --- a/src/components/enterprise-banner/EnterpriseBanner.jsx +++ b/src/components/enterprise-banner/EnterpriseBanner.jsx @@ -5,7 +5,7 @@ import { Button, Container } from '@edx/paragon'; import './styles/EnterpriseBanner.scss'; -export default function EnterpriseBanner() { +const EnterpriseBanner = () => { const location = useLocation(); const { enterpriseConfig } = useContext(AppContext); const isSearchPage = `/${ enterpriseConfig.slug }/search` === location.pathname; @@ -30,4 +30,6 @@ export default function EnterpriseBanner() { </Container> </div> ); -} +}; + +export default EnterpriseBanner; diff --git a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx index f1dcd9b465..83872e2106 100644 --- a/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx +++ b/src/components/enterprise-banner/tests/EnterpriseBanner.test.jsx @@ -9,7 +9,7 @@ jest.mock('react-router-dom', () => ({ useLocation: jest.fn(), })); -function BannerWrapper() { +const BannerWrapper = () => { const contextValue = useMemo(() => ({ enterpriseConfig: { slug: 'slug', @@ -23,7 +23,7 @@ function BannerWrapper() { <EnterpriseBanner /> </AppContext.Provider> ); -} +}; describe('<EnterpriseBanner />', () => { afterAll(() => { diff --git a/src/components/enterprise-invite/EnterpriseInvitePage.jsx b/src/components/enterprise-invite/EnterpriseInvitePage.jsx index 2e09af24a6..2c1f38f57a 100644 --- a/src/components/enterprise-invite/EnterpriseInvitePage.jsx +++ b/src/components/enterprise-invite/EnterpriseInvitePage.jsx @@ -31,7 +31,7 @@ export const CTA_BUTTON_TEXT = 'Continue to edX.org'; * If successful, the user is redirected to their enterprise customer's Learner Portal * slug. If an error occurred, an appropriate error page is shown and an error is logged. */ -function EnterpriseInvitePage() { +const EnterpriseInvitePage = () => { const { enterpriseCustomerInviteKey } = useParams(); const [inviteError, setInviteError] = useState(); const [isLoading, setIsLoading] = useState(true); @@ -114,6 +114,6 @@ function EnterpriseInvitePage() { )} </LoginRedirect> ); -} +}; export default EnterpriseInvitePage; diff --git a/src/components/enterprise-page/EnterprisePage.jsx b/src/components/enterprise-page/EnterprisePage.jsx index fb7eb85edd..4a27f4eee0 100644 --- a/src/components/enterprise-page/EnterprisePage.jsx +++ b/src/components/enterprise-page/EnterprisePage.jsx @@ -18,7 +18,7 @@ import { useAlgoliaSearch } from '../../utils/hooks'; import { useUpdateActiveEnterpriseForUser, useEnterpriseCustomerConfig } from './data/hooks'; import { pushUserCustomerAttributes } from '../../utils/optimizely'; -export default function EnterprisePage({ children, useEnterpriseConfigCache }) { +const EnterprisePage = ({ children, useEnterpriseConfigCache }) => { const { enterpriseSlug } = useParams(); const [enterpriseConfig, fetchError] = useEnterpriseCustomerConfig(enterpriseSlug, useEnterpriseConfigCache); const config = getConfig(); @@ -76,7 +76,7 @@ export default function EnterprisePage({ children, useEnterpriseConfigCache }) { {children} </AppContext.Provider> ); -} +}; EnterprisePage.propTypes = { children: PropTypes.node.isRequired, @@ -86,3 +86,5 @@ EnterprisePage.propTypes = { EnterprisePage.defaultProps = { useEnterpriseConfigCache: true, }; + +export default EnterprisePage; diff --git a/src/components/enterprise-page/EnterprisePage.test.jsx b/src/components/enterprise-page/EnterprisePage.test.jsx index f15c5ddedd..1596333296 100644 --- a/src/components/enterprise-page/EnterprisePage.test.jsx +++ b/src/components/enterprise-page/EnterprisePage.test.jsx @@ -56,10 +56,10 @@ describe('<EnterprisePage />', () => { slug: 'test-slug', }; jest.spyOn(hooks, 'useEnterpriseCustomerConfig').mockImplementation(() => [mockEnterpriseConfig, undefined]); - function ChildComponent() { + const ChildComponent = () => { const contextValue = useContext(AppContext); return <div className="did-i-render" data-contextvalue={contextValue} />; - } + }; const wrapper = mount(<EnterprisePage><ChildComponent /></EnterprisePage>); const actualContextValue = wrapper.find('.did-i-render').prop('data-contextvalue'); expect(actualContextValue).toEqual( diff --git a/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx b/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx index 4663156f05..85daaaaf36 100644 --- a/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx +++ b/src/components/enterprise-redirects/EnterpriseCustomerRedirect.jsx @@ -10,7 +10,7 @@ import { useSelectedEnterpriseUUIDByUserRoles, } from './data/hooks'; -function EnterpriseCustomerRedirect() { +const EnterpriseCustomerRedirect = () => { const { authenticatedUser } = useContext(AppContext); const { roles } = authenticatedUser; const selectedEnterpriseUUID = useSelectedEnterpriseUUIDByUserRoles(roles); @@ -29,6 +29,6 @@ function EnterpriseCustomerRedirect() { } return <Redirect to={`/${enterpriseCustomer.slug}`} />; -} +}; export default EnterpriseCustomerRedirect; diff --git a/src/components/enterprise-redirects/EnterprisePageRedirect.jsx b/src/components/enterprise-redirects/EnterprisePageRedirect.jsx index 5756004e47..ea555d5826 100644 --- a/src/components/enterprise-redirects/EnterprisePageRedirect.jsx +++ b/src/components/enterprise-redirects/EnterprisePageRedirect.jsx @@ -10,7 +10,7 @@ import { useSelectedEnterpriseUUIDByUserRoles, } from './data/hooks'; -function EnterprisePageRedirect() { +const EnterprisePageRedirect = () => { const { authenticatedUser } = useContext(AppContext); const { redirectPath } = useParams(); const { roles } = authenticatedUser; @@ -34,6 +34,6 @@ function EnterprisePageRedirect() { } return <Redirect to={`/${enterpriseCustomer.slug}/${redirectPath}`} />; -} +}; export default EnterprisePageRedirect; diff --git a/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx b/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx index 180f877412..d1fb9a07a5 100644 --- a/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx +++ b/src/components/enterprise-redirects/tests/EnterpriseCustomerRedirect.test.jsx @@ -25,15 +25,13 @@ const TEST_ENTERPRISES = [ ]; /* eslint-disable react/prop-types */ -function EnterpriseCustomerRedirectWithContext({ +const EnterpriseCustomerRedirectWithContext = ({ initialAppState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <EnterpriseCustomerRedirect /> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <EnterpriseCustomerRedirect /> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<EnterpriseCustomerRedirect />', () => { diff --git a/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx b/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx index abdc2493ea..6401340025 100644 --- a/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx +++ b/src/components/enterprise-redirects/tests/EnterprisePageRedirect.test.jsx @@ -26,15 +26,13 @@ const TEST_ENTERPRISES = [ ]; /* eslint-disable react/prop-types */ -function EnterprisePageRedirectWithContext({ +const EnterprisePageRedirectWithContext = ({ initialAppState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <EnterprisePageRedirect /> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <EnterprisePageRedirect /> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<EnterprisePageRedirect />', () => { diff --git a/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx b/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx index a074b2bc96..07ce904463 100644 --- a/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx +++ b/src/components/enterprise-subsidy-requests/SubsidyRequestsContextProvider.jsx @@ -13,7 +13,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy'; export const SubsidyRequestsContext = createContext(); -function SubsidyRequestsContextProvider({ children }) { +const SubsidyRequestsContextProvider = ({ children }) => { const { enterpriseConfig: { uuid: enterpriseUUID, @@ -75,7 +75,7 @@ function SubsidyRequestsContextProvider({ children }) { {children} </SubsidyRequestsContext.Provider> ); -} +}; SubsidyRequestsContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx b/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx index 38f5758eb9..48b9589b71 100644 --- a/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx +++ b/src/components/enterprise-subsidy-requests/tests/SubsidyRequestsContextProvider.test.jsx @@ -15,7 +15,7 @@ const enterpriseConfig = { uuid: 'example-enterprise-uuid', }; -function SubsidyRequestsContextProviderWrapper({ +const SubsidyRequestsContextProviderWrapper = ({ initialAppState = { enterpriseConfig, }, @@ -28,17 +28,15 @@ function SubsidyRequestsContextProviderWrapper({ subscriptions: [], }, }, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContextProvider> - <div>children</div> - </SubsidyRequestsContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContextProvider> + <div>children</div> + </SubsidyRequestsContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SubsidyRequestsContextProvider />', () => { beforeEach(() => { diff --git a/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx b/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx index 91e537067d..34c8d60f06 100644 --- a/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx +++ b/src/components/enterprise-user-subsidy/AutoActivateLicense.jsx @@ -8,7 +8,7 @@ import { LICENSE_STATUS } from './data/constants'; /** * Redirects users to the license activation page if they have an assigned license. */ -function AutoActivateLicense() { +const AutoActivateLicense = () => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionLicense } = useContext(UserSubsidyContext); const location = useLocation(); @@ -28,6 +28,6 @@ function AutoActivateLicense() { }} /> ); -} +}; export default AutoActivateLicense; diff --git a/src/components/enterprise-user-subsidy/UserSubsidy.jsx b/src/components/enterprise-user-subsidy/UserSubsidy.jsx index 2d840281c2..a721d5e8d6 100644 --- a/src/components/enterprise-user-subsidy/UserSubsidy.jsx +++ b/src/components/enterprise-user-subsidy/UserSubsidy.jsx @@ -17,7 +17,7 @@ import { LOADING_SCREEN_READER_TEXT } from './data/constants'; export const UserSubsidyContext = createContext(); -function UserSubsidy({ children }) { +const UserSubsidy = ({ children }) => { const { enterpriseConfig, authenticatedUser } = useContext(AppContext); const [customerAgreementConfig, isLoadingCustomerAgreementConfig] = useCustomerAgreementData(enterpriseConfig.uuid); @@ -117,7 +117,7 @@ function UserSubsidy({ children }) { </UserSubsidyContext.Provider> </> ); -} +}; UserSubsidy.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx index 64962b6bac..a680856a50 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/EnterpriseOffersBalanceAlert.jsx @@ -16,7 +16,7 @@ import { OFFER_BALANCE_CLICK_EVENT, } from './data/constants'; -function EnterpriseOffersBalanceAlert({ hasNoEnterpriseOffersBalance }) { +const EnterpriseOffersBalanceAlert = ({ hasNoEnterpriseOffersBalance }) => { const { enterpriseConfig: { uuid: enterpriseCustomerUUID, adminUsers }, } = useContext(AppContext); @@ -59,7 +59,7 @@ function EnterpriseOffersBalanceAlert({ hasNoEnterpriseOffersBalance }) { </Alert> </Container> ); -} +}; EnterpriseOffersBalanceAlert.propTypes = { hasNoEnterpriseOffersBalance: PropTypes.bool.isRequired, diff --git a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx index c1220e13fb..94c699f8d7 100644 --- a/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx +++ b/src/components/enterprise-user-subsidy/enterprise-offers/tests/EnterpriseOffersBalanceAlert.test.jsx @@ -10,12 +10,12 @@ import { NO_BALANCE_ALERT_TEXT, } from '../data/constants'; -function EnterpriseOffersBalanceAlertWrapper({ +const EnterpriseOffersBalanceAlertWrapper = ({ enterpriseConfig = { adminUsers: [], }, hasNoEnterpriseOffersBalance, -}) { +}) => { const contextValue = useMemo(() => ({ enterpriseConfig, }), [enterpriseConfig]); @@ -26,7 +26,7 @@ function EnterpriseOffersBalanceAlertWrapper({ /> </AppContext.Provider> ); -} +}; describe('<EnterpriseOffersBalanceAlert />', () => { it('should not render mailto link if there are no enterprise admins', () => { diff --git a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx index b625d4cc26..f344dd8b79 100644 --- a/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/AutoActivateLicense.test.jsx @@ -12,7 +12,7 @@ const TEST_ENTERPRISE_SLUG = 'test-slug'; const initialPathname = `/${TEST_ENTERPRISE_SLUG}`; // eslint-disable-next-line react/prop-types -function AutoActivateLicenseWrapper({ subscriptionLicense }) { +const AutoActivateLicenseWrapper = ({ subscriptionLicense }) => { const contextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG } }), []); const subsidyContextValue = useMemo(() => ({ subscriptionLicense }), [subscriptionLicense]); return ( @@ -24,7 +24,7 @@ function AutoActivateLicenseWrapper({ subscriptionLicense }) { </AppContext.Provider> </Route> ); -} +}; describe('<AutoActivationLicense />', () => { afterEach(() => jest.clearAllMocks()); diff --git a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx index 0d768ebcca..140a5cbb8a 100644 --- a/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx +++ b/src/components/enterprise-user-subsidy/tests/UserSubsidy.test.jsx @@ -61,12 +61,12 @@ const mockEmptyListResponse = { }; /* eslint-disable react/prop-types */ -function UserSubsidyWithAppContext({ +const UserSubsidyWithAppContext = ({ enterpriseConfig = {}, contextValue = {}, authenticatedUser = TEST_USER, children, -}) { +}) => { const appContextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, @@ -83,18 +83,18 @@ function UserSubsidyWithAppContext({ </UserSubsidy> </AppContext.Provider> ); -} +}; /* eslint-enable react/prop-types */ -function SubscriptionLicenseConsumer() { +const SubscriptionLicenseConsumer = () => { const { subscriptionLicense } = useContext(UserSubsidyContext); return <div>License status: {subscriptionLicense?.status || 'none'}</div>; -} +}; -function CouponCodesConsumer() { +const CouponCodesConsumer = () => { const { couponCodes } = useContext(UserSubsidyContext); return <div>Coupon codes count: {couponCodes?.couponCodesCount || 'none'}</div>; -} +}; describe('UserSubsidy', () => { describe('without subsidy', () => { diff --git a/src/components/error-page/ErrorPage.jsx b/src/components/error-page/ErrorPage.jsx index 8e72e08ec5..1db97784dd 100644 --- a/src/components/error-page/ErrorPage.jsx +++ b/src/components/error-page/ErrorPage.jsx @@ -15,31 +15,29 @@ import ErrorPageContent from './ErrorPageContent'; * a header, error alert, and a footer. */ -function ErrorPage({ +const ErrorPage = ({ title, subtitle, showSiteHeader, showSiteFooter, children, -}) { - return ( - <> - {showSiteHeader && <ErrorPageHeader />} - <main id="content"> - <ErrorPageContent> - <Col xs={12} lg={{ span: 10, offset: 1 }}> - <ErrorPageTitle>{title}</ErrorPageTitle> - {subtitle && ( - <ErrorPageSubtitle>{subtitle}</ErrorPageSubtitle> - )} - {children} - </Col> - </ErrorPageContent> - </main> - {showSiteFooter && <SiteFooter />} - </> - ); -} +}) => ( + <> + {showSiteHeader && <ErrorPageHeader />} + <main id="content"> + <ErrorPageContent> + <Col xs={12} lg={{ span: 10, offset: 1 }}> + <ErrorPageTitle>{title}</ErrorPageTitle> + {subtitle && ( + <ErrorPageSubtitle>{subtitle}</ErrorPageSubtitle> + )} + {children} + </Col> + </ErrorPageContent> + </main> + {showSiteFooter && <SiteFooter />} + </> +); ErrorPage.Content = ErrorPageContent; ErrorPage.Title = ErrorPageTitle; diff --git a/src/components/error-page/ErrorPageContent.jsx b/src/components/error-page/ErrorPageContent.jsx index 2307353091..1d1b9fcbf6 100644 --- a/src/components/error-page/ErrorPageContent.jsx +++ b/src/components/error-page/ErrorPageContent.jsx @@ -10,13 +10,11 @@ import classNames from 'classnames'; * Different components can be passed for a greater level of customization * for error pages. */ -function ErrorPageContent({ children, className }) { - return ( - <Container size="lg" className={classNames('error-page-container', className)}> - {children} - </Container> - ); -} +const ErrorPageContent = ({ children, className }) => ( + <Container size="lg" className={classNames('error-page-container', className)}> + {children} + </Container> +); ErrorPageContent.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/error-page/ErrorPageHeader.jsx b/src/components/error-page/ErrorPageHeader.jsx index 308c3e0957..03cf67a1c7 100644 --- a/src/components/error-page/ErrorPageHeader.jsx +++ b/src/components/error-page/ErrorPageHeader.jsx @@ -16,7 +16,7 @@ import { getConfig } from '@edx/frontend-platform/config'; * This component also acts as a message page for the logout case, hence adding some checks for * non existent variables. */ -function ErrorPageHeader() { +const ErrorPageHeader = () => { const config = getConfig(); const authenticatedUser = getAuthenticatedUser(); const { username, profileImage } = authenticatedUser || { username: '', profileImage: '' }; @@ -55,6 +55,6 @@ function ErrorPageHeader() { </Navbar> </header> ); -} +}; export default ErrorPageHeader; diff --git a/src/components/error-page/ErrorPageSubtitle.jsx b/src/components/error-page/ErrorPageSubtitle.jsx index 50434171c0..d170ce9ee8 100644 --- a/src/components/error-page/ErrorPageSubtitle.jsx +++ b/src/components/error-page/ErrorPageSubtitle.jsx @@ -4,9 +4,7 @@ import PropTypes from 'prop-types'; * Individual subtitle component of ErrorPage component parent. * Includes default styling for error pages. */ -function ErrorPageSubtitle({ children }) { - return <h3 className="mb-4.5 text-gray-700">{children}</h3>; -} +const ErrorPageSubtitle = ({ children }) => <h3 className="mb-4.5 text-gray-700">{children}</h3>; ErrorPageSubtitle.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/error-page/ErrorPageTitle.jsx b/src/components/error-page/ErrorPageTitle.jsx index 3f55894c21..8077d24071 100644 --- a/src/components/error-page/ErrorPageTitle.jsx +++ b/src/components/error-page/ErrorPageTitle.jsx @@ -4,9 +4,7 @@ import PropTypes from 'prop-types'; * Individual title component of ErrorPage component parent. * Includes default styling for error pages. */ -function ErrorPageTitle({ children }) { - return <h2 className="text-danger mb-4">{children}</h2>; -} +const ErrorPageTitle = ({ children }) => <h2 className="text-danger mb-4">{children}</h2>; ErrorPageTitle.propTypes = { children: PropTypes.node, diff --git a/src/components/executive-education-2u/ExecutiveEducation2UError.jsx b/src/components/executive-education-2u/ExecutiveEducation2UError.jsx index 35fb0dfa60..5a571b3cde 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UError.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UError.jsx @@ -9,7 +9,7 @@ import { ErrorPage, } from '../error-page'; -function ExecutiveEducation2UError({ failureReason, httpReferrer }) { +const ExecutiveEducation2UError = ({ failureReason, httpReferrer }) => { const { enterpriseConfig: { uuid: enterpriseId } } = useContext(AppContext); const createExecutiveEducationFailureMessage = (failureCode) => { @@ -54,7 +54,7 @@ function ExecutiveEducation2UError({ failureReason, httpReferrer }) { </Row> </ErrorPage.Content> ); -} +}; ExecutiveEducation2UError.propTypes = { failureReason: PropTypes.string, diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx index ceb3207e71..429fe11859 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.jsx @@ -15,7 +15,7 @@ import { } from './data'; import ExecutiveEducation2UError from './ExecutiveEducation2UError'; -function ExecutiveEducation2UPage() { +const ExecutiveEducation2UPage = () => { const { enterpriseConfig } = useContext(AppContext); const activeQueryParams = useActiveQueryParams(); @@ -114,6 +114,6 @@ function ExecutiveEducation2UPage() { )} </Container> ); -} +}; export default ExecutiveEducation2UPage; diff --git a/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx b/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx index 2bfc34ed70..d22e1a916c 100644 --- a/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx +++ b/src/components/executive-education-2u/ExecutiveEducation2UPage.test.jsx @@ -46,15 +46,13 @@ const initialAppContextValue = { }, }; -function ExecutiveEducation2UPageWrapper({ +const ExecutiveEducation2UPageWrapper = ({ appContextValue = initialAppContextValue, -}) { - return ( - <AppContext.Provider value={appContextValue}> - <ExecutiveEducation2UPage /> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={appContextValue}> + <ExecutiveEducation2UPage /> + </AppContext.Provider> +); describe('ExecutiveEducation2UPage', () => { beforeEach(() => { diff --git a/src/components/executive-education-2u/FormSectionHeading.jsx b/src/components/executive-education-2u/FormSectionHeading.jsx index cca35d5a0a..d790784666 100644 --- a/src/components/executive-education-2u/FormSectionHeading.jsx +++ b/src/components/executive-education-2u/FormSectionHeading.jsx @@ -1,9 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; -function FormSectionHeading({ children }) { - return <h3 className="h4 mb-4">{children}</h3>; -} +const FormSectionHeading = ({ children }) => <h3 className="h4 mb-4">{children}</h3>; FormSectionHeading.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/executive-education-2u/UserEnrollmentForm.jsx b/src/components/executive-education-2u/UserEnrollmentForm.jsx index 93acae6f99..e6fd5467c6 100644 --- a/src/components/executive-education-2u/UserEnrollmentForm.jsx +++ b/src/components/executive-education-2u/UserEnrollmentForm.jsx @@ -22,11 +22,11 @@ export const formValidationMessages = { studentTermsAndConditionsRequired: 'Please agree to Terms and Conditions for Students', }; -function UserEnrollmentForm({ +const UserEnrollmentForm = ({ className, productSKU, onCheckoutSuccess, -}) { +}) => { const { enterpriseConfig: { uuid: enterpriseId } } = useContext(AppContext); const config = getConfig(); @@ -262,7 +262,7 @@ function UserEnrollmentForm({ }} </Formik> ); -} +}; UserEnrollmentForm.propTypes = { className: PropTypes.string, diff --git a/src/components/executive-education-2u/UserEnrollmentForm.test.jsx b/src/components/executive-education-2u/UserEnrollmentForm.test.jsx index 5ad8ef70ac..8320877d92 100644 --- a/src/components/executive-education-2u/UserEnrollmentForm.test.jsx +++ b/src/components/executive-education-2u/UserEnrollmentForm.test.jsx @@ -31,22 +31,20 @@ const initialAppContextValue = { }, }; -function UserEnrollmentFormWrapper({ +const UserEnrollmentFormWrapper = ({ appContextValue = initialAppContextValue, enterpriseId = mockEnterpriseId, productSKU = mockProductSKU, onCheckoutSuccess = mockOnCheckoutSuccess, -}) { - return ( - <AppContext.Provider value={appContextValue}> - <UserEnrollmentForm - enterpriseId={enterpriseId} - productSKU={productSKU} - onCheckoutSuccess={onCheckoutSuccess} - /> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={appContextValue}> + <UserEnrollmentForm + enterpriseId={enterpriseId} + productSKU={productSKU} + onCheckoutSuccess={onCheckoutSuccess} + /> + </AppContext.Provider> +); describe('UserEnrollmentForm', () => { beforeEach(() => { diff --git a/src/components/integration-warning-modal/IntegrationWarningModal.jsx b/src/components/integration-warning-modal/IntegrationWarningModal.jsx index d0fee67c57..073557a7d6 100644 --- a/src/components/integration-warning-modal/IntegrationWarningModal.jsx +++ b/src/components/integration-warning-modal/IntegrationWarningModal.jsx @@ -6,9 +6,9 @@ import { getConfig } from '@edx/frontend-platform/config'; import { MODAL_BUTTON_TEXT, MODAL_TITLE } from './data/constants'; import ModalBody from './ModalBody'; -function IntegrationWarningModal({ +const IntegrationWarningModal = ({ isOpen, -}) { +}) => { const config = getConfig(); const cookies = new Cookies(); const isWarningDismissed = () => { @@ -45,7 +45,7 @@ function IntegrationWarningModal({ /> </div> ); -} +}; IntegrationWarningModal.propTypes = { isOpen: PropTypes.bool, diff --git a/src/components/integration-warning-modal/ModalBody.jsx b/src/components/integration-warning-modal/ModalBody.jsx index 90d9a9edc4..bc0e98fed8 100644 --- a/src/components/integration-warning-modal/ModalBody.jsx +++ b/src/components/integration-warning-modal/ModalBody.jsx @@ -1,15 +1,13 @@ import React from 'react'; -function ModalBody() { - return ( - <div> - <p className="m-0"> - You are viewing only the edX courses that your organization has made available to you. - There may be other learning resources from different sources available in your learning - management system. - </p> - </div> - ); -} +const ModalBody = () => ( + <div> + <p className="m-0"> + You are viewing only the edX courses that your organization has made available to you. + There may be other learning resources from different sources available in your learning + management system. + </p> + </div> +); export default ModalBody; diff --git a/src/components/layout/Layout.jsx b/src/components/layout/Layout.jsx index e59b5ed3e5..0c7a0210d7 100644 --- a/src/components/layout/Layout.jsx +++ b/src/components/layout/Layout.jsx @@ -14,7 +14,7 @@ import './styles/Layout.scss'; export const TITLE_TEMPLATE = '%s - edX'; export const DEFAULT_TITLE = 'edX'; -export default function Layout({ children }) { +const Layout = ({ children }) => { const { config, enterpriseConfig } = useContext(AppContext); const brandStyles = useStylesForCustomBrandColors(enterpriseConfig); @@ -57,8 +57,10 @@ export default function Layout({ children }) { </> </IntlProvider> ); -} +}; Layout.propTypes = { children: PropTypes.node.isRequired, }; + +export default Layout; diff --git a/src/components/layout/MainContent.jsx b/src/components/layout/MainContent.jsx index e89b406033..576e5c946a 100644 --- a/src/components/layout/MainContent.jsx +++ b/src/components/layout/MainContent.jsx @@ -1,13 +1,11 @@ import React from 'react'; import PropTypes from 'prop-types'; -function MainContent(props) { - return ( - <article className="col-xs-12 col-lg-8"> - {props.children} - </article> - ); -} +const MainContent = (props) => ( + <article className="col-xs-12 col-lg-8"> + {props.children} + </article> +); MainContent.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/layout/SidebarBlock.jsx b/src/components/layout/SidebarBlock.jsx index 4b9adef600..91a5da9432 100644 --- a/src/components/layout/SidebarBlock.jsx +++ b/src/components/layout/SidebarBlock.jsx @@ -2,12 +2,12 @@ import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; -function SidebarBlock({ +const SidebarBlock = ({ className, title, children, titleOptions, -}) { +}) => { const { tag: TitleTag } = titleOptions; return ( <div className={className}> @@ -19,7 +19,7 @@ function SidebarBlock({ {children} </div> ); -} +}; SidebarBlock.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/license-activation/LicenseActivation.jsx b/src/components/license-activation/LicenseActivation.jsx index a326bbf1e4..127b3de0bd 100644 --- a/src/components/license-activation/LicenseActivation.jsx +++ b/src/components/license-activation/LicenseActivation.jsx @@ -12,7 +12,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy/UserSubsidy'; export const LOADING_MESSAGE = 'Your enterprise license is being activated! You will be automatically redirected to your organization\'s learner portal shortly.'; -function LicenseActivation() { +const LicenseActivation = () => { const { enterpriseConfig } = useContext(AppContext); const renderContactHelpText = useRenderContactHelpText(enterpriseConfig); const location = useLocation(); @@ -66,6 +66,6 @@ function LicenseActivation() { </Container> </> ); -} +}; export default LicenseActivation; diff --git a/src/components/license-activation/LicenseActivationErrorAlert.jsx b/src/components/license-activation/LicenseActivationErrorAlert.jsx index 93f9cf1118..264a821cb4 100644 --- a/src/components/license-activation/LicenseActivationErrorAlert.jsx +++ b/src/components/license-activation/LicenseActivationErrorAlert.jsx @@ -4,20 +4,18 @@ import PropTypes from 'prop-types'; import { Helmet } from 'react-helmet'; import { Alert, Container } from '@edx/paragon'; -function LicenseActivationErrorAlert({ title, contactHelpText }) { - return ( - <> - <Helmet title={title} /> - <Container size="lg" className="mt-3"> - <Alert variant="danger"> - We were unable to activate a license for this user. Please double-check that you have an - assigned license and verify the email to which it was sent. If you run into further issues, - please {contactHelpText} for assistance. - </Alert> - </Container> - </> - ); -} +const LicenseActivationErrorAlert = ({ title, contactHelpText }) => ( + <> + <Helmet title={title} /> + <Container size="lg" className="mt-3"> + <Alert variant="danger"> + We were unable to activate a license for this user. Please double-check that you have an + assigned license and verify the email to which it was sent. If you run into further issues, + please {contactHelpText} for assistance. + </Alert> + </Container> + </> +); LicenseActivationErrorAlert.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/license-activation/LicenseActivationPage.jsx b/src/components/license-activation/LicenseActivationPage.jsx index 2499d86ad9..80b5391598 100644 --- a/src/components/license-activation/LicenseActivationPage.jsx +++ b/src/components/license-activation/LicenseActivationPage.jsx @@ -14,7 +14,7 @@ import { useRenderContactHelpText } from '../../utils/hooks'; export const LOADING_MESSAGE = 'Your enterprise license is being activated! You will be automatically redirected to your organization\'s learner portal shortly.'; -function LicenseActivationPage() { +const LicenseActivationPage = () => { const user = getAuthenticatedUser(); const { enterpriseConfig } = useContext(AppContext); const { subscriptionLicense } = useContext(UserSubsidyContext); @@ -55,6 +55,6 @@ function LicenseActivationPage() { } return <LicenseActivation />; -} +}; export default LicenseActivationPage; diff --git a/src/components/license-activation/tests/LicenseActivation.test.jsx b/src/components/license-activation/tests/LicenseActivation.test.jsx index 6b1800df40..fb79049b72 100644 --- a/src/components/license-activation/tests/LicenseActivation.test.jsx +++ b/src/components/license-activation/tests/LicenseActivation.test.jsx @@ -21,11 +21,11 @@ const TEST_ENTERPRISE_SLUG = 'test-enterprise-slug'; const TEST_ACTIVATION_KEY = '00000000-0000-0000-0000-000000000000'; const TEST_ROUTE = `/${TEST_ENTERPRISE_SLUG}/licenses/${TEST_ACTIVATION_KEY}/activate`; -function LicenseActivationWithAppContext({ +const LicenseActivationWithAppContext = ({ initialUserSubsidyState = { activateUserLicense: jest.fn(() => true), }, -}) { +}) => { const contextValue = useMemo(() => ({ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, @@ -42,7 +42,7 @@ function LicenseActivationWithAppContext({ </UserSubsidyContext.Provider> </AppContext.Provider> ); -} +}; describe('LicenseActivation', () => { beforeEach(() => jest.clearAllMocks()); diff --git a/src/components/license-activation/tests/LicenseActivationPage.test.jsx b/src/components/license-activation/tests/LicenseActivationPage.test.jsx index 496983d980..448d9a1b92 100644 --- a/src/components/license-activation/tests/LicenseActivationPage.test.jsx +++ b/src/components/license-activation/tests/LicenseActivationPage.test.jsx @@ -35,7 +35,7 @@ const TEST_ENTERPRISE_SLUG = 'test-enterprise-slug'; const TEST_ACTIVATION_KEY = '00000000-0000-0000-0000-000000000000'; const TEST_ROUTE = `/${TEST_ENTERPRISE_SLUG}/licenses/${TEST_ACTIVATION_KEY}/activate`; -function LicenseActivationPageWithContext({ +const LicenseActivationPageWithContext = ({ initialUserSubsidyState = { subscriptionLicense: undefined, couponCodes: { @@ -43,7 +43,7 @@ function LicenseActivationPageWithContext({ couponCodesCount: 0, }, }, -}) { +}) => { const contextValue = useMemo(() => ({ enterpriseConfig: { uuid: TEST_ENTERPRISE_UUID, @@ -60,7 +60,7 @@ function LicenseActivationPageWithContext({ </UserSubsidyContext.Provider> </AppContext.Provider> ); -} +}; describe('<LicenseActivationPageWithAppContext />', () => { it.each( diff --git a/src/components/loading-spinner/LoadingSpinner.jsx b/src/components/loading-spinner/LoadingSpinner.jsx index ba80877dc8..58954d52c2 100644 --- a/src/components/loading-spinner/LoadingSpinner.jsx +++ b/src/components/loading-spinner/LoadingSpinner.jsx @@ -3,15 +3,13 @@ import PropTypes from 'prop-types'; import './styles/LoadingSpinner.scss'; -function LoadingSpinner({ screenReaderText }) { - return ( - <div className="loading-spinner d-flex justify-content-center align-items-center"> - <div className="spinner-border text-primary" role="status"> - <span className="sr-only">{screenReaderText}</span> - </div> +const LoadingSpinner = ({ screenReaderText }) => ( + <div className="loading-spinner d-flex justify-content-center align-items-center"> + <div className="spinner-border text-primary" role="status"> + <span className="sr-only">{screenReaderText}</span> </div> - ); -} + </div> +); LoadingSpinner.propTypes = { screenReaderText: PropTypes.string.isRequired, diff --git a/src/components/pathway-progress/PathwayNode.jsx b/src/components/pathway-progress/PathwayNode.jsx index b94546fa56..c94d616b94 100644 --- a/src/components/pathway-progress/PathwayNode.jsx +++ b/src/components/pathway-progress/PathwayNode.jsx @@ -6,7 +6,7 @@ import capitalize from 'lodash.capitalize'; import { CONTENT_TYPES, IN_PROGRESS } from './constants'; -function PathwayNode({ node }) { +const PathwayNode = ({ node }) => { const { enterpriseSlug } = useParams(); const linkToNode = useMemo( @@ -53,7 +53,7 @@ function PathwayNode({ node }) { </div> </div> ); -} +}; export default PathwayNode; diff --git a/src/components/pathway-progress/PathwayProgressCard.jsx b/src/components/pathway-progress/PathwayProgressCard.jsx index c60d1ddd97..9793eb6f5b 100644 --- a/src/components/pathway-progress/PathwayProgressCard.jsx +++ b/src/components/pathway-progress/PathwayProgressCard.jsx @@ -7,7 +7,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import { getProgressFromSteps } from './data/utils'; import { ProgressCategoryBubbles } from '../progress-category-bubbles'; -function PathwayProgressCard({ pathway: { learnerPathwayProgress } }) { +const PathwayProgressCard = ({ pathway: { learnerPathwayProgress } }) => { const progress = getProgressFromSteps(learnerPathwayProgress.steps); const history = useHistory(); const { enterpriseConfig: { slug } } = useContext(AppContext); @@ -44,7 +44,7 @@ function PathwayProgressCard({ pathway: { learnerPathwayProgress } }) { </Card.Section> </Card> ); -} +}; PathwayProgressCard.propTypes = { pathway: PropTypes.shape({ diff --git a/src/components/pathway-progress/PathwayProgressContextProvider.jsx b/src/components/pathway-progress/PathwayProgressContextProvider.jsx index c326125eef..8a915dda49 100644 --- a/src/components/pathway-progress/PathwayProgressContextProvider.jsx +++ b/src/components/pathway-progress/PathwayProgressContextProvider.jsx @@ -3,13 +3,11 @@ import PropTypes from 'prop-types'; export const PathwayProgressContext = createContext(); -export function PathwayProgressContextProvider({ children, initialState }) { - return ( - <PathwayProgressContext.Provider value={initialState}> - {children} - </PathwayProgressContext.Provider> - ); -} +export const PathwayProgressContextProvider = ({ children, initialState }) => ( + <PathwayProgressContext.Provider value={initialState}> + {children} + </PathwayProgressContext.Provider> +); PathwayProgressContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/pathway-progress/PathwayProgressHeader.jsx b/src/components/pathway-progress/PathwayProgressHeader.jsx index 2d60b01ef2..d3a8b1dcb0 100644 --- a/src/components/pathway-progress/PathwayProgressHeader.jsx +++ b/src/components/pathway-progress/PathwayProgressHeader.jsx @@ -5,7 +5,7 @@ import { useParams } from 'react-router-dom'; import { PathwayProgressContext } from './PathwayProgressContextProvider'; import SubscriptionStatusCard from './SubscriptionStatusCard'; -function PathwayProgressHeader() { +const PathwayProgressHeader = () => { const { learnerPathwayProgress } = useContext(PathwayProgressContext); const { enterpriseSlug } = useParams(); const links = [ @@ -40,6 +40,6 @@ function PathwayProgressHeader() { </div> </header> ); -} +}; export default PathwayProgressHeader; diff --git a/src/components/pathway-progress/PathwayProgressListingPage.jsx b/src/components/pathway-progress/PathwayProgressListingPage.jsx index 1d5defac32..4bb3ca8c02 100644 --- a/src/components/pathway-progress/PathwayProgressListingPage.jsx +++ b/src/components/pathway-progress/PathwayProgressListingPage.jsx @@ -20,7 +20,7 @@ import PathwayProgressCard from './PathwayProgressCard'; import { CONTENT_TYPE_PATHWAY } from '../search/constants'; -function PathwayProgressListingPage() { +const PathwayProgressListingPage = () => { const { enterpriseConfig } = useContext(AppContext); const [pathwayProgressData, fetchError] = useInProgressPathwaysData(enterpriseConfig.uuid); @@ -38,28 +38,26 @@ function PathwayProgressListingPage() { } return ( - <> - <Container size="lg" className="py-5 w-100"> - <Row> - {pathwayProgressData?.length > 0 ? ( - pathwayProgressData.map((pathway) => ( - <PathwayProgressCard - pathway={pathway} - key={pathway.learnerPathwayProgress.uuid} - /> - )) - ) : ( - <div className="no-content-message"> - <h2>{NO_PATHWAYS_ERROR_MESSAGE}</h2> - <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PATHWAY}`}> - <Button variant="primary" iconBefore={Search} className="btn-brand-primary mt-2">Explore pathways</Button> - </Link> - </div> - )} - </Row> - </Container> - </> + <Container size="lg" className="py-5 w-100"> + <Row> + {pathwayProgressData?.length > 0 ? ( + pathwayProgressData.map((pathway) => ( + <PathwayProgressCard + pathway={pathway} + key={pathway.learnerPathwayProgress.uuid} + /> + )) + ) : ( + <div className="no-content-message"> + <h2>{NO_PATHWAYS_ERROR_MESSAGE}</h2> + <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PATHWAY}`}> + <Button variant="primary" iconBefore={Search} className="btn-brand-primary mt-2">Explore pathways</Button> + </Link> + </div> + )} + </Row> + </Container> ); -} +}; export default PathwayProgressListingPage; diff --git a/src/components/pathway-progress/PathwayProgressPage.jsx b/src/components/pathway-progress/PathwayProgressPage.jsx index 629a5ff2ae..24ef8812dc 100644 --- a/src/components/pathway-progress/PathwayProgressPage.jsx +++ b/src/components/pathway-progress/PathwayProgressPage.jsx @@ -15,7 +15,7 @@ import PathwayProgressHeader from './PathwayProgressHeader'; import PathwayRequirements from './PathwayRequirements'; import './styles/index.scss'; -export default function PathwayProgressPage() { +const PathwayProgressPage = () => { const { pathwayUUID } = useParams(); const [pathwayProgressDetails, fetchError] = useLearnerPathwayProgressData(pathwayUUID); @@ -55,4 +55,6 @@ export default function PathwayProgressPage() { </CourseEnrollmentsContextProvider> </> ); -} +}; + +export default PathwayProgressPage; diff --git a/src/components/pathway-progress/PathwayRequirements.jsx b/src/components/pathway-progress/PathwayRequirements.jsx index 2e3e42c1b0..c67efaef87 100644 --- a/src/components/pathway-progress/PathwayRequirements.jsx +++ b/src/components/pathway-progress/PathwayRequirements.jsx @@ -2,7 +2,7 @@ import React, { useContext } from 'react'; import { PathwayProgressContext } from './PathwayProgressContextProvider'; import PathwayStep from './PathwayStep'; -export default function PathwayRequirements() { +const PathwayRequirements = () => { const { learnerPathwayProgress } = useContext(PathwayProgressContext); const getStepNodes = (step) => [...step.courses, ...step.programs]; @@ -21,4 +21,6 @@ export default function PathwayRequirements() { </section> </div> ); -} +}; + +export default PathwayRequirements; diff --git a/src/components/pathway-progress/PathwayStep.jsx b/src/components/pathway-progress/PathwayStep.jsx index eb38e78016..71c382a259 100644 --- a/src/components/pathway-progress/PathwayStep.jsx +++ b/src/components/pathway-progress/PathwayStep.jsx @@ -7,7 +7,7 @@ import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'; import PathwayNode from './PathwayNode'; -function PathwayStep({ index, minRequirements, nodes }) { +const PathwayStep = ({ index, minRequirements, nodes }) => { const [isOpen, setIsOpen] = useState(true); return ( @@ -25,7 +25,7 @@ function PathwayStep({ index, minRequirements, nodes }) { } </Collapsible> ); -} +}; export default PathwayStep; diff --git a/src/components/pathway-progress/SubscriptionStatusCard.jsx b/src/components/pathway-progress/SubscriptionStatusCard.jsx index 73e4628dbc..b4a612a491 100644 --- a/src/components/pathway-progress/SubscriptionStatusCard.jsx +++ b/src/components/pathway-progress/SubscriptionStatusCard.jsx @@ -5,7 +5,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy'; import { LICENSE_STATUS } from '../enterprise-user-subsidy/data/constants'; import { SubsidyRequestsContext, SUBSIDY_TYPE } from '../enterprise-subsidy-requests'; -function SubscriptionStatusCard() { +const SubscriptionStatusCard = () => { const { subscriptionPlan, subscriptionLicense: userSubscriptionLicense, @@ -37,6 +37,6 @@ function SubscriptionStatusCard() { </Card> </div> ); -} +}; export default SubscriptionStatusCard; diff --git a/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx b/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx index 813010dfd2..5477ff5359 100644 --- a/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx +++ b/src/components/pathway-progress/tests/PathwayProgressListingCard.test.jsx @@ -21,15 +21,13 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function PathwayProgressListingCardWithContext({ initialAppState, initialUserSubsidyState, pathwayData }) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <PathwayProgressCard pathway={pathwayData} /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +const PathwayProgressListingCardWithContext = ({ initialAppState, initialUserSubsidyState, pathwayData }) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <PathwayProgressCard pathway={pathwayData} /> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); const appState = { enterpriseConfig: { diff --git a/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx b/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx index 4f31545e92..e2de15939d 100644 --- a/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx +++ b/src/components/pathway-progress/tests/PathwayProgressListingPage.test.jsx @@ -26,20 +26,18 @@ jest.mock('../data/hooks', () => ({ })); /* eslint-disable react/prop-types */ -function PathwayProgressListingWithContext({ +const PathwayProgressListingWithContext = ({ initialAppState = {}, initialUserSubsidyState = {}, -}) { - return ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <PathwayProgressListingPage /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> - ); -} +}) => ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <PathwayProgressListingPage /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> +); describe('<PathwayProgressListingPage />', () => { const initialAppState = { diff --git a/src/components/pathway/PathwayModal.jsx b/src/components/pathway/PathwayModal.jsx index 40bc5d772c..f4cd473e88 100644 --- a/src/components/pathway/PathwayModal.jsx +++ b/src/components/pathway/PathwayModal.jsx @@ -54,7 +54,7 @@ const renderStepNodes = (step, slug) => [].concat(step.courses, step.programs).m ); }); -function PathwayModal({ learnerPathwayUuid, isOpen, onClose }) { +const PathwayModal = ({ learnerPathwayUuid, isOpen, onClose }) => { const { enterpriseConfig: { slug } } = useContext(AppContext); const pathwayUuid = isOpen ? learnerPathwayUuid : null; const [pathway, isLoading] = useLearnerPathwayData({ learnerPathwayUuid: pathwayUuid }); @@ -167,11 +167,9 @@ function PathwayModal({ learnerPathwayUuid, isOpen, onClose }) { </MarketingModal> ); -} +}; -function SkeletonPathwayModal(props) { - return <PathwayModal {...props} isLoading />; -} +const SkeletonPathwayModal = (props) => <PathwayModal {...props} isLoading />; PathwayModal.propTypes = { learnerPathwayUuid: PropTypes.string.isRequired, diff --git a/src/components/pathway/SearchPathwayCard.jsx b/src/components/pathway/SearchPathwayCard.jsx index 7231956cd4..f5efed2355 100644 --- a/src/components/pathway/SearchPathwayCard.jsx +++ b/src/components/pathway/SearchPathwayCard.jsx @@ -37,7 +37,7 @@ const filterSkillNames = skillNames => { return skillsToReturn; }; -function SearchPathwayCard({ hit, isLoading, isSkillQuizResult }) { +const SearchPathwayCard = ({ hit, isLoading, isSkillQuizResult }) => { const { enterpriseConfig: { uuid: enterpriseCustomerUUID, slug } } = useContext(AppContext); const pathway = useMemo(() => { @@ -158,11 +158,9 @@ function SearchPathwayCard({ hit, isLoading, isSkillQuizResult }) { </Link> </div> ); -} +}; -function SkeletonPathwayCard(props) { - return <SearchPathwayCard {...props} isLoading />; -} +const SkeletonPathwayCard = (props) => <SearchPathwayCard {...props} isLoading />; SearchPathwayCard.propTypes = { hit: PropTypes.shape({ diff --git a/src/components/pathway/tests/PathwayModal.test.jsx b/src/components/pathway/tests/PathwayModal.test.jsx index 1e8eec394c..b77814e096 100644 --- a/src/components/pathway/tests/PathwayModal.test.jsx +++ b/src/components/pathway/tests/PathwayModal.test.jsx @@ -26,7 +26,7 @@ jest.mock('react-loading-skeleton', () => ({ default: (props = {}) => <div data-testid={props['data-testid']} />, })); -function PathwayModalWithAppContext(props) { +const PathwayModalWithAppContext = (props) => { const contextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, }), []); @@ -35,7 +35,7 @@ function PathwayModalWithAppContext(props) { <PathwayModal {...props} /> </AppContext.Provider> ); -} +}; const defaultProps = { learnerPathwayUuid: TEST_PATHWAY_DATA.uuid, diff --git a/src/components/pathway/tests/SearchPathwayCard.test.jsx b/src/components/pathway/tests/SearchPathwayCard.test.jsx index d87321c377..ce77a4fd89 100644 --- a/src/components/pathway/tests/SearchPathwayCard.test.jsx +++ b/src/components/pathway/tests/SearchPathwayCard.test.jsx @@ -28,7 +28,7 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); }); -function SearchPathwayCardWithAppContext(props) { +const SearchPathwayCardWithAppContext = (props) => { const contextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: TEST_ENTERPRISE_UUID }, }), []); @@ -37,7 +37,7 @@ function SearchPathwayCardWithAppContext(props) { <SearchPathwayCard {...props} /> </AppContext.Provider> ); -} +}; const TEST_PATHWAY_UUID = 'test-pathway-uuid'; const TEST_TITLE = 'Test Title'; diff --git a/src/components/preview-expand/PreviewExpand.jsx b/src/components/preview-expand/PreviewExpand.jsx index 34baa73d96..6962a85ed7 100644 --- a/src/components/preview-expand/PreviewExpand.jsx +++ b/src/components/preview-expand/PreviewExpand.jsx @@ -5,12 +5,12 @@ import { Button } from '@edx/paragon'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faMinusCircle, faPlusCircle } from '@fortawesome/free-solid-svg-icons'; -export default function PreviewExpand({ +const PreviewExpand = ({ className, children, cta, heading, -}) { +}) => { const [isExpanded, setIsExpanded] = useState(false); return ( <div className={classNames('preview-expand-component', className)}> @@ -32,7 +32,7 @@ export default function PreviewExpand({ </Button> </div> ); -} +}; PreviewExpand.propTypes = { children: PropTypes.element.isRequired, @@ -48,3 +48,5 @@ PreviewExpand.propTypes = { PreviewExpand.defaultProps = { className: null, }; + +export default PreviewExpand; diff --git a/src/components/program-progress/CouponCodesWarningModal.jsx b/src/components/program-progress/CouponCodesWarningModal.jsx index 5e8fdf9b37..d50102de98 100644 --- a/src/components/program-progress/CouponCodesWarningModal.jsx +++ b/src/components/program-progress/CouponCodesWarningModal.jsx @@ -6,7 +6,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import PropTypes from 'prop-types'; import { COUPON_CODE_EXPIRING_MODAL_TITLE } from './data/constants'; -function CouponCodesWarningModal({ isCouponCodeWarningModalOpen, onCouponCodeWarningModalClose, couponCodesCount }) { +const CouponCodesWarningModal = ({ isCouponCodeWarningModalOpen, onCouponCodeWarningModalClose, couponCodesCount }) => { const { enterpriseConfig: { contactEmail }, } = useContext(AppContext); @@ -55,7 +55,7 @@ function CouponCodesWarningModal({ isCouponCodeWarningModalOpen, onCouponCodeWar {renderExpiredBody()} </StandardModal> ); -} +}; CouponCodesWarningModal.propTypes = { isCouponCodeWarningModalOpen: PropTypes.bool.isRequired, onCouponCodeWarningModalClose: PropTypes.func.isRequired, diff --git a/src/components/program-progress/ProgramListingCard.jsx b/src/components/program-progress/ProgramListingCard.jsx index 3f43473147..12e87d56e5 100644 --- a/src/components/program-progress/ProgramListingCard.jsx +++ b/src/components/program-progress/ProgramListingCard.jsx @@ -11,7 +11,7 @@ import Truncate from 'react-truncate'; import { getProgramIcon } from '../course/data/utils'; import { ProgressCategoryBubbles } from '../progress-category-bubbles'; -function ProgramListingCard({ program }) { +const ProgramListingCard = ({ program }) => { const { enterpriseConfig } = useContext(AppContext); const [windowWidth, setWindowWidth] = useState(window.innerWidth); const history = useHistory(); @@ -104,7 +104,7 @@ function ProgramListingCard({ program }) { </Card.Section> </Card> ); -} +}; ProgramListingCard.propTypes = { program: PropTypes.shape({ diff --git a/src/components/program-progress/ProgramListingPage.jsx b/src/components/program-progress/ProgramListingPage.jsx index 01df2e08c1..8240909dcf 100644 --- a/src/components/program-progress/ProgramListingPage.jsx +++ b/src/components/program-progress/ProgramListingPage.jsx @@ -20,7 +20,7 @@ import ProgramListingCard from './ProgramListingCard'; import { CONTENT_TYPE_PROGRAM } from '../search/constants'; -function ProgramListingPage() { +const ProgramListingPage = () => { const { enterpriseConfig } = useContext(AppContext); const [learnerProgramsData, fetchError] = useLearnerProgramsListData(enterpriseConfig.uuid); @@ -38,23 +38,21 @@ function ProgramListingPage() { } return ( - <> - <Container size="lg" className="py-5 w-100"> - <Row> - {learnerProgramsData.length > 0 ? ( - learnerProgramsData.map((program) => <ProgramListingCard program={program} key={program.title} />) - ) : ( - <div className="no-content-message"> - <h2>{NO_PROGRAMS_ERROR_MESSAGE}</h2> - <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PROGRAM}`}> - <Button variant="primary" iconBefore={Search} className="btn-brand-primary mt-2">Explore programs</Button> - </Link> - </div> - )} - </Row> - </Container> - </> + <Container size="lg" className="py-5 w-100"> + <Row> + {learnerProgramsData.length > 0 ? ( + learnerProgramsData.map((program) => <ProgramListingCard program={program} key={program.title} />) + ) : ( + <div className="no-content-message"> + <h2>{NO_PROGRAMS_ERROR_MESSAGE}</h2> + <Link to={`/${enterpriseConfig.slug}/search?content_type=${CONTENT_TYPE_PROGRAM}`}> + <Button variant="primary" iconBefore={Search} className="btn-brand-primary mt-2">Explore programs</Button> + </Link> + </div> + )} + </Row> + </Container> ); -} +}; export default ProgramListingPage; diff --git a/src/components/program-progress/ProgramPathwayOpportunity.jsx b/src/components/program-progress/ProgramPathwayOpportunity.jsx index 14a3946ea4..5d8544a4a3 100644 --- a/src/components/program-progress/ProgramPathwayOpportunity.jsx +++ b/src/components/program-progress/ProgramPathwayOpportunity.jsx @@ -2,35 +2,33 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Button } from '@edx/paragon'; -function ProgramPathwayOpportunity({ pathways, title, pathwayClass }) { - return ( - <div className={pathwayClass}> - <h2 className="divider-heading"> { title } </h2> - {pathways.map((pathway) => ( - <div className="pathway-wrapper" key={pathway.uuid}> - <div className="pathway-info"> - <h2 className="pathway-heading"> { pathway.name } </h2> - { pathway.description && <p> {pathway.description}</p> } - { pathway.destinationUrl && ( - <div className="sidebar-button-wrapper"> - <a href={pathway.destinationUrl} className="pathway-link"> - <Button - variant="outline-primary" - className="btn pathway-button sidebar-button" - data-pathway-uuid={pathway.uuid} - data-pathway-name={pathway.name} - > - Learn More - </Button> - </a> - </div> - )} - </div> +const ProgramPathwayOpportunity = ({ pathways, title, pathwayClass }) => ( + <div className={pathwayClass}> + <h2 className="divider-heading"> { title } </h2> + {pathways.map((pathway) => ( + <div className="pathway-wrapper" key={pathway.uuid}> + <div className="pathway-info"> + <h2 className="pathway-heading"> { pathway.name } </h2> + { pathway.description && <p> {pathway.description}</p> } + { pathway.destinationUrl && ( + <div className="sidebar-button-wrapper"> + <a href={pathway.destinationUrl} className="pathway-link"> + <Button + variant="outline-primary" + className="btn pathway-button sidebar-button" + data-pathway-uuid={pathway.uuid} + data-pathway-name={pathway.name} + > + Learn More + </Button> + </a> + </div> + )} </div> - ))} - </div> - ); -} + </div> + ))} + </div> +); export default ProgramPathwayOpportunity; diff --git a/src/components/program-progress/ProgramProgress.jsx b/src/components/program-progress/ProgramProgress.jsx index 94d8ce7859..69f3112829 100644 --- a/src/components/program-progress/ProgramProgress.jsx +++ b/src/components/program-progress/ProgramProgress.jsx @@ -3,10 +3,10 @@ import React from 'react'; import ProgramProgressPage from './ProgramProgressPage'; import AuthenticatedUserSubsidyPage from '../app/AuthenticatedUserSubsidyPage'; -export default function ProgramProgress() { - return ( - <AuthenticatedUserSubsidyPage> - <ProgramProgressPage /> - </AuthenticatedUserSubsidyPage> - ); -} +const ProgramProgress = () => ( + <AuthenticatedUserSubsidyPage> + <ProgramProgressPage /> + </AuthenticatedUserSubsidyPage> +); + +export default ProgramProgress; diff --git a/src/components/program-progress/ProgramProgressCircle.jsx b/src/components/program-progress/ProgramProgressCircle.jsx index 600f04f47b..905a648844 100644 --- a/src/components/program-progress/ProgramProgressCircle.jsx +++ b/src/components/program-progress/ProgramProgressCircle.jsx @@ -5,9 +5,9 @@ import { X_AXIS, Y_AXIS, CIRCLE_RADIUS, CIRCLE_DEGREES, STROKE_WIDTH, CIRCLE_LABEL, } from './data/constants'; -function CircleSegment({ +const CircleSegment = ({ total, index, classList, -}) { +}) => { const segmentDash = 2 * Math.PI * CIRCLE_RADIUS; const degreeInc = 360 / total; // Remove strokeWidth to show a gap between the segments @@ -33,9 +33,9 @@ function CircleSegment({ strokeDashoffset={offset} /> ); -} +}; -function ProgramProgressCircle() { +const ProgramProgressCircle = () => { const { programData, courseData } = useContext(ProgramProgressContext); const { inProgress, completed, notStarted } = courseData; const totalCourses = inProgress.length + completed.length + notStarted.length; @@ -63,7 +63,7 @@ function ProgramProgressCircle() { </div> </> ); -} +}; export default ProgramProgressCircle; diff --git a/src/components/program-progress/ProgramProgressContextProvider.jsx b/src/components/program-progress/ProgramProgressContextProvider.jsx index cecb1bd9d1..3b82206bb4 100644 --- a/src/components/program-progress/ProgramProgressContextProvider.jsx +++ b/src/components/program-progress/ProgramProgressContextProvider.jsx @@ -3,13 +3,11 @@ import PropTypes from 'prop-types'; export const ProgramProgressContext = createContext(); -export function ProgramProgressContextProvider({ children, initialState }) { - return ( - <ProgramProgressContext.Provider value={initialState}> - {children} - </ProgramProgressContext.Provider> - ); -} +export const ProgramProgressContextProvider = ({ children, initialState }) => ( + <ProgramProgressContext.Provider value={initialState}> + {children} + </ProgramProgressContext.Provider> +); ProgramProgressContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/program-progress/ProgramProgressCourses.jsx b/src/components/program-progress/ProgramProgressCourses.jsx index 5d47ffd8c8..af97c9e7ae 100644 --- a/src/components/program-progress/ProgramProgressCourses.jsx +++ b/src/components/program-progress/ProgramProgressCourses.jsx @@ -18,7 +18,7 @@ import { } from './data/utils'; import { NotCurrentlyAvailable } from './data/constants'; -function ProgramProgressCourses({ courseData }) { +const ProgramProgressCourses = ({ courseData }) => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, @@ -244,7 +244,7 @@ function ProgramProgressCourses({ courseData }) { </div> ); -} +}; ProgramProgressCourses.propTypes = { courseData: PropTypes.shape([]).isRequired, }; diff --git a/src/components/program-progress/ProgramProgressHeader.jsx b/src/components/program-progress/ProgramProgressHeader.jsx index ec95df34cc..8d56b33d07 100644 --- a/src/components/program-progress/ProgramProgressHeader.jsx +++ b/src/components/program-progress/ProgramProgressHeader.jsx @@ -2,7 +2,7 @@ import React, { useContext } from 'react'; import { ProgramProgressContext } from './ProgramProgressContextProvider'; import { getProgramIcon } from './data/utils'; -function ProgramProgressHeader() { +const ProgramProgressHeader = () => { const { programData } = useContext(ProgramProgressContext); const programIcon = getProgramIcon(programData.type); @@ -36,6 +36,6 @@ function ProgramProgressHeader() { </div> </div> ); -} +}; export default ProgramProgressHeader; diff --git a/src/components/program-progress/ProgramProgressPage.jsx b/src/components/program-progress/ProgramProgressPage.jsx index 56c21bfc6f..6c41abbc0f 100644 --- a/src/components/program-progress/ProgramProgressPage.jsx +++ b/src/components/program-progress/ProgramProgressPage.jsx @@ -23,7 +23,7 @@ import { import SubsidiesSummary from '../dashboard/sidebar/SubsidiesSummary'; -function ProgramProgressPage() { +const ProgramProgressPage = () => { const { programUUID } = useParams(); const [program, fetchError] = useLearnerProgramProgressData(programUUID); @@ -118,6 +118,6 @@ function ProgramProgressPage() { </CourseEnrollmentsContextProvider> </> ); -} +}; export default ProgramProgressPage; diff --git a/src/components/program-progress/ProgramProgressRedirect.jsx b/src/components/program-progress/ProgramProgressRedirect.jsx index 3db2ed71b3..2673263ff7 100644 --- a/src/components/program-progress/ProgramProgressRedirect.jsx +++ b/src/components/program-progress/ProgramProgressRedirect.jsx @@ -2,11 +2,11 @@ import React, { useContext } from 'react'; import { Redirect, useParams } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; -function ProgramProgressRedirect() { +const ProgramProgressRedirect = () => { const { enterpriseConfig } = useContext(AppContext); const { programUUID } = useParams(); return <Redirect to={`/${enterpriseConfig.slug}/program/${programUUID}/progress`} />; -} +}; export default ProgramProgressRedirect; diff --git a/src/components/program-progress/ProgramProgressSidebar.jsx b/src/components/program-progress/ProgramProgressSidebar.jsx index 3db1770ab3..bbc613acba 100644 --- a/src/components/program-progress/ProgramProgressSidebar.jsx +++ b/src/components/program-progress/ProgramProgressSidebar.jsx @@ -7,7 +7,7 @@ import ProgramPathwayOpportunity from './ProgramPathwayOpportunity'; import { getProgramCertImage } from './data/utils'; import progSampleCertImage from './images/sample-cert.png'; -function ProgramProgressSideBar() { +const ProgramProgressSideBar = () => { const { programData, industryPathways, creditPathways, certificateData, urls: { programRecordUrl }, } = useContext(ProgramProgressContext); @@ -99,6 +99,6 @@ function ProgramProgressSideBar() { )} </div> ); -} +}; export default ProgramProgressSideBar; diff --git a/src/components/program-progress/SubscriptionExpiringWarningModal.jsx b/src/components/program-progress/SubscriptionExpiringWarningModal.jsx index c993ebbfd6..a4f2c79597 100644 --- a/src/components/program-progress/SubscriptionExpiringWarningModal.jsx +++ b/src/components/program-progress/SubscriptionExpiringWarningModal.jsx @@ -9,10 +9,10 @@ import PropTypes from 'prop-types'; import { UserSubsidyContext } from '../enterprise-user-subsidy'; import { SUBSCRIPTION_EXPIRING_MODAL_TITLE } from './data/constants'; -function SubscriptionExpirationWarningModal({ +const SubscriptionExpirationWarningModal = ({ isSubscriptionExpiringWarningModalOpen, onSubscriptionExpiringWarningModalClose, -}) { +}) => { const { enterpriseConfig: { name, contactEmail }, } = useContext(AppContext); @@ -63,7 +63,7 @@ function SubscriptionExpirationWarningModal({ {renderExpiredBody()} </StandardModal> ); -} +}; SubscriptionExpirationWarningModal.propTypes = { isSubscriptionExpiringWarningModalOpen: PropTypes.bool.isRequired, onSubscriptionExpiringWarningModalClose: PropTypes.func.isRequired, diff --git a/src/components/program-progress/tests/ProgramListingCard.test.jsx b/src/components/program-progress/tests/ProgramListingCard.test.jsx index 7c27320a74..b2b96d3e95 100644 --- a/src/components/program-progress/tests/ProgramListingCard.test.jsx +++ b/src/components/program-progress/tests/ProgramListingCard.test.jsx @@ -19,15 +19,13 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramListingCardWithContext({ initialAppState, initialUserSubsidyState, programData }) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramListingCard program={programData} /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +const ProgramListingCardWithContext = ({ initialAppState, initialUserSubsidyState, programData }) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramListingCard program={programData} /> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); const appState = { enterpriseConfig: { diff --git a/src/components/program-progress/tests/ProgramListingPage.test.jsx b/src/components/program-progress/tests/ProgramListingPage.test.jsx index 1db59a1972..cdc052191b 100644 --- a/src/components/program-progress/tests/ProgramListingPage.test.jsx +++ b/src/components/program-progress/tests/ProgramListingPage.test.jsx @@ -64,20 +64,18 @@ jest.mock('../data/hooks', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramListingWithContext({ +const ProgramListingWithContext = ({ initialAppState = {}, initialUserSubsidyState = {}, -}) { - return ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramListingPage /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> - ); -} +}) => ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramListingPage /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> +); describe('<ProgramListing />', () => { const initialAppState = { diff --git a/src/components/program-progress/tests/ProgramProgressCircle.test.jsx b/src/components/program-progress/tests/ProgramProgressCircle.test.jsx index 5a9017cec9..2c7f144f34 100644 --- a/src/components/program-progress/tests/ProgramProgressCircle.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressCircle.test.jsx @@ -9,15 +9,13 @@ import { } from '../data/constants'; /* eslint-disable react/prop-types */ -function ProgramProgressCircleWithContext({ +const ProgramProgressCircleWithContext = ({ initialProgramProgressContext = {}, -}) { - return ( - <ProgramProgressContext.Provider value={initialProgramProgressContext}> - <ProgramProgressCircle /> - </ProgramProgressContext.Provider> - ); -} +}) => ( + <ProgramProgressContext.Provider value={initialProgramProgressContext}> + <ProgramProgressCircle /> + </ProgramProgressContext.Provider> +); const testProgramData = { type: 'MicroMasters', diff --git a/src/components/program-progress/tests/ProgramProgressCourses.test.jsx b/src/components/program-progress/tests/ProgramProgressCourses.test.jsx index 0b735219fd..cd84377391 100644 --- a/src/components/program-progress/tests/ProgramProgressCourses.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressCourses.test.jsx @@ -43,20 +43,18 @@ const subsidyRequestsState = { }, }; -function ProgramProgressCoursesWithContext({ +const ProgramProgressCoursesWithContext = ({ // eslint-disable-next-line react/prop-types initialAppState, initialUserSubsidyState, courseData, initialSubsidyRequestsState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <ProgramProgressCourses courseData={courseData} /> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <ProgramProgressCourses courseData={courseData} /> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<ProgramProgressCourses />', () => { it('displays the completed course with enrolled course run', () => { diff --git a/src/components/program-progress/tests/ProgramProgressHeader.test.jsx b/src/components/program-progress/tests/ProgramProgressHeader.test.jsx index 5c57b6e3cf..118b5fb3f1 100644 --- a/src/components/program-progress/tests/ProgramProgressHeader.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressHeader.test.jsx @@ -7,15 +7,13 @@ import { ProgramProgressContext } from '../ProgramProgressContextProvider'; import { getProgramIcon } from '../data/utils'; /* eslint-disable react/prop-types */ -function ProgramProgressHeaderWithContext({ +const ProgramProgressHeaderWithContext = ({ initialProgramProgressContext = {}, -}) { - return ( - <ProgramProgressContext.Provider value={initialProgramProgressContext}> - <ProgramProgressHeader /> - </ProgramProgressContext.Provider> - ); -} +}) => ( + <ProgramProgressContext.Provider value={initialProgramProgressContext}> + <ProgramProgressHeader /> + </ProgramProgressContext.Provider> +); const testProgramData = { type: 'MicroMasters', diff --git a/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx b/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx index 36f665e7c6..40ca0d0f9d 100644 --- a/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx +++ b/src/components/program-progress/tests/ProgramProgressSidebar.test.jsx @@ -8,15 +8,13 @@ import { getProgramCertImage } from '../data/utils'; import progSampleCertImage from '../images/sample-cert.png'; /* eslint-disable react/prop-types */ -function ProgramProgressSideBarWithContext({ +const ProgramProgressSideBarWithContext = ({ initialProgramProgressContext = {}, -}) { - return ( - <ProgramProgressContext.Provider value={initialProgramProgressContext}> - <ProgramProgressSidebar /> - </ProgramProgressContext.Provider> - ); -} +}) => ( + <ProgramProgressContext.Provider value={initialProgramProgressContext}> + <ProgramProgressSidebar /> + </ProgramProgressContext.Provider> +); const testProgramData = { type: 'MicroMasters', diff --git a/src/components/program/BulletList.jsx b/src/components/program/BulletList.jsx index fa6a886206..4c5aa2966f 100644 --- a/src/components/program/BulletList.jsx +++ b/src/components/program/BulletList.jsx @@ -1,17 +1,15 @@ import React from 'react'; import PropTypes from 'prop-types'; -function BulletList({ items }) { - return ( - <ul> - {items.map(item => ( - <li className="bullet-point mb-2" key={item}> - {item} - </li> - ))} - </ul> - ); -} +const BulletList = ({ items }) => ( + <ul> + {items.map(item => ( + <li className="bullet-point mb-2" key={item}> + {item} + </li> + ))} + </ul> +); BulletList.propTypes = { items: PropTypes.arrayOf(PropTypes.string).isRequired, diff --git a/src/components/program/ProgramCTA.jsx b/src/components/program/ProgramCTA.jsx index 8da9df6e58..b4e9dd2f8b 100644 --- a/src/components/program/ProgramCTA.jsx +++ b/src/components/program/ProgramCTA.jsx @@ -9,7 +9,7 @@ import { getAuthenticatedUser } from '@edx/frontend-platform/auth'; import { ProgramContext } from './ProgramContextProvider'; import { getProgramDuration } from './data/utils'; -function ProgramCTA() { +const ProgramCTA = () => { const intl = useIntl(); const { program } = useContext(ProgramContext); const { courses, subjects } = program; @@ -138,6 +138,6 @@ function ProgramCTA() { </div> </div> ); -} +}; export default ProgramCTA; diff --git a/src/components/program/ProgramContextProvider.jsx b/src/components/program/ProgramContextProvider.jsx index c3c2d53ab6..5e92e35c2e 100644 --- a/src/components/program/ProgramContextProvider.jsx +++ b/src/components/program/ProgramContextProvider.jsx @@ -3,13 +3,11 @@ import PropTypes from 'prop-types'; export const ProgramContext = createContext(); -export function ProgramContextProvider({ children, initialState }) { - return ( - <ProgramContext.Provider value={initialState}> - {children} - </ProgramContext.Provider> - ); -} +export const ProgramContextProvider = ({ children, initialState }) => ( + <ProgramContext.Provider value={initialState}> + {children} + </ProgramContext.Provider> +); ProgramContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/program/ProgramCourses.jsx b/src/components/program/ProgramCourses.jsx index 8f69ab6fc0..8a9665c7ba 100644 --- a/src/components/program/ProgramCourses.jsx +++ b/src/components/program/ProgramCourses.jsx @@ -24,7 +24,7 @@ const getCourseRun = course => ( )[0] ); -function ProgramCourses() { +const ProgramCourses = () => { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const { program } = useContext(ProgramContext); const { programUuid } = useParams(); @@ -103,6 +103,6 @@ function ProgramCourses() { </div> </> ); -} +}; export default ProgramCourses; diff --git a/src/components/program/ProgramDataBar.jsx b/src/components/program/ProgramDataBar.jsx index 54cefdd610..f1a1d98259 100644 --- a/src/components/program/ProgramDataBar.jsx +++ b/src/components/program/ProgramDataBar.jsx @@ -7,7 +7,7 @@ import { faChevronCircleDown } from '@fortawesome/free-solid-svg-icons'; import { ProgramContext } from './ProgramContextProvider'; import ProgramDataBarDetails from './ProgramDataBarDetails'; -function ProgramDataBar() { +const ProgramDataBar = () => { const [stickProgramDataBar, setStickProgramDataBar] = useState(false); const { program: { authoringOrganizations: owners, isProgramEligibleForOneClickPurchase }, @@ -54,5 +54,5 @@ function ProgramDataBar() { </div> </div> ); -} +}; export default ProgramDataBar; diff --git a/src/components/program/ProgramDataBarDetails.jsx b/src/components/program/ProgramDataBarDetails.jsx index 4401f34335..7c2b7b642c 100644 --- a/src/components/program/ProgramDataBarDetails.jsx +++ b/src/components/program/ProgramDataBarDetails.jsx @@ -5,7 +5,7 @@ import PropTypes from 'prop-types'; import { ProgramContext } from './ProgramContextProvider'; import { appendProgramToProgramType } from './data/utils'; -function ProgramDataBarDetails({ handleStick, handleRelease }) { +const ProgramDataBarDetails = ({ handleStick, handleRelease }) => { const { program: { title, authoringOrganizations: owners, type, @@ -66,7 +66,7 @@ function ProgramDataBarDetails({ handleStick, handleRelease }) { <div className="institution">{partnerList}</div> </div> ); -} +}; ProgramDataBarDetails.propTypes = { handleStick: PropTypes.func.isRequired, diff --git a/src/components/program/ProgramEndorsements.jsx b/src/components/program/ProgramEndorsements.jsx index 5e586e9277..251507f916 100644 --- a/src/components/program/ProgramEndorsements.jsx +++ b/src/components/program/ProgramEndorsements.jsx @@ -4,7 +4,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { breakpoints, MediaQuery } from '@edx/paragon'; import { ProgramContext } from './ProgramContextProvider'; -function ProgramEndorsements() { +const ProgramEndorsements = () => { const { program: { corporateEndorsements } } = useContext(ProgramContext); const formatAuthorFullName = endorser => `${endorser.givenName} ${endorser.familyName}`; const title = endorser => (endorser.position ? endorser.position.title : ''); @@ -54,6 +54,6 @@ function ProgramEndorsements() { </div> </div> ) : null; -} +}; export default ProgramEndorsements; diff --git a/src/components/program/ProgramFAQ.jsx b/src/components/program/ProgramFAQ.jsx index 141efaaec3..3818d88624 100644 --- a/src/components/program/ProgramFAQ.jsx +++ b/src/components/program/ProgramFAQ.jsx @@ -4,7 +4,7 @@ import { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { ProgramContext } from './ProgramContextProvider'; -function ProgramFAQ() { +const ProgramFAQ = () => { const { program: { faq } } = useContext(ProgramContext); return faq?.length > 0 ? ( @@ -28,6 +28,6 @@ function ProgramFAQ() { </div> </div> ) : null; -} +}; export default ProgramFAQ; diff --git a/src/components/program/ProgramHeader.jsx b/src/components/program/ProgramHeader.jsx index f53c081419..d97714940c 100644 --- a/src/components/program/ProgramHeader.jsx +++ b/src/components/program/ProgramHeader.jsx @@ -6,7 +6,7 @@ import { useParams } from 'react-router-dom'; import { ProgramContext } from './ProgramContextProvider'; import { fixedEncodeURIComponent } from '../../utils/common'; -function ProgramHeader() { +const ProgramHeader = () => { const config = getConfig(); const { enterpriseSlug } = useParams(); const { @@ -93,6 +93,6 @@ function ProgramHeader() { : ''} </> ); -} +}; export default ProgramHeader; diff --git a/src/components/program/ProgramInstructors.jsx b/src/components/program/ProgramInstructors.jsx index 26e235380d..279f492fd2 100644 --- a/src/components/program/ProgramInstructors.jsx +++ b/src/components/program/ProgramInstructors.jsx @@ -7,7 +7,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { ProgramContext } from './ProgramContextProvider'; -function ProgramStaff({ program }) { +const ProgramStaff = ({ program }) => { const { config } = useContext(AppContext); const formatStaffFullName = staff => `${staff.givenName} ${staff.familyName}`; @@ -40,7 +40,7 @@ function ProgramStaff({ program }) { ))} </div> ); -} +}; ProgramStaff.propTypes = { program: PropTypes.shape({ @@ -57,7 +57,7 @@ ProgramStaff.propTypes = { }).isRequired, }; -function ProgramInstructors() { +const ProgramInstructors = () => { const { program } = useContext(ProgramContext); return ( @@ -106,6 +106,6 @@ function ProgramInstructors() { )} </div> ); -} +}; export default ProgramInstructors; diff --git a/src/components/program/ProgramMainContent.jsx b/src/components/program/ProgramMainContent.jsx index d8972d353b..0af387c275 100644 --- a/src/components/program/ProgramMainContent.jsx +++ b/src/components/program/ProgramMainContent.jsx @@ -5,7 +5,7 @@ import { PreviewExpand } from '../preview-expand'; import { ProgramContext } from './ProgramContextProvider'; import BulletList from './BulletList'; -function ProgramMainContent() { +const ProgramMainContent = () => { const { program } = useContext(ProgramContext); const { expectedLearningItems } = program; const { overview } = program; @@ -42,6 +42,6 @@ function ProgramMainContent() { <ProgramInstructors /> </div> ); -} +}; export default ProgramMainContent; diff --git a/src/components/program/ProgramPage.jsx b/src/components/program/ProgramPage.jsx index a85c33166d..12a2090ae1 100644 --- a/src/components/program/ProgramPage.jsx +++ b/src/components/program/ProgramPage.jsx @@ -22,7 +22,7 @@ import NotFoundPage from '../NotFoundPage'; import { PROGRAM_NOT_FOUND_MESSAGE, PROGRAM_NOT_FOUND_TITLE } from './data/constants'; import ProgramDataBar from './ProgramDataBar'; -function ProgramPage() { +const ProgramPage = () => { const { programUuid } = useParams(); const { enterpriseConfig } = useContext(AppContext); @@ -94,6 +94,6 @@ function ProgramPage() { </ProgramContextProvider> </> ); -} +}; export default ProgramPage; diff --git a/src/components/program/ProgramSidebar.jsx b/src/components/program/ProgramSidebar.jsx index 3c1c9ade2d..902443eecb 100644 --- a/src/components/program/ProgramSidebar.jsx +++ b/src/components/program/ProgramSidebar.jsx @@ -13,7 +13,7 @@ import { getVerboseProgramPacing, } from './data/utils'; -function ProgramSidebar() { +const ProgramSidebar = () => { const { program } = useContext(ProgramContext); const expertInstructionSecondaryContent = getExpertInstructionSecondaryContent(program); const programPacingType = getProgramPacing(program); @@ -59,6 +59,6 @@ function ProgramSidebar() { } </ul> ); -} +}; export default ProgramSidebar; diff --git a/src/components/program/ProgramSidebarListItem.jsx b/src/components/program/ProgramSidebarListItem.jsx index baa1f6af6d..2cba261752 100644 --- a/src/components/program/ProgramSidebarListItem.jsx +++ b/src/components/program/ProgramSidebarListItem.jsx @@ -3,26 +3,26 @@ import PropTypes from 'prop-types'; import { Row, Col } from '@edx/paragon'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -export default function ProgramSidebarListItem({ +const ProgramSidebarListItem = ({ icon, label, content, -}) { - return ( - <Row as="li" className="d-flex align-items-start border-bottom py-3"> - <Col className="d-flex align-items-center"> - <FontAwesomeIcon className="mr-3" icon={icon} /> - <span>{label}:</span> - </Col> - <Col> - {content} - </Col> - </Row> - ); -} +}) => ( + <Row as="li" className="d-flex align-items-start border-bottom py-3"> + <Col className="d-flex align-items-center"> + <FontAwesomeIcon className="mr-3" icon={icon} /> + <span>{label}:</span> + </Col> + <Col> + {content} + </Col> + </Row> +); ProgramSidebarListItem.propTypes = { icon: PropTypes.shape().isRequired, label: PropTypes.string.isRequired, content: PropTypes.node.isRequired, }; + +export default ProgramSidebarListItem; diff --git a/src/components/program/tests/ProgramCTA.test.jsx b/src/components/program/tests/ProgramCTA.test.jsx index e7ccbbdc2b..a701bbc0cd 100644 --- a/src/components/program/tests/ProgramCTA.test.jsx +++ b/src/components/program/tests/ProgramCTA.test.jsx @@ -30,23 +30,21 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); /* eslint-disable react/prop-types */ -function ProgramCTAtWithContext({ +const ProgramCTAtWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramCTA /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> - ); -} +}) => ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramCTA /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> +); /* eslint-enable react/prop-types */ describe('<ProgramCTA />', () => { diff --git a/src/components/program/tests/ProgramCourses.test.jsx b/src/components/program/tests/ProgramCourses.test.jsx index ff7557579e..ce4e581445 100644 --- a/src/components/program/tests/ProgramCourses.test.jsx +++ b/src/components/program/tests/ProgramCourses.test.jsx @@ -31,21 +31,19 @@ jest.mock('@edx/frontend-enterprise-utils', () => { }); /* eslint-disable react/prop-types */ -function ProgramCoursestWithContext({ +const ProgramCoursestWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramCourses /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramCourses /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<ProgramCourses />', () => { diff --git a/src/components/program/tests/ProgramDataBar.test.jsx b/src/components/program/tests/ProgramDataBar.test.jsx index 4d6181acb7..e689027ae3 100644 --- a/src/components/program/tests/ProgramDataBar.test.jsx +++ b/src/components/program/tests/ProgramDataBar.test.jsx @@ -14,17 +14,15 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramDataBarWithContext({ initialAppState, initialUserSubsidyState, initialProgramState }) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramDataBar /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +const ProgramDataBarWithContext = ({ initialAppState, initialUserSubsidyState, initialProgramState }) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramDataBar /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); const appState = { enterpriseConfig: { diff --git a/src/components/program/tests/ProgramEndorsements.test.jsx b/src/components/program/tests/ProgramEndorsements.test.jsx index 3798384b9f..4b5bcf74a7 100644 --- a/src/components/program/tests/ProgramEndorsements.test.jsx +++ b/src/components/program/tests/ProgramEndorsements.test.jsx @@ -12,21 +12,19 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramEndorsementsWithContext({ +const ProgramEndorsementsWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramEndorsements /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramEndorsements /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<ProgramEndorsements />', () => { diff --git a/src/components/program/tests/ProgramFAQ.test.jsx b/src/components/program/tests/ProgramFAQ.test.jsx index f1eb2f4d77..6fe13e57f4 100644 --- a/src/components/program/tests/ProgramFAQ.test.jsx +++ b/src/components/program/tests/ProgramFAQ.test.jsx @@ -14,21 +14,19 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramFAQWithContext({ +const ProgramFAQWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramFAQ /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramFAQ /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<ProgramFAQ />', () => { diff --git a/src/components/program/tests/ProgramHeader.test.jsx b/src/components/program/tests/ProgramHeader.test.jsx index c3150a4194..45b0a41ebb 100644 --- a/src/components/program/tests/ProgramHeader.test.jsx +++ b/src/components/program/tests/ProgramHeader.test.jsx @@ -13,21 +13,19 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramHeaderWithContext({ +const ProgramHeaderWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramHeader /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramHeader /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<ProgramHeader />', () => { diff --git a/src/components/program/tests/ProgramInstructors.test.jsx b/src/components/program/tests/ProgramInstructors.test.jsx index 60c4302ac6..4104be0da3 100644 --- a/src/components/program/tests/ProgramInstructors.test.jsx +++ b/src/components/program/tests/ProgramInstructors.test.jsx @@ -6,13 +6,11 @@ import { ProgramContextProvider } from '../ProgramContextProvider'; import ProgramInstructors from '../ProgramInstructors'; // eslint-disable-next-line react/prop-types -function ProgramInstructorsWithContext({ initialState = {} }) { - return ( - <ProgramContextProvider initialState={initialState}> - <ProgramInstructors /> - </ProgramContextProvider> - ); -} +const ProgramInstructorsWithContext = ({ initialState = {} }) => ( + <ProgramContextProvider initialState={initialState}> + <ProgramInstructors /> + </ProgramContextProvider> +); describe('<ProgramInstructors />', () => { const initialState = { diff --git a/src/components/program/tests/ProgramMainContent.test.jsx b/src/components/program/tests/ProgramMainContent.test.jsx index 9f4eb91b56..916e232eef 100644 --- a/src/components/program/tests/ProgramMainContent.test.jsx +++ b/src/components/program/tests/ProgramMainContent.test.jsx @@ -17,21 +17,19 @@ jest.mock('@edx/frontend-platform/auth', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramMainContentWithContext({ +const ProgramMainContentWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramMainContent /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramMainContent /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<ProgramMainContent />', () => { diff --git a/src/components/program/tests/ProgramPage.test.jsx b/src/components/program/tests/ProgramPage.test.jsx index e9bda0c76e..f933223c26 100644 --- a/src/components/program/tests/ProgramPage.test.jsx +++ b/src/components/program/tests/ProgramPage.test.jsx @@ -39,20 +39,18 @@ jest.mock('../data/hooks', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramWithContext({ +const ProgramWithContext = ({ initialAppState = {}, initialUserSubsidyState = {}, -}) { - return ( - <IntlProvider locale="en"> - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramPage /> - </UserSubsidyContext.Provider> - </AppContext.Provider> - </IntlProvider> - ); -} +}) => ( + <IntlProvider locale="en"> + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramPage /> + </UserSubsidyContext.Provider> + </AppContext.Provider> + </IntlProvider> +); /* eslint-enable react/prop-types */ describe('<Program />', () => { diff --git a/src/components/program/tests/ProgramSidebar.test.jsx b/src/components/program/tests/ProgramSidebar.test.jsx index 62a528cf1e..d34df59950 100644 --- a/src/components/program/tests/ProgramSidebar.test.jsx +++ b/src/components/program/tests/ProgramSidebar.test.jsx @@ -15,21 +15,19 @@ jest.mock('react-router-dom', () => ({ })); /* eslint-disable react/prop-types */ -function ProgramSidebarWithContext({ +const ProgramSidebarWithContext = ({ initialAppState = {}, initialProgramState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <ProgramContextProvider initialState={initialProgramState}> - <ProgramSidebar /> - </ProgramContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <ProgramContextProvider initialState={initialProgramState}> + <ProgramSidebar /> + </ProgramContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ describe('<ProgramSidebar />', () => { diff --git a/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx b/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx index 58c7c47102..0f6a9891c6 100644 --- a/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx +++ b/src/components/progress-category-bubbles/ProgressCategoryBubbles.jsx @@ -3,26 +3,24 @@ import { Bubble, Stack } from '@edx/paragon'; import PropTypes from 'prop-types'; import './styles/index.scss'; -function ProgressCategoryBubbles({ notStarted, inProgress, completed }) { - return ( - <Stack direction="horizontal" gap={2}> - <Bubble className="remaining-courses" data-testid="remaining-count"> - {notStarted} - </Bubble> - <div>Remaining</div> +const ProgressCategoryBubbles = ({ notStarted, inProgress, completed }) => ( + <Stack direction="horizontal" gap={2}> + <Bubble className="remaining-courses" data-testid="remaining-count"> + {notStarted} + </Bubble> + <div>Remaining</div> - <Bubble className="in-progress-courses" data-testid="in-progress-count"> - {inProgress} - </Bubble> - <div>In progress</div> + <Bubble className="in-progress-courses" data-testid="in-progress-count"> + {inProgress} + </Bubble> + <div>In progress</div> - <Bubble className="completed-courses" data-testid="completed-count"> - {completed} - </Bubble> - <div>Completed</div> - </Stack> - ); -} + <Bubble className="completed-courses" data-testid="completed-count"> + {completed} + </Bubble> + <div>Completed</div> + </Stack> +); ProgressCategoryBubbles.propTypes = { notStarted: PropTypes.number.isRequired, diff --git a/src/components/search/Search.jsx b/src/components/search/Search.jsx index 4dd217d34f..cef27a7b2f 100644 --- a/src/components/search/Search.jsx +++ b/src/components/search/Search.jsx @@ -35,7 +35,7 @@ import SearchPathwayCard from '../pathway/SearchPathwayCard'; import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; import PathwayModal from '../pathway/PathwayModal'; -function Search() { +const Search = () => { const { pathwayUUID } = useParams(); const history = useHistory(); const { refinements: { content_type: contentType } } = useContext(SearchContext); @@ -150,6 +150,6 @@ function Search() { <IntegrationWarningModal isOpen={enterpriseConfig.showIntegrationWarning} /> </> ); -} +}; export default Search; diff --git a/src/components/search/SearchCourse.jsx b/src/components/search/SearchCourse.jsx index 3c7f3ea3b7..e73211807c 100644 --- a/src/components/search/SearchCourse.jsx +++ b/src/components/search/SearchCourse.jsx @@ -6,7 +6,7 @@ import { NUM_RESULTS_COURSE, CONTENT_TYPE_COURSE, COURSE_TITLE } from './constan import SearchResults from './SearchResults'; import SearchCourseCard from './SearchCourseCard'; -function SearchCourse({ filter }) { +const SearchCourse = ({ filter }) => { const defaultFilter = `content_type:${CONTENT_TYPE_COURSE} AND ${filter}`; const config = getConfig(); @@ -20,7 +20,7 @@ function SearchCourse({ filter }) { <SearchResults hitComponent={SearchCourseCard} title={COURSE_TITLE} /> </Index> ); -} +}; SearchCourse.propTypes = { filter: PropTypes.string.isRequired, diff --git a/src/components/search/SearchCourseCard.jsx b/src/components/search/SearchCourseCard.jsx index 95f62b6489..b5e9162e04 100644 --- a/src/components/search/SearchCourseCard.jsx +++ b/src/components/search/SearchCourseCard.jsx @@ -11,7 +11,7 @@ import { sendEnterpriseTrackEvent } from '@edx/frontend-enterprise-utils'; import { getPrimaryPartnerLogo, isDefinedAndNotNull } from '../../utils/common'; -function SearchCourseCard({ hit, isLoading }) { +const SearchCourseCard = ({ hit, isLoading }) => { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const course = useMemo(() => (hit ? camelCaseObject(hit) : {}), [hit]); @@ -153,11 +153,9 @@ function SearchCourseCard({ hit, isLoading }) { </Link> </div> ); -} +}; -function SkeletonCourseCard(props) { - return <SearchCourseCard {...props} isLoading />; -} +const SkeletonCourseCard = (props) => <SearchCourseCard {...props} isLoading />; SearchCourseCard.propTypes = { hit: PropTypes.shape({ diff --git a/src/components/search/SearchError.jsx b/src/components/search/SearchError.jsx index 0d7685bfc1..b69b7aed17 100644 --- a/src/components/search/SearchError.jsx +++ b/src/components/search/SearchError.jsx @@ -5,7 +5,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import { getSearchErrorMessage } from '../utils/search'; -function SearchError({ title }) { +const SearchError = ({ title }) => { const searchErrorMessage = getSearchErrorMessage(title); const renderDialog = useCallback( () => ( @@ -32,7 +32,7 @@ function SearchError({ title }) { open /> ); -} +}; SearchError.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/search/SearchNoResults.jsx b/src/components/search/SearchNoResults.jsx index 226aed307c..71f7bbfde0 100644 --- a/src/components/search/SearchNoResults.jsx +++ b/src/components/search/SearchNoResults.jsx @@ -7,7 +7,7 @@ import { faSearchMinus } from '@fortawesome/free-solid-svg-icons'; import { PopularResults } from './popular-results'; import { getNoResultsMessage } from '../utils/search'; -function SearchNoResults({ title }) { +const SearchNoResults = ({ title }) => { const noResultsMessage = getNoResultsMessage(title); const renderDialog = useCallback( () => ( @@ -38,7 +38,7 @@ function SearchNoResults({ title }) { <PopularResults title={title} /> </> ); -} +}; SearchNoResults.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/search/SearchPathway.jsx b/src/components/search/SearchPathway.jsx index 446bf19925..dc7d90dc3c 100644 --- a/src/components/search/SearchPathway.jsx +++ b/src/components/search/SearchPathway.jsx @@ -7,7 +7,7 @@ import { NUM_RESULTS_PATHWAY, CONTENT_TYPE_PATHWAY, PATHWAY_TITLE } from './cons import SearchResults from './SearchResults'; import SearchPathwayCard from '../pathway/SearchPathwayCard'; -function SearchPathway({ filter }) { +const SearchPathway = ({ filter }) => { const defaultFilter = `content_type:${CONTENT_TYPE_PATHWAY} AND ${filter}`; const config = getConfig(); @@ -21,7 +21,7 @@ function SearchPathway({ filter }) { <SearchResults hitComponent={SearchPathwayCard} title={PATHWAY_TITLE} /> </Index> ); -} +}; SearchPathway.propTypes = { filter: PropTypes.string.isRequired, diff --git a/src/components/search/SearchProgram.jsx b/src/components/search/SearchProgram.jsx index 1b86dd4322..fe3e971ecc 100644 --- a/src/components/search/SearchProgram.jsx +++ b/src/components/search/SearchProgram.jsx @@ -7,7 +7,7 @@ import { NUM_RESULTS_PROGRAM, CONTENT_TYPE_PROGRAM, PROGRAM_TITLE } from './cons import SearchResults from './SearchResults'; import SearchProgramCard from './SearchProgramCard'; -function SearchProgram({ filter }) { +const SearchProgram = ({ filter }) => { const defaultFilter = `content_type:${CONTENT_TYPE_PROGRAM} AND ${filter}`; const config = getConfig(); @@ -21,7 +21,7 @@ function SearchProgram({ filter }) { <SearchResults hitComponent={SearchProgramCard} title={PROGRAM_TITLE} /> </Index> ); -} +}; SearchProgram.propTypes = { filter: PropTypes.string.isRequired, diff --git a/src/components/search/SearchProgramCard.jsx b/src/components/search/SearchProgramCard.jsx index 4ebe5c1a8c..af8c95df03 100644 --- a/src/components/search/SearchProgramCard.jsx +++ b/src/components/search/SearchProgramCard.jsx @@ -37,7 +37,7 @@ export const ProgramType = ({ type }) => { return programTypeToDisplay; }; -function SearchProgramCard({ hit, isLoading }) { +const SearchProgramCard = ({ hit, isLoading }) => { const { enterpriseConfig: { slug, uuid } } = useContext(AppContext); const program = useMemo(() => { if (!hit) { @@ -192,11 +192,9 @@ function SearchProgramCard({ hit, isLoading }) { </Link> </div> ); -} +}; -function SkeletonProgramCard(props) { - return <SearchProgramCard {...props} isLoading />; -} +const SkeletonProgramCard = (props) => <SearchProgramCard {...props} isLoading />; SearchProgramCard.propTypes = { hit: PropTypes.shape({ diff --git a/src/components/search/SearchResults.jsx b/src/components/search/SearchResults.jsx index 905697fbcc..e1dbf5361b 100644 --- a/src/components/search/SearchResults.jsx +++ b/src/components/search/SearchResults.jsx @@ -17,7 +17,7 @@ import { } from './constants'; import { getContentTypeFromTitle, getNoOfResultsFromTitle, getSkeletonCardFromTitle } from '../utils/search'; -function SearchResults({ +const SearchResults = ({ searchResults, searchState, isSearchStalled, @@ -25,7 +25,7 @@ function SearchResults({ hitComponent, title, contentType, -}) { +}) => { const { refinements, dispatch } = useContext(SearchContext); const nbHits = useNbHitsFromSearchResults(searchResults); const linkText = `Show (${nbHits}) >`; @@ -137,7 +137,7 @@ function SearchResults({ </> </Container> ); -} +}; SearchResults.propTypes = { searchState: PropTypes.shape({ diff --git a/src/components/search/popular-results/PopularResults.jsx b/src/components/search/popular-results/PopularResults.jsx index 4ff81cefdc..b088224d0d 100644 --- a/src/components/search/popular-results/PopularResults.jsx +++ b/src/components/search/popular-results/PopularResults.jsx @@ -10,13 +10,13 @@ import { isDefinedAndNotNull } from '../../../utils/common'; import { NUM_RESULTS_TO_DISPLAY } from './data/constants'; import { getHitComponentFromTitle, getSkeletonCardFromTitle } from '../../utils/search'; -function PopularResults({ +const PopularResults = ({ searchResults, isSearchStalled, error, title, numberResultsToDisplay, -}) { +}) => { const nbHits = useNbHitsFromSearchResults(searchResults); return ( @@ -48,7 +48,7 @@ function PopularResults({ )} </> ); -} +}; PopularResults.propTypes = { searchResults: PropTypes.shape(), diff --git a/src/components/search/popular-results/PopularResultsIndex.jsx b/src/components/search/popular-results/PopularResultsIndex.jsx index a55f5e3a53..b5fdac246d 100644 --- a/src/components/search/popular-results/PopularResultsIndex.jsx +++ b/src/components/search/popular-results/PopularResultsIndex.jsx @@ -10,7 +10,7 @@ import { NUM_RESULTS_TO_DISPLAY } from './data/constants'; import { getContentTypeFromTitle } from '../../utils/search'; import { SubsidyRequestsContext } from '../../enterprise-subsidy-requests'; -function PopularResultsIndex({ title, numberResultsToDisplay }) { +const PopularResultsIndex = ({ title, numberResultsToDisplay }) => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, subscriptionLicense, couponCodes: { couponCodes }, enterpriseOffers, @@ -43,7 +43,7 @@ function PopularResultsIndex({ title, numberResultsToDisplay }) { <PopularResults title={title} numberResultsToDisplay={numberResultsToDisplay} /> </Index> ); -} +}; PopularResultsIndex.propTypes = { title: PropTypes.string.isRequired, diff --git a/src/components/search/tests/SearchCourseCard.test.jsx b/src/components/search/tests/SearchCourseCard.test.jsx index 63a186c03f..afde137e3d 100644 --- a/src/components/search/tests/SearchCourseCard.test.jsx +++ b/src/components/search/tests/SearchCourseCard.test.jsx @@ -19,7 +19,7 @@ jest.mock('react-loading-skeleton', () => ({ default: (props = {}) => <div data-testid={props['data-testid']} />, })); -function SearchCourseCardWithAppContext(props) { +const SearchCourseCardWithAppContext = (props) => { const contextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG }, }), []); @@ -28,7 +28,7 @@ function SearchCourseCardWithAppContext(props) { <SearchCourseCard {...props} /> </AppContext.Provider> ); -} +}; const TEST_COURSE_KEY = 'test-course-key'; const TEST_TITLE = 'Test Title'; diff --git a/src/components/search/tests/SearchProgramCard.test.jsx b/src/components/search/tests/SearchProgramCard.test.jsx index d48712f239..0ad1990814 100644 --- a/src/components/search/tests/SearchProgramCard.test.jsx +++ b/src/components/search/tests/SearchProgramCard.test.jsx @@ -30,7 +30,7 @@ jest.mock('@edx/frontend-enterprise-utils', () => ({ sendEnterpriseTrackEvent: jest.fn(), })); -function SearchProgramCardWithAppContext(props) { +const SearchProgramCardWithAppContext = (props) => { const contextValue = useMemo(() => ({ enterpriseConfig: { slug: TEST_ENTERPRISE_SLUG, uuid: enterpriseUuid }, }), []); @@ -39,7 +39,7 @@ function SearchProgramCardWithAppContext(props) { <SearchProgramCard {...props} /> </AppContext.Provider> ); -} +}; const PROGRAM_UUID = 'a9cbdeb6-5fc0-44ef-97f7-9ed605a149db'; const PROGRAM_TITLE = 'Intro to BatVerse'; diff --git a/src/components/search/tests/SearchResults.test.jsx b/src/components/search/tests/SearchResults.test.jsx index d522fa3679..dc318ea114 100644 --- a/src/components/search/tests/SearchResults.test.jsx +++ b/src/components/search/tests/SearchResults.test.jsx @@ -84,19 +84,17 @@ const initialSubsidyRequestsState = { }; /* eslint-enable react/prop-types */ -function SearchResultsWithContext(props) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> - <SearchContext.Provider value={searchContext}> - <SearchResults {...props} /> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +const SearchResultsWithContext = (props) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestsState}> + <SearchContext.Provider value={searchContext}> + <SearchResults {...props} /> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const TEST_COURSE_KEY = 'test-course-key'; diff --git a/src/components/site-header/AvatarDropdown.jsx b/src/components/site-header/AvatarDropdown.jsx index 1e9e3262c4..14d80a156d 100644 --- a/src/components/site-header/AvatarDropdown.jsx +++ b/src/components/site-header/AvatarDropdown.jsx @@ -6,7 +6,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import { AvatarButton, Dropdown } from '@edx/paragon'; import { isDefinedAndNotNull } from '../../utils/common'; -function AvatarDropdown({ showLabel }) { +const AvatarDropdown = ({ showLabel }) => { const { BASE_URL, LMS_BASE_URL, @@ -55,7 +55,7 @@ function AvatarDropdown({ showLabel }) { </Dropdown.Menu> </Dropdown> ); -} +}; AvatarDropdown.propTypes = { showLabel: PropTypes.bool, diff --git a/src/components/site-header/SiteHeader.jsx b/src/components/site-header/SiteHeader.jsx index d90bf784ac..3b9b6d8158 100644 --- a/src/components/site-header/SiteHeader.jsx +++ b/src/components/site-header/SiteHeader.jsx @@ -10,7 +10,7 @@ import SiteHeaderNavMenu from './SiteHeaderNavMenu'; import { Menu, MenuTrigger, MenuContent } from './menu'; import AvatarDropdown from './AvatarDropdown'; -export default function SiteHeader() { +const SiteHeader = () => { const config = getConfig(); const { enterpriseConfig } = useContext(AppContext); @@ -84,4 +84,6 @@ export default function SiteHeader() { </MediaQuery> </> ); -} +}; + +export default SiteHeader; diff --git a/src/components/site-header/SiteHeaderLogos.jsx b/src/components/site-header/SiteHeaderLogos.jsx index 71dece16e7..a969565b12 100644 --- a/src/components/site-header/SiteHeaderLogos.jsx +++ b/src/components/site-header/SiteHeaderLogos.jsx @@ -5,7 +5,7 @@ import { AppContext } from '@edx/frontend-platform/react'; import GetSmarterLogo from '../../assets/icons/getsmarter-logo.svg'; -function SiteHeaderLogos() { +const SiteHeaderLogos = () => { const { enterpriseConfig } = useContext(AppContext); const { pathname } = useLocation(); const isInExecutiveEducationPath = pathname.includes('executive-education-2u'); @@ -42,6 +42,6 @@ function SiteHeaderLogos() { )} </> ); -} +}; export default SiteHeaderLogos; diff --git a/src/components/site-header/SiteHeaderNavMenu.jsx b/src/components/site-header/SiteHeaderNavMenu.jsx index aaa54078d6..a4843b10f9 100644 --- a/src/components/site-header/SiteHeaderNavMenu.jsx +++ b/src/components/site-header/SiteHeaderNavMenu.jsx @@ -2,7 +2,7 @@ import React, { useContext } from 'react'; import { NavLink } from 'react-router-dom'; import { AppContext } from '@edx/frontend-platform/react'; -function SiteHeaderNavMenu() { +const SiteHeaderNavMenu = () => { const { enterpriseConfig } = useContext(AppContext); const mainMenuLinkClassName = 'nav-link'; @@ -20,6 +20,6 @@ function SiteHeaderNavMenu() { </NavLink> </> ); -} +}; export default SiteHeaderNavMenu; diff --git a/src/components/site-header/menu/Menu.jsx b/src/components/site-header/menu/Menu.jsx index 65954a202b..d165643a95 100644 --- a/src/components/site-header/menu/Menu.jsx +++ b/src/components/site-header/menu/Menu.jsx @@ -2,12 +2,10 @@ import React from 'react'; import { CSSTransition } from 'react-transition-group'; import PropTypes from 'prop-types'; -function MenuTrigger({ tag, className, ...attributes }) { - return React.createElement(tag, { - className: `menu-trigger ${className}`, - ...attributes, - }); -} +const MenuTrigger = ({ tag, className, ...attributes }) => React.createElement(tag, { + className: `menu-trigger ${className}`, + ...attributes, +}); MenuTrigger.propTypes = { tag: PropTypes.string, className: PropTypes.string, @@ -18,12 +16,10 @@ MenuTrigger.defaultProps = { }; const MenuTriggerType = <MenuTrigger />.type; -function MenuContent({ tag, className, ...attributes }) { - return React.createElement(tag, { - className: ['menu-content', className].join(' '), - ...attributes, - }); -} +const MenuContent = ({ tag, className, ...attributes }) => React.createElement(tag, { + className: ['menu-content', className].join(' '), + ...attributes, +}); MenuContent.propTypes = { tag: PropTypes.string, className: PropTypes.string, diff --git a/src/components/site-header/tests/SiteHeader.test.jsx b/src/components/site-header/tests/SiteHeader.test.jsx index 4b0b4fc0a2..6d1c15a021 100644 --- a/src/components/site-header/tests/SiteHeader.test.jsx +++ b/src/components/site-header/tests/SiteHeader.test.jsx @@ -29,15 +29,13 @@ const appState = { }; /* eslint-disable react/prop-types */ -function SiteHeaderWithContext({ +const SiteHeaderWithContext = ({ initialAppState = appState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <SiteHeader /> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <SiteHeader /> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const mockWindowConfig = { diff --git a/src/components/skills-quiz/CardLoadingSkeleton.jsx b/src/components/skills-quiz/CardLoadingSkeleton.jsx index b5ce4691b4..68fa9d4b49 100644 --- a/src/components/skills-quiz/CardLoadingSkeleton.jsx +++ b/src/components/skills-quiz/CardLoadingSkeleton.jsx @@ -4,40 +4,38 @@ import { Card } from '@edx/paragon'; import Skeleton from 'react-loading-skeleton'; import { LOADING_NO_OF_CARDS } from './constants'; -function CardLoadingSkeleton() { - return ( - <div className="row col col-12 p-0"> - <div className="skill-quiz-results align-items-l-between col col-xl-10"> - {Array.from({ length: LOADING_NO_OF_CARDS }, (_, i) => ( - <div - className="search-result-card mb-4" - role="group" - key={i} - > - {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} - <Link to="#"> - <Card> - <Card.ImageCap - as={Skeleton} - duration={0} - /> +const CardLoadingSkeleton = () => ( + <div className="row col col-12 p-0"> + <div className="skill-quiz-results align-items-l-between col col-xl-10"> + {Array.from({ length: LOADING_NO_OF_CARDS }, (_, i) => ( + <div + className="search-result-card mb-4" + role="group" + key={i} + > + {/* eslint-disable-next-line jsx-a11y/anchor-is-valid */} + <Link to="#"> + <Card> + <Card.ImageCap + as={Skeleton} + duration={0} + /> - <Card.Header - title={ - <Skeleton count={2} data-testid="course-title-loading" /> - } - /> - <Card.Section> - <Skeleton duration={0} data-testid="partner-name-loading" /> - <Skeleton count={1} data-testid="skills-loading" /> - </Card.Section> - </Card> - </Link> - </div> - ))} - </div> + <Card.Header + title={ + <Skeleton count={2} data-testid="course-title-loading" /> + } + /> + <Card.Section> + <Skeleton duration={0} data-testid="partner-name-loading" /> + <Skeleton count={1} data-testid="skills-loading" /> + </Card.Section> + </Card> + </Link> + </div> + ))} </div> - ); -} + </div> +); export default CardLoadingSkeleton; diff --git a/src/components/skills-quiz/CourseCard.jsx b/src/components/skills-quiz/CourseCard.jsx index 4cf02eeb34..a197a6514e 100644 --- a/src/components/skills-quiz/CourseCard.jsx +++ b/src/components/skills-quiz/CourseCard.jsx @@ -12,9 +12,9 @@ import { ELLIPSIS_STR } from '../course/data/constants'; import { isDefinedAndNotNull } from '../../utils/common'; import { MAX_VISIBLE_SKILLS_COURSE, SKILL_NAME_CUTOFF_LIMIT } from './constants'; -function CourseCard({ +const CourseCard = ({ isLoading, course, allSkills, -}) { +}) => { const { enterpriseConfig } = useContext(AppContext); const { slug, uuid } = enterpriseConfig; const partnerDetails = useMemo(() => { @@ -134,7 +134,7 @@ function CourseCard({ </Link> </div> ); -} +}; CourseCard.propTypes = { course: PropTypes.shape({ diff --git a/src/components/skills-quiz/CurrentJobDropdown.jsx b/src/components/skills-quiz/CurrentJobDropdown.jsx index c9562d4613..f9b2c1a881 100644 --- a/src/components/skills-quiz/CurrentJobDropdown.jsx +++ b/src/components/skills-quiz/CurrentJobDropdown.jsx @@ -4,7 +4,7 @@ import FacetListRefinement from '@edx/frontend-enterprise-catalog-search/FacetLi import { CURRENT_JOB_FACET } from './constants'; -function CurrentJobDropdown() { +const CurrentJobDropdown = () => { const { refinements } = useContext(SearchContext); const { title, attribute, typeaheadOptions, facetValueType, customAttribute, @@ -25,6 +25,6 @@ function CurrentJobDropdown() { showBadge={false} /> ); -} +}; export default CurrentJobDropdown; diff --git a/src/components/skills-quiz/GoalDropdown.jsx b/src/components/skills-quiz/GoalDropdown.jsx index 76feddbd58..6871f95115 100644 --- a/src/components/skills-quiz/GoalDropdown.jsx +++ b/src/components/skills-quiz/GoalDropdown.jsx @@ -7,7 +7,7 @@ import { import { SET_KEY_VALUE } from './data/constants'; import { SkillsContext } from './SkillsContextProvider'; -function GoalDropdown() { +const GoalDropdown = () => { const { dispatch, state } = useContext(SkillsContext); const { goal } = state; const selectGoal = (selectedGoal) => { @@ -30,6 +30,6 @@ function GoalDropdown() { </Dropdown.Menu> </Dropdown> ); -} +}; export default GoalDropdown; diff --git a/src/components/skills-quiz/JobCardComponent.jsx b/src/components/skills-quiz/JobCardComponent.jsx index 4db0e6fda5..152d21154e 100644 --- a/src/components/skills-quiz/JobCardComponent.jsx +++ b/src/components/skills-quiz/JobCardComponent.jsx @@ -6,7 +6,7 @@ import PropTypes from 'prop-types'; import { formatStringAsNumber } from '../../utils/common'; import { NOT_AVAILABLE } from './constants'; -function JobCardComponent({ jobs, isLoading }) { +const JobCardComponent = ({ jobs, isLoading }) => { const { enterpriseConfig: { hideLaborMarketData } } = useContext(AppContext); return ( // eslint-disable-next-line react/jsx-no-useless-fragment @@ -60,7 +60,7 @@ function JobCardComponent({ jobs, isLoading }) { ))} </> ); -} +}; JobCardComponent.defaultProps = { jobs: undefined, diff --git a/src/components/skills-quiz/SearchCourseCard.jsx b/src/components/skills-quiz/SearchCourseCard.jsx index be8cd0b0a5..b1dfb2378b 100644 --- a/src/components/skills-quiz/SearchCourseCard.jsx +++ b/src/components/skills-quiz/SearchCourseCard.jsx @@ -28,7 +28,7 @@ const renderDialog = () => ( </div> ); -function SearchCourseCard({ index }) { +const SearchCourseCard = ({ index }) => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, subscriptionLicense, couponCodes: { couponCodes }, enterpriseOffers, @@ -117,7 +117,7 @@ function SearchCourseCard({ index }) { </div> </div> ); -} +}; SearchCourseCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchCurrentJobCard.jsx b/src/components/skills-quiz/SearchCurrentJobCard.jsx index 5388ccba5d..ee6810003c 100644 --- a/src/components/skills-quiz/SearchCurrentJobCard.jsx +++ b/src/components/skills-quiz/SearchCurrentJobCard.jsx @@ -8,7 +8,7 @@ import { SkillsContext } from './SkillsContextProvider'; import JobCardComponent from './JobCardComponent'; import { SET_KEY_VALUE } from './data/constants'; -function SearchCurrentJobCard({ index }) { +const SearchCurrentJobCard = ({ index }) => { const { refinements } = useContext(SearchContext); const { current_job: currentJob } = refinements; const [isLoading, setIsLoading] = useState(true); @@ -51,7 +51,7 @@ function SearchCurrentJobCard({ index }) { <JobCardComponent jobs={currentJobRole} isLoading={isLoading} /> </div> ); -} +}; SearchCurrentJobCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchJobCard.jsx b/src/components/skills-quiz/SearchJobCard.jsx index eeee8fd185..53815ba450 100644 --- a/src/components/skills-quiz/SearchJobCard.jsx +++ b/src/components/skills-quiz/SearchJobCard.jsx @@ -7,7 +7,7 @@ import { SkillsContext } from './SkillsContextProvider'; import { SET_KEY_VALUE } from './data/constants'; import JobCardComponent from './JobCardComponent'; -function SearchJobCard({ index }) { +const SearchJobCard = ({ index }) => { const { refinements } = useContext(SearchContext); const { name: jobs } = refinements; const [isLoading, setIsLoading] = useState(true); @@ -51,7 +51,7 @@ function SearchJobCard({ index }) { <JobCardComponent jobs={interestedJobs} isLoading={isLoading} /> </div> ); -} +}; SearchJobCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchJobDropdown.jsx b/src/components/skills-quiz/SearchJobDropdown.jsx index 07280c6c6a..25a31ec1e6 100644 --- a/src/components/skills-quiz/SearchJobDropdown.jsx +++ b/src/components/skills-quiz/SearchJobDropdown.jsx @@ -4,7 +4,7 @@ import FacetListRefinement from '@edx/frontend-enterprise-catalog-search/FacetLi import { DESIRED_JOB_FACET } from './constants'; -function SearchJobDropdown() { +const SearchJobDropdown = () => { const { refinements } = useContext(SearchContext); const { title, attribute, typeaheadOptions } = DESIRED_JOB_FACET; @@ -22,6 +22,6 @@ function SearchJobDropdown() { showBadge={false} /> ); -} +}; export default SearchJobDropdown; diff --git a/src/components/skills-quiz/SearchPathways.jsx b/src/components/skills-quiz/SearchPathways.jsx index 32bd56f35a..4a2bff56ee 100644 --- a/src/components/skills-quiz/SearchPathways.jsx +++ b/src/components/skills-quiz/SearchPathways.jsx @@ -13,7 +13,7 @@ import { UserSubsidyContext } from '../enterprise-user-subsidy'; import SearchPathwayCard from '../pathway/SearchPathwayCard'; import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; -function SearchPathways({ index }) { +const SearchPathways = ({ index }) => { const { enterpriseConfig } = useContext(AppContext); const { subscriptionPlan, subscriptionLicense, couponCodes: { couponCodes }, enterpriseOffers, @@ -86,7 +86,7 @@ function SearchPathways({ index }) { </div> </div> ); -} +}; SearchPathways.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SearchProgramCard.jsx b/src/components/skills-quiz/SearchProgramCard.jsx index 69ae036a50..25c3c9e558 100644 --- a/src/components/skills-quiz/SearchProgramCard.jsx +++ b/src/components/skills-quiz/SearchProgramCard.jsx @@ -56,7 +56,7 @@ const renderDialog = () => ( </div> ); -function SearchProgramCard({ index }) { +const SearchProgramCard = ({ index }) => { const { enterpriseConfig } = useContext(AppContext); const { slug, uuid } = enterpriseConfig; const { @@ -291,7 +291,7 @@ function SearchProgramCard({ index }) { </div> </div> ); -} +}; SearchProgramCard.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SelectJobCard.jsx b/src/components/skills-quiz/SelectJobCard.jsx index 7feee2d8e5..6e4c4b09d3 100644 --- a/src/components/skills-quiz/SelectJobCard.jsx +++ b/src/components/skills-quiz/SelectJobCard.jsx @@ -7,7 +7,7 @@ import { formatStringAsNumber } from '../../utils/common'; import { checkValidGoalAndJobSelected } from '../utils/skills-quiz'; import { NOT_AVAILABLE } from './constants'; -function SelectJobCard() { +const SelectJobCard = () => { const { dispatch, state } = useContext(SkillsContext); const { enterpriseConfig: { hideLaborMarketData } } = useContext(AppContext); const { @@ -64,6 +64,6 @@ function SelectJobCard() { </SelectableBox.Set> </div> ); -} +}; export default SelectJobCard; diff --git a/src/components/skills-quiz/SelectedJobSkills.jsx b/src/components/skills-quiz/SelectedJobSkills.jsx index 9e572ed85a..8bbd7d7204 100644 --- a/src/components/skills-quiz/SelectedJobSkills.jsx +++ b/src/components/skills-quiz/SelectedJobSkills.jsx @@ -3,7 +3,7 @@ import { Badge } from '@edx/paragon'; import { SkillsContext } from './SkillsContextProvider'; import { DROPDOWN_OPTION_IMPROVE_CURRENT_ROLE } from './constants'; -function SelectedJobSkills() { +const SelectedJobSkills = () => { const { state } = useContext(SkillsContext); const { interestedJobs, selectedJob, goal, currentJobRole, @@ -32,6 +32,6 @@ function SelectedJobSkills() { </div> </div> ); -} +}; export default SelectedJobSkills; diff --git a/src/components/skills-quiz/SkillsContextProvider.jsx b/src/components/skills-quiz/SkillsContextProvider.jsx index 3bf141c0b2..95966b189b 100644 --- a/src/components/skills-quiz/SkillsContextProvider.jsx +++ b/src/components/skills-quiz/SkillsContextProvider.jsx @@ -19,7 +19,7 @@ const reducer = (state, action) => { } }; -export function SkillsContextProvider({ children, initialState = { goal: GOAL_DROPDOWN_DEFAULT_OPTION } }) { +export const SkillsContextProvider = ({ children, initialState = { goal: GOAL_DROPDOWN_DEFAULT_OPTION } }) => { const [state, dispatch] = useReducer(reducer, initialState); const value = useMemo(() => ({ state, dispatch }), [state]); @@ -28,7 +28,7 @@ export function SkillsContextProvider({ children, initialState = { goal: GOAL_DR {children} </SkillsContext.Provider> ); -} +}; SkillsContextProvider.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/skills-quiz/SkillsCourses.jsx b/src/components/skills-quiz/SkillsCourses.jsx index 9ae49dea88..c679cdf8b0 100644 --- a/src/components/skills-quiz/SkillsCourses.jsx +++ b/src/components/skills-quiz/SkillsCourses.jsx @@ -36,7 +36,7 @@ const renderDialog = () => ( </div> ); -function SkillsCourses({ index }) { +const SkillsCourses = ({ index }) => { const { enterpriseConfig } = useContext(AppContext); const { state: { selectedJob } } = useContext(SkillsContext); const [isLoading, setIsLoading] = useState(false); @@ -163,7 +163,7 @@ function SkillsCourses({ index }) { </div> </div> ); -} +}; SkillsCourses.propTypes = { index: PropTypes.shape({ diff --git a/src/components/skills-quiz/SkillsDropDown.jsx b/src/components/skills-quiz/SkillsDropDown.jsx index af4fe24aee..e9ce7c214f 100644 --- a/src/components/skills-quiz/SkillsDropDown.jsx +++ b/src/components/skills-quiz/SkillsDropDown.jsx @@ -4,7 +4,7 @@ import FacetListRefinement from '@edx/frontend-enterprise-catalog-search/FacetLi import { SKILLS_FACET } from './constants'; -function SkillsDropDown() { +const SkillsDropDown = () => { const { refinements } = useContext(SearchContext); const { title, attribute, typeaheadOptions, facetValueType, @@ -23,6 +23,6 @@ function SkillsDropDown() { doRefinement={false} /> ); -} +}; export default SkillsDropDown; diff --git a/src/components/skills-quiz/SkillsQuiz.jsx b/src/components/skills-quiz/SkillsQuiz.jsx index a2635baa8c..d2f6c34e4a 100644 --- a/src/components/skills-quiz/SkillsQuiz.jsx +++ b/src/components/skills-quiz/SkillsQuiz.jsx @@ -12,7 +12,7 @@ import { MainContent } from '../layout'; import SkillsQuizStepper from './SkillsQuizStepper'; import { SkillsContextProvider } from './SkillsContextProvider'; -function SkillsQuiz() { +const SkillsQuiz = () => { const { enterpriseConfig } = useContext(AppContext); const PAGE_TITLE = `Skills Quiz - ${enterpriseConfig.name}`; @@ -33,6 +33,6 @@ function SkillsQuiz() { </Container> </> ); -} +}; export default SkillsQuiz; diff --git a/src/components/skills-quiz/SkillsQuizHeader.jsx b/src/components/skills-quiz/SkillsQuizHeader.jsx index d26baa396b..d6a79d227e 100644 --- a/src/components/skills-quiz/SkillsQuizHeader.jsx +++ b/src/components/skills-quiz/SkillsQuizHeader.jsx @@ -1,21 +1,19 @@ import React from 'react'; import edxLogo from './images/edx-logo.svg'; -function SkillsQuizHeader() { - return ( - <div className="d-flex ml-2"> - <img src={edxLogo} alt="edx-logo" height="110px" /> - <div - className="ml-5 vertical-line" - /> - <div style={{ minWidth: 'max-content' }} className="ml-5 header-text"> - <h1 className="heading">Skills Builder</h1> - <h2 className="subheading"> - Start your learning journey with edX - </h2> - </div> +const SkillsQuizHeader = () => ( + <div className="d-flex ml-2"> + <img src={edxLogo} alt="edx-logo" height="110px" /> + <div + className="ml-5 vertical-line" + /> + <div style={{ minWidth: 'max-content' }} className="ml-5 header-text"> + <h1 className="heading">Skills Builder</h1> + <h2 className="subheading"> + Start your learning journey with edX + </h2> </div> - ); -} + </div> +); export default SkillsQuizHeader; diff --git a/src/components/skills-quiz/SkillsQuizPage.jsx b/src/components/skills-quiz/SkillsQuizPage.jsx index 100b424187..530122cf38 100644 --- a/src/components/skills-quiz/SkillsQuizPage.jsx +++ b/src/components/skills-quiz/SkillsQuizPage.jsx @@ -5,10 +5,12 @@ import { Redirect } from 'react-router-dom'; import SkillsQuiz from './SkillsQuiz'; -export default function DashboardPage() { +const DashboardPage = () => { const config = getConfig(); if (!config.ENABLE_SKILLS_QUIZ) { return <Redirect to="/" />; } return <SkillsQuiz />; -} +}; + +export default DashboardPage; diff --git a/src/components/skills-quiz/SkillsQuizStepper.jsx b/src/components/skills-quiz/SkillsQuizStepper.jsx index 939722d248..4fdd7c55bd 100644 --- a/src/components/skills-quiz/SkillsQuizStepper.jsx +++ b/src/components/skills-quiz/SkillsQuizStepper.jsx @@ -49,7 +49,7 @@ import { SubsidyRequestsContext } from '../enterprise-subsidy-requests'; import { saveSkillsGoalsAndJobsUserSelected } from './data/utils'; import { fetchCourseEnrollments } from './data/service'; -function SkillsQuizStepper() { +const SkillsQuizStepper = () => { const config = getConfig(); const { userId } = getAuthenticatedUser(); const [searchClient, courseIndex, jobIndex] = useMemo( @@ -384,6 +384,6 @@ function SkillsQuizStepper() { </ModalDialog> </Stepper> ); -} +}; export default SkillsQuizStepper; diff --git a/src/components/skills-quiz/data/tests/service.test.jsx b/src/components/skills-quiz/data/tests/service.test.jsx index b95b16b2c7..25547b2254 100644 --- a/src/components/skills-quiz/data/tests/service.test.jsx +++ b/src/components/skills-quiz/data/tests/service.test.jsx @@ -42,6 +42,7 @@ describe('skills quiz service', () => { const skillsId = [1, 2]; const interestedJobsId = [3, 4]; const currentJobRoleId = 5; + // eslint-disable-next-line no-import-assign service.postSkillsGoalsAndJobsUserSelected = jest.fn() .mockImplementation(() => Promise.resolve({ })); diff --git a/src/components/skills-quiz/tests/GoalsDropdown.test.jsx b/src/components/skills-quiz/tests/GoalsDropdown.test.jsx index 9c2bd8cec1..18189c6b9e 100644 --- a/src/components/skills-quiz/tests/GoalsDropdown.test.jsx +++ b/src/components/skills-quiz/tests/GoalsDropdown.test.jsx @@ -13,20 +13,18 @@ import GoalDropdown from '../GoalDropdown'; import { SkillsContextProvider } from '../SkillsContextProvider'; /* eslint-disable react/prop-types */ -function GoalDropdownWithContext({ +const GoalDropdownWithContext = ({ initialAppState = {}, initialUserSubsidyState = {}, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SkillsContextProvider> - <GoalDropdown /> - </SkillsContextProvider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SkillsContextProvider> + <GoalDropdown /> + </SkillsContextProvider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const mockLocation = { diff --git a/src/components/skills-quiz/tests/SearchCourseCard.test.jsx b/src/components/skills-quiz/tests/SearchCourseCard.test.jsx index cbfbf12068..fb58d3161e 100644 --- a/src/components/skills-quiz/tests/SearchCourseCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchCourseCard.test.jsx @@ -109,28 +109,26 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -function SearchCourseCardWithContext({ +const SearchCourseCardWithContext = ({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, searchContext = defaultSearchContext, index, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SearchContext.Provider value={searchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SearchCourseCard index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SearchContext.Provider value={searchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SearchCourseCard index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SearchCourseCard />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx b/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx index b3feda1ae0..50d245e57d 100644 --- a/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchCurrentJobCard.test.jsx @@ -19,22 +19,20 @@ jest.mock('react-loading-skeleton', () => ({ })); /* eslint-disable react/prop-types */ -function SearchCurrentJobCardWithContext({ +const SearchCurrentJobCardWithContext = ({ index, initialAppState, initialSearchState, initialJobsState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider value={initialSearchState}> - <SkillsContextProvider initialState={initialJobsState}> - <SearchCurrentJobCard index={index} /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider value={initialSearchState}> + <SkillsContextProvider initialState={initialJobsState}> + <SearchCurrentJobCard index={index} /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const TEST_JOB_KEY = 'test-job-key'; diff --git a/src/components/skills-quiz/tests/SearchJobCard.test.jsx b/src/components/skills-quiz/tests/SearchJobCard.test.jsx index 1b3225764e..ac4ec4fb4e 100644 --- a/src/components/skills-quiz/tests/SearchJobCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchJobCard.test.jsx @@ -19,22 +19,20 @@ jest.mock('react-loading-skeleton', () => ({ })); /* eslint-disable react/prop-types */ -function SearchJobCardWithContext({ +const SearchJobCardWithContext = ({ index, initialAppState, initialSearchState, initialJobsState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider value={initialSearchState}> - <SkillsContextProvider initialState={initialJobsState}> - <SearchJobCard index={index} /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider value={initialSearchState}> + <SkillsContextProvider initialState={initialJobsState}> + <SearchJobCard index={index} /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const TEST_JOB_KEY = 'test-job-key'; diff --git a/src/components/skills-quiz/tests/SearchPathways.test.jsx b/src/components/skills-quiz/tests/SearchPathways.test.jsx index 3027a57d34..e1a8bb664b 100644 --- a/src/components/skills-quiz/tests/SearchPathways.test.jsx +++ b/src/components/skills-quiz/tests/SearchPathways.test.jsx @@ -100,28 +100,26 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -function SearchPathwaysWithContext({ +const SearchPathwaysWithContext = ({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, initialSearchContext = defaultSearchContext, index, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SearchContext.Provider value={initialSearchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SearchPathways index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SearchContext.Provider value={initialSearchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SearchPathways index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SearchPathways />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SearchProgramCard.test.jsx b/src/components/skills-quiz/tests/SearchProgramCard.test.jsx index 33b952a20b..95e5a7d962 100644 --- a/src/components/skills-quiz/tests/SearchProgramCard.test.jsx +++ b/src/components/skills-quiz/tests/SearchProgramCard.test.jsx @@ -118,27 +118,25 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -function SearchProgramCardWithContext({ +const SearchProgramCardWithContext = ({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSearchContext = defaultSearchContext, index, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> - <SearchContext.Provider value={initialSearchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SearchProgramCard index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={defaultSubsidyRequestState}> + <SearchContext.Provider value={initialSearchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SearchProgramCard index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SearchProgramCard />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SelectJobCard.test.jsx b/src/components/skills-quiz/tests/SelectJobCard.test.jsx index 0e21b9d08a..2c00cbdd11 100644 --- a/src/components/skills-quiz/tests/SelectJobCard.test.jsx +++ b/src/components/skills-quiz/tests/SelectJobCard.test.jsx @@ -8,20 +8,18 @@ import SelectJobCard from '../SelectJobCard'; import { NOT_AVAILABLE } from '../constants'; /* eslint-disable react/prop-types */ -function SelectJobCardWithContext({ +const SelectJobCardWithContext = ({ initialJobCardState = {}, initialAppState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider> - <SkillsContextProvider initialState={initialJobCardState}> - <SelectJobCard /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider> + <SkillsContextProvider initialState={initialJobCardState}> + <SelectJobCard /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const TEST_MEDIAN_SALARY = '100000'; diff --git a/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx b/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx index 35d13443f7..1db847f071 100644 --- a/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx +++ b/src/components/skills-quiz/tests/SelectedJobSkills.test.jsx @@ -7,20 +7,18 @@ import { SkillsContextProvider } from '../SkillsContextProvider'; import SelectedJobSkills from '../SelectedJobSkills'; /* eslint-disable react/prop-types */ -function SelectedJobSkillsWithContext({ +const SelectedJobSkillsWithContext = ({ initialSelectedJobSkillsState = {}, initialAppState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <SearchContext.Provider> - <SkillsContextProvider initialState={initialSelectedJobSkillsState}> - <SelectedJobSkills /> - </SkillsContextProvider> - </SearchContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <SearchContext.Provider> + <SkillsContextProvider initialState={initialSelectedJobSkillsState}> + <SelectedJobSkills /> + </SkillsContextProvider> + </SearchContext.Provider> + </AppContext.Provider> +); /* eslint-enable react/prop-types */ const PROGRAMMING = 'Programming'; diff --git a/src/components/skills-quiz/tests/SkillsCourses.test.jsx b/src/components/skills-quiz/tests/SkillsCourses.test.jsx index be6fa3eb3c..48c38a5a04 100644 --- a/src/components/skills-quiz/tests/SkillsCourses.test.jsx +++ b/src/components/skills-quiz/tests/SkillsCourses.test.jsx @@ -107,28 +107,26 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -function SkillsCoursesWithContext({ +const SkillsCoursesWithContext = ({ initialAppState = defaultAppState, initialSkillsState = defaultSkillsState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, searchContext = defaultSearchContext, index, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SearchContext.Provider value={searchContext}> - <SkillsContext.Provider value={initialSkillsState}> - <SkillsCourses index={index} /> - </SkillsContext.Provider> - </SearchContext.Provider> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SearchContext.Provider value={searchContext}> + <SkillsContext.Provider value={initialSkillsState}> + <SkillsCourses index={index} /> + </SkillsContext.Provider> + </SearchContext.Provider> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SkillsCourses />', () => { test('renders the correct data', async () => { diff --git a/src/components/skills-quiz/tests/SkillsQuiz.test.jsx b/src/components/skills-quiz/tests/SkillsQuiz.test.jsx index 6e977d0154..3150373e75 100644 --- a/src/components/skills-quiz/tests/SkillsQuiz.test.jsx +++ b/src/components/skills-quiz/tests/SkillsQuiz.test.jsx @@ -59,21 +59,19 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -function SkillsQuizWithContext({ +const SkillsQuizWithContext = ({ initialAppState = defaultAppState, initialUserSubsidyState = defaultUserSubsidyState, initialSubsidyRequestState = defaultSubsidyRequestState, -}) { - return ( - <AppContext.Provider value={initialAppState}> - <UserSubsidyContext.Provider value={initialUserSubsidyState}> - <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> - <SkillsQuiz /> - </SubsidyRequestsContext.Provider> - </UserSubsidyContext.Provider> - </AppContext.Provider> - ); -} +}) => ( + <AppContext.Provider value={initialAppState}> + <UserSubsidyContext.Provider value={initialUserSubsidyState}> + <SubsidyRequestsContext.Provider value={initialSubsidyRequestState}> + <SkillsQuiz /> + </SubsidyRequestsContext.Provider> + </UserSubsidyContext.Provider> + </AppContext.Provider> +); describe('<SkillsQuiz />', () => { afterAll(() => { diff --git a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx index 560e4b8d7a..c131f24944 100644 --- a/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx +++ b/src/components/skills-quiz/tests/SkillsQuizStepper.test.jsx @@ -69,7 +69,7 @@ const defaultSubsidyRequestState = { catalogsForSubsidyRequests: [], }; -function SkillsQuizStepperWrapper({ searchContext, skillsQuizContextState }) { +const SkillsQuizStepperWrapper = ({ searchContext, skillsQuizContextState }) => { const contextValue = useMemo(() => ({ ...searchContext }), [searchContext]); const skillContextProvider = skillsQuizContextState ? ( <SkillsContext.Provider value={skillsQuizContextState}> @@ -101,7 +101,7 @@ function SkillsQuizStepperWrapper({ searchContext, skillsQuizContextState }) { </UserSubsidyContext.Provider> </AppContext.Provider> ); -} +}; SkillsQuizStepperWrapper.defaultProps = { searchContext: null, skillsQuizContextState: null, diff --git a/src/components/system-wide-banner/SystemWideWarningBanner.jsx b/src/components/system-wide-banner/SystemWideWarningBanner.jsx index 7fd7c4a191..c6a4d034b2 100644 --- a/src/components/system-wide-banner/SystemWideWarningBanner.jsx +++ b/src/components/system-wide-banner/SystemWideWarningBanner.jsx @@ -3,14 +3,12 @@ import PropTypes from 'prop-types'; import { PageBanner, Icon } from '@edx/paragon'; import { WarningFilled } from '@edx/paragon/icons'; -function SystemWideWarningBanner({ children }) { - return ( - <PageBanner variant="warning"> - <Icon src={WarningFilled} className="mr-2" /> - {children} - </PageBanner> - ); -} +const SystemWideWarningBanner = ({ children }) => ( + <PageBanner variant="warning"> + <Icon src={WarningFilled} className="mr-2" /> + {children} + </PageBanner> +); SystemWideWarningBanner.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/utils/tests.jsx b/src/utils/tests.jsx index e960d6bd07..5197d927d1 100644 --- a/src/utils/tests.jsx +++ b/src/utils/tests.jsx @@ -13,9 +13,7 @@ export function renderWithRouter( } = {}, ) { // eslint-disable-next-line react/prop-types - function Wrapper({ children }) { - return <Router history={history}>{children}</Router>; - } + const Wrapper = ({ children }) => <Router history={history}>{children}</Router>; return { ...render(ui, { wrapper: Wrapper }), // adding `history` to the returned utilities to allow us From 3063711b7db2d4e272c02121c4703b9413ad756c Mon Sep 17 00:00:00 2001 From: Bilal Qamar <59555732+BilalQamar95@users.noreply.github.com> Date: Thu, 17 Nov 2022 13:44:53 +0500 Subject: [PATCH 13/13] refactor: resolved eslint issues --- .../dashboard/sidebar/SubsidiesSummary.jsx | 76 +++++++++---------- 1 file changed, 37 insertions(+), 39 deletions(-) diff --git a/src/components/dashboard/sidebar/SubsidiesSummary.jsx b/src/components/dashboard/sidebar/SubsidiesSummary.jsx index dd5bdc0005..f8ba3dc095 100644 --- a/src/components/dashboard/sidebar/SubsidiesSummary.jsx +++ b/src/components/dashboard/sidebar/SubsidiesSummary.jsx @@ -77,46 +77,44 @@ const SubsidiesSummary = ({ return ( // TODO: Design debt, don't have cards in a card - <> - <SidebarCard - cardSectionClassNames="border-remove" - cardClassNames={classNames('mb-5', { 'col-8 border-remove': programProgressPage })} - > - <div className={className} data-testid="subsidies-summary"> - {hasActiveLicenseOrLicenseRequest && ( - <SubscriptionSummaryCard - subscriptionPlan={subscriptionPlan} - licenseRequest={licenseRequests[0]} - courseEndDate={courseEndDate} - programProgressPage={programProgressPage} - className="mb-2 border-remove" - /> - )} - {hasAssignedCodesOrCodeRequests && ( - <CouponCodesSummaryCard - couponCodesCount={couponCodesCount} - couponCodeRequestsCount={couponCodeRequests.length} - totalCoursesEligibleForCertificate={totalCoursesEligibleForCertificate} - programProgressPage={programProgressPage} - className="mb-2 border-remove" - /> - )} - {canEnrollWithEnterpriseOffers && ( - <EnterpriseOffersSummaryCard - className="border-remove" - offers={enterpriseOffers} - /> - )} - </div> - {searchCoursesCta && ( - <SidebarCard - cardClassNames="border-remove" - > - {searchCoursesCta} - </SidebarCard> + <SidebarCard + cardSectionClassNames="border-remove" + cardClassNames={classNames('mb-5', { 'col-8 border-remove': programProgressPage })} + > + <div className={className} data-testid="subsidies-summary"> + {hasActiveLicenseOrLicenseRequest && ( + <SubscriptionSummaryCard + subscriptionPlan={subscriptionPlan} + licenseRequest={licenseRequests[0]} + courseEndDate={courseEndDate} + programProgressPage={programProgressPage} + className="mb-2 border-remove" + /> + )} + {hasAssignedCodesOrCodeRequests && ( + <CouponCodesSummaryCard + couponCodesCount={couponCodesCount} + couponCodeRequestsCount={couponCodeRequests.length} + totalCoursesEligibleForCertificate={totalCoursesEligibleForCertificate} + programProgressPage={programProgressPage} + className="mb-2 border-remove" + /> + )} + {canEnrollWithEnterpriseOffers && ( + <EnterpriseOffersSummaryCard + className="border-remove" + offers={enterpriseOffers} + /> )} - </SidebarCard> - </> + </div> + {searchCoursesCta && ( + <SidebarCard + cardClassNames="border-remove" + > + {searchCoursesCta} + </SidebarCard> + )} + </SidebarCard> ); };