diff --git a/.eslintrc.cjs b/.eslintrc.cjs index d2f14c8..39f023d 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -1,27 +1,35 @@ module.exports = { root: true, + env: {browser: true, es2020: true, node: true, jest: true}, + parserOptions: { + ecmaVersion: 'latest', + // eslint-disable-next-line no-undef + tsconfigRootDir: __dirname, + sourceType: 'module', + }, + settings: { + react: { + version: 'detect', + }, + }, extends: [ + 'eslint:recommended', 'plugin:@typescript-eslint/recommended', - 'next/core-web-vitals', + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', 'plugin:react-hooks/recommended', + 'next/core-web-vitals', 'plugin:ssr-friendly/recommended', - 'plugin:prettier/recommended' + 'plugin:prettier/recommended', ], parser: '@typescript-eslint/parser', - parserOptions: { - ecmaFeatures: { - jsx: true - }, - ecmaVersion: 2018, - sourceType: 'module' - }, - plugins: ['prettier', '@typescript-eslint', 'ssr-friendly'], + plugins: ['import', 'prettier', '@typescript-eslint', 'ssr-friendly'], rules: { /** * Allow empty arrow functions `() => {}`, while keeping other empty functions restricted * @see https://eslint.org/docs/latest/rules/no-empty-function#allow-arrowfunctions */ - '@typescript-eslint/no-empty-function': ['error', { allow: ['arrowFunctions'] }], + '@typescript-eslint/no-empty-function': ['error', {allow: ['arrowFunctions']}], '@typescript-eslint/ban-ts-comment': 1, 'no-const-assign': 'error', /** Restrict imports from devDependencies since they are not included in library build. peerDependencies are ok */ @@ -29,8 +37,8 @@ module.exports = { 'error', { devDependencies: false, - peerDependencies: true - } + peerDependencies: true, + }, ], /** * Enforce import order with empty lines between import group @@ -39,20 +47,15 @@ module.exports = { 'import/order': [ 'error', { - groups: [ - 'builtin', - 'external', - 'internal', - ['parent', 'sibling', 'index'] - ], + groups: ['builtin', 'external', 'internal', ['parent', 'sibling', 'index']], pathGroups: [ { pattern: '@/**', - group: 'internal' - } + group: 'internal', + }, ], - 'newlines-between': 'always' - } + 'newlines-between': 'always', + }, ], /** * Disallow combined module and type imports like this `import React, {FC} from 'react'`. @@ -61,14 +64,79 @@ module.exports = { */ '@typescript-eslint/consistent-type-imports': 'error', 'import/no-cycle': 'error', - 'prettier/prettier': ['error', { - semi: true, - singleQuote: true, - jsxSingleQuote: false, - trailingComma: 'none', - bracketSpacing: true, - jsxBracketSameLine: true, - arrowParens: 'avoid' - }] - } + 'prettier/prettier': [ + 'error', + { + semi: true, + singleQuote: true, + jsxSingleQuote: false, + trailingComma: 'es5', + bracketSpacing: false, + jsxBracketSameLine: true, + arrowParens: 'avoid', + }, + ], + '@typescript-eslint/consistent-type-definitions': ['error', 'type'], + /** + * Allow unused variables with names stating with '_' + * @see https://eslint.org/docs/latest/rules/no-unused-vars + * @see https://typescript-eslint.io/rules/no-unused-vars/ + */ + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_', + ignoreRestSiblings: true, + args: 'after-used', + }, + ], + }, + overrides: [ + /* Allow require imports for internal scripts */ + { + files: ['*.js', '*.cjs'], + rules: { + '@typescript-eslint/no-var-requires': 0, + }, + }, + /* Allow devDependencies imports for tests and config files */ + { + files: [ + '**/*.spec.*', + '**/testUtils/*.*', + '**/*.js', + '**/*.cjs', + '**/setupTests.ts', + ], + rules: { + 'import/no-extraneous-dependencies': [ + 'error', + { + devDependencies: true, + peerDependencies: true, + }, + ], + }, + }, + /* Disable `template` directory imports for all files */ + { + files: ['./src/**/*.*'], + rules: { + 'no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: ['**/templates/**'], + message: 'Imports from templates directory are forbidden.', + }, + ], + }, + ], + }, + } + ], }; + diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 6bedb25..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": ["plugin:@typescript-eslint/recommended", "next/core-web-vitals", "plugin:ssr-friendly/recommended", "plugin:prettier/recommended"], - "plugins": ["prettier", "@typescript-eslint", "ssr-friendly"] -} diff --git a/README.md b/README.md index bc88566..eb40895 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ This template is for Next based web applications using Redux. -Tba - ## Features - Supports **Typescript**. diff --git a/package.json b/package.json index c5492a0..8eb8f33 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "start": "next start", "lint:code": "eslint src/ --ext .js,.jsx,.ts,.tsx", "fix:code": "run-s 'lint:code --fix'", - "lint:style": "stylelint 'src/**/*.{ts,tsx}'", - "fix:style": "stylelint 'src/**/*.{ts,tsx}' --fix", + "lint:style": "stylelint 'src/**/*.css'", + "fix:style": "stylelint 'src/**/*.css' --fix", "lint:tsc": "tsc --pretty --noEmit", "prepare": "is-ci || husky install" }, @@ -30,11 +30,14 @@ "@types/react-dom": "18.2.15", "@types/uniqid": "5.3.4", "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "^7.8.0", "eslint": "8.53.0", "eslint-config-next": "13.5.6", "eslint-config-prettier": "8.10.0", "eslint-config-react-app": "7.0.1", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-react": "^7.34.1", "eslint-plugin-react-hooks": "4.6.0", "eslint-plugin-ssr-friendly": "1.2.0", "husky": "8.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a06b99..e353f54 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,7 +47,10 @@ importers: version: 5.3.4 '@typescript-eslint/eslint-plugin': specifier: 5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) + version: 5.62.0(@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^7.8.0 + version: 7.8.0(eslint@8.53.0)(typescript@4.9.5) eslint: specifier: 8.53.0 version: 8.53.0 @@ -60,9 +63,15 @@ importers: eslint-config-react-app: specifier: 7.0.1 version: 7.0.1(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.3))(@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.3))(eslint@8.53.0)(typescript@4.9.5) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0) eslint-plugin-prettier: specifier: 4.2.1 version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.53.0))(eslint@8.53.0)(prettier@2.8.8) + eslint-plugin-react: + specifier: ^7.34.1 + version: 7.34.1(eslint@8.53.0) eslint-plugin-react-hooks: specifier: 4.6.0 version: 4.6.0(eslint@8.53.0) @@ -1285,8 +1294,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/parser@5.49.0': - resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==} + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1295,24 +1304,24 @@ packages: typescript: optional: true - '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/parser@7.8.0': + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/scope-manager@5.49.0': - resolution: {integrity: sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/scope-manager@7.8.0': + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@5.62.0': resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1323,16 +1332,16 @@ packages: typescript: optional: true - '@typescript-eslint/types@5.49.0': - resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@5.62.0': resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/typescript-estree@5.49.0': - resolution: {integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==} + '@typescript-eslint/types@7.8.0': + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1340,9 +1349,9 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/typescript-estree@7.8.0': + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1355,14 +1364,14 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/visitor-keys@5.49.0': - resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@5.62.0': resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@typescript-eslint/visitor-keys@7.8.0': + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} + engines: {node: ^18.18.0 || >=20.0.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -1428,8 +1437,8 @@ packages: array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} array-includes@3.1.7: @@ -1440,6 +1449,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -1448,21 +1461,24 @@ packages: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} - array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - array.prototype.flatmap@1.3.2: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.tosorted@1.1.1: - resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} + + array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} arraybuffer.prototype.slice@1.0.2: resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} @@ -1474,9 +1490,6 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1491,6 +1504,10 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + axe-core@4.6.3: resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} engines: {node: '>=4'} @@ -1535,6 +1552,9 @@ packages: brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -1556,6 +1576,10 @@ packages: call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1709,6 +1733,18 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1748,6 +1784,10 @@ packages: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -1801,19 +1841,43 @@ packages: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-get-iterator@1.1.3: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} @@ -1897,18 +1961,8 @@ packages: '@babel/plugin-transform-react-jsx': ^7.14.9 eslint: ^8.1.0 - eslint-plugin-import@2.27.5: - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-import@2.29.0: - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + eslint-plugin-import@2.29.1: + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -1953,14 +2007,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.32.1: - resolution: {integrity: sha512-vOjdgyd0ZHBXNsmvU+785xY8Bfe57EFbTYYk8XrROzWpr9QBvpjITvAXt9xqcE6+8cjR/g1+mfumPToxsl1www==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - - eslint-plugin-react@7.33.2: - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + eslint-plugin-react@7.34.1: + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -2120,6 +2168,10 @@ packages: get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -2128,6 +2180,10 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.3.0: resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} @@ -2216,10 +2272,17 @@ packages: has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -2228,6 +2291,10 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -2236,6 +2303,10 @@ packages: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} @@ -2296,6 +2367,10 @@ packages: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -2303,6 +2378,10 @@ packages: is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -2331,6 +2410,10 @@ packages: is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -2370,6 +2453,10 @@ packages: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -2400,6 +2487,10 @@ packages: is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2416,6 +2507,10 @@ packages: resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -2617,6 +2712,10 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -2715,12 +2814,16 @@ packages: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} - object.fromentries@2.0.6: - resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} object.fromentries@2.0.7: @@ -2730,11 +2833,8 @@ packages: object.groupby@1.0.1: resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} - object.hasown@1.1.2: - resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} - - object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} engines: {node: '>= 0.4'} object.values@1.1.7: @@ -2840,6 +2940,10 @@ packages: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + postcss-attribute-case-insensitive@6.0.3: resolution: {integrity: sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==} engines: {node: ^14 || ^16 || >=18} @@ -3130,6 +3234,10 @@ packages: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -3158,8 +3266,8 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true - resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true restore-cursor@3.1.0: @@ -3187,9 +3295,17 @@ packages: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} @@ -3206,14 +3322,27 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -3236,6 +3365,10 @@ packages: side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -3306,8 +3439,9 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.matchall@4.0.8: - resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} string.prototype.padend@3.1.5: resolution: {integrity: sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==} @@ -3317,12 +3451,23 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3458,8 +3603,14 @@ packages: resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} engines: {node: '>=12'} - tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -3493,17 +3644,33 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -3582,6 +3749,10 @@ packages: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -4908,10 +5079,10 @@ snapshots: '@types/use-sync-external-store@0.0.3': {} - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.49.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) @@ -4927,25 +5098,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/experimental-utils@5.62.0(eslint@8.53.0)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5)': dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.8.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + debug: 4.3.4 eslint: 8.53.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.3.8 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5)': + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.53.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/scope-manager': 5.49.0 - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/typescript-estree': 5.49.0(typescript@4.9.5) - debug: 4.3.4 + '@typescript-eslint/utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) eslint: 8.53.0 - optionalDependencies: - typescript: 4.9.5 transitivePeerDependencies: - supports-color + - typescript '@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5)': dependencies: @@ -4959,16 +5137,29 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.49.0': + '@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/visitor-keys': 5.49.0 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 7.8.0 + debug: 4.3.4 + eslint: 8.53.0 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/scope-manager@7.8.0': + dependencies: + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 + '@typescript-eslint/type-utils@5.62.0(eslint@8.53.0)(typescript@4.9.5)': dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) @@ -4981,14 +5172,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@5.49.0': {} - '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/typescript-estree@5.49.0(typescript@4.9.5)': + '@typescript-eslint/types@7.8.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/visitor-keys': 5.49.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4999,7 +5190,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 @@ -5007,23 +5198,24 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0(typescript@4.9.5) + tsutils: 3.21.0(typescript@5.1.6) optionalDependencies: - typescript: 4.9.5 + typescript: 5.1.6 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6)': + '@typescript-eslint/typescript-estree@7.8.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0(typescript@5.1.6) + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@4.9.5) optionalDependencies: - typescript: 5.1.6 + typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -5042,14 +5234,14 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.49.0': + '@typescript-eslint/visitor-keys@5.62.0': dependencies: - '@typescript-eslint/types': 5.49.0 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@5.62.0': + '@typescript-eslint/visitor-keys@7.8.0': dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -5112,13 +5304,10 @@ snapshots: call-bind: 1.0.5 is-array-buffer: 3.0.2 - array-includes@3.1.6: + array-buffer-byte-length@1.0.1: dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-string: 1.0.7 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 array-includes@3.1.7: dependencies: @@ -5130,6 +5319,15 @@ snapshots: array-union@2.1.0: {} + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + array.prototype.findlastindex@1.2.3: dependencies: call-bind: 1.0.5 @@ -5145,27 +5343,27 @@ snapshots: es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 - array.prototype.flatmap@1.3.1: + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 - array.prototype.flatmap@1.3.2: + array.prototype.toreversed@1.1.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 - array.prototype.tosorted@1.1.1: + array.prototype.tosorted@1.1.3: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 arraybuffer.prototype.slice@1.0.2: dependencies: @@ -5177,16 +5375,23 @@ snapshots: is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + arrify@1.0.1: {} ast-types-flow@0.0.7: {} astral-regex@2.0.0: {} - asynciterator.prototype@1.0.0: - dependencies: - has-symbols: 1.0.3 - asynckit@0.4.0: {} autoprefixer@10.4.19(postcss@8.4.31): @@ -5201,6 +5406,10 @@ snapshots: available-typed-arrays@1.0.5: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + axe-core@4.6.3: {} axios@1.6.1: @@ -5278,6 +5487,10 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + braces@3.0.2: dependencies: fill-range: 7.0.1 @@ -5306,6 +5519,14 @@ snapshots: get-intrinsic: 1.2.2 set-function-length: 1.1.1 + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + callsites@3.1.0: {} camelcase-keys@7.0.2: @@ -5448,6 +5669,24 @@ snapshots: damerau-levenshtein@1.0.8: {} + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + debug@3.2.7: dependencies: ms: 2.1.3 @@ -5493,6 +5732,12 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.0 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + define-lazy-prop@2.0.0: {} define-properties@1.2.1: @@ -5578,6 +5823,61 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.13 + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + es-get-iterator@1.1.3: dependencies: call-bind: 1.0.5 @@ -5590,22 +5890,26 @@ snapshots: isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - es-iterator-helpers@1.0.15: + es-iterator-helpers@1.0.19: dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - es-set-tostringtag: 2.0.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.2 + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 es-set-tostringtag@2.0.1: dependencies: @@ -5613,10 +5917,20 @@ snapshots: has: 1.0.3 has-tostringtag: 1.0.0 + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.0 + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 @@ -5636,10 +5950,10 @@ snapshots: '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) eslint: 8.53.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.29.0)(eslint@8.53.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0) + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.29.1)(eslint@8.53.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.5.3)(eslint@8.53.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.53.0) - eslint-plugin-react: 7.33.2(eslint@8.53.0) + eslint-plugin-react: 7.34.1(eslint@8.53.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.53.0) optionalDependencies: typescript: 4.9.5 @@ -5656,16 +5970,16 @@ snapshots: '@babel/core': 7.23.3 '@babel/eslint-parser': 7.23.3(@babel/core@7.23.3)(eslint@8.53.0) '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) - '@typescript-eslint/parser': 5.49.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) babel-preset-react-app: 10.0.1 confusing-browser-globals: 1.0.11 eslint: 8.53.0 eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.3))(@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.23.3))(eslint@8.53.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0) - eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.53.0) - eslint-plugin-react: 7.32.1(eslint@8.53.0) + eslint-plugin-react: 7.34.1(eslint@8.53.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.53.0) eslint-plugin-testing-library: 5.11.1(eslint@8.53.0)(typescript@4.9.5) optionalDependencies: @@ -5694,12 +6008,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.29.0)(eslint@8.53.0): + eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.29.1)(eslint@8.53.0): dependencies: debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.53.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.5.3)(eslint@8.53.0) get-tsconfig: 4.3.0 globby: 13.1.3 is-core-module: 2.11.0 @@ -5708,11 +6022,32 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.29.1)(eslint@8.53.0))(eslint@8.53.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.5.3(eslint-plugin-import@2.29.1)(eslint@8.53.0) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.49.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 7.8.0(eslint@8.53.0)(typescript@4.9.5) eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -5726,32 +6061,34 @@ snapshots: lodash: 4.17.21 string-natural-compare: 3.0.1 - eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-typescript@3.5.3)(eslint@8.53.0): dependencies: array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) - has: 1.0.3 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.5.3(eslint-plugin-import@2.29.1)(eslint@8.53.0))(eslint@8.53.0) + hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 object.values: 1.1.7 - resolve: 1.22.8 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.49.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.29.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0): dependencies: array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 @@ -5761,7 +6098,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.53.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -5770,20 +6107,47 @@ snapshots: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.49.0(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.53.0)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0): + dependencies: + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.8.0(eslint@8.53.0)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.8.0(eslint@8.53.0)(typescript@4.9.5) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5): dependencies: '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.53.0)(typescript@4.9.5) eslint: 8.53.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.49.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.53.0)(typescript@4.9.5))(eslint@8.53.0)(typescript@4.9.5) transitivePeerDependencies: - supports-color - typescript @@ -5820,44 +6184,27 @@ snapshots: dependencies: eslint: 8.53.0 - eslint-plugin-react@7.32.1(eslint@8.53.0): + eslint-plugin-react@7.34.1(eslint@8.53.0): dependencies: array-includes: 3.1.7 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.1 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 + es-iterator-helpers: 1.0.19 eslint: 8.53.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 - object.entries: 1.1.6 + object.entries: 1.1.8 object.fromentries: 2.0.7 - object.hasown: 1.1.2 + object.hasown: 1.1.4 object.values: 1.1.7 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.8 - - eslint-plugin-react@7.33.2(eslint@8.53.0): - dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - array.prototype.tosorted: 1.1.1 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.53.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.1 - string.prototype.matchall: 4.0.8 + string.prototype.matchall: 4.0.11 eslint-plugin-ssr-friendly@1.2.0(eslint@8.53.0): dependencies: @@ -6053,6 +6400,14 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.0 + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.0 + get-stream@6.0.1: {} get-symbol-description@1.0.0: @@ -6060,6 +6415,12 @@ snapshots: call-bind: 1.0.5 get-intrinsic: 1.2.2 + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + get-tsconfig@4.3.0: {} glob-parent@5.1.2: @@ -6157,14 +6518,24 @@ snapshots: dependencies: get-intrinsic: 1.2.2 + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + has-proto@1.0.1: {} + has-proto@1.0.3: {} + has-symbols@1.0.3: {} has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + has@1.0.3: dependencies: function-bind: 1.1.2 @@ -6173,6 +6544,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 @@ -6219,6 +6594,12 @@ snapshots: hasown: 2.0.0 side-channel: 1.0.4 + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.0 + side-channel: 1.0.4 + is-arguments@1.1.1: dependencies: call-bind: 1.0.5 @@ -6230,6 +6611,11 @@ snapshots: get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + is-arrayish@0.2.1: {} is-async-function@2.0.0: @@ -6259,6 +6645,10 @@ snapshots: dependencies: hasown: 2.0.0 + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 @@ -6269,7 +6659,7 @@ snapshots: is-finalizationregistry@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-fullwidth-code-point@3.0.0: {} @@ -6287,6 +6677,8 @@ snapshots: is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 @@ -6310,6 +6702,10 @@ snapshots: dependencies: call-bind: 1.0.5 + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + is-stream@3.0.0: {} is-string@1.0.7: @@ -6324,6 +6720,10 @@ snapshots: dependencies: which-typed-array: 1.1.13 + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + is-weakmap@2.0.1: {} is-weakref@1.0.2: @@ -6346,7 +6746,7 @@ snapshots: iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.4 set-function-name: 2.0.1 @@ -6525,6 +6925,10 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@9.0.4: + dependencies: + brace-expansion: 2.0.1 + minimist-options@4.1.0: dependencies: arrify: 1.0.1 @@ -6630,17 +7034,24 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + object.entries@1.1.6: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - object.fromentries@2.0.6: + object.entries@1.1.8: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-object-atoms: 1.0.0 object.fromentries@2.0.7: dependencies: @@ -6655,16 +7066,11 @@ snapshots: es-abstract: 1.22.3 get-intrinsic: 1.2.2 - object.hasown@1.1.2: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.22.3 - - object.values@1.1.6: + object.hasown@1.1.4: dependencies: - call-bind: 1.0.5 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 object.values@1.1.7: dependencies: @@ -6757,6 +7163,8 @@ snapshots: pify@3.0.0: {} + possible-typed-array-names@1.0.0: {} + postcss-attribute-case-insensitive@6.0.3(postcss@8.4.31): dependencies: postcss: 8.4.31 @@ -7079,10 +7487,10 @@ snapshots: reflect.getprototypeof@1.0.4: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 @@ -7104,6 +7512,13 @@ snapshots: define-properties: 1.2.1 set-function-name: 2.0.1 + regexp.prototype.flags@1.5.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 @@ -7135,7 +7550,7 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.4: + resolve@2.0.0-next.5: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 @@ -7169,12 +7584,25 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + safe-regex-test@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-regex: 1.1.4 + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 @@ -7187,6 +7615,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.2: {} + set-function-length@1.1.1: dependencies: define-data-property: 1.1.1 @@ -7194,12 +7624,28 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.0 + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + set-function-name@2.0.1: dependencies: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.0 + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -7220,6 +7666,13 @@ snapshots: get-intrinsic: 1.2.2 object-inspect: 1.13.1 + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -7289,16 +7742,20 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.0.1 - string.prototype.matchall@4.0.8: + string.prototype.matchall@4.0.11: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 - side-channel: 1.0.4 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 string.prototype.padend@3.1.5: dependencies: @@ -7312,18 +7769,37 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.3 + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -7475,7 +7951,11 @@ snapshots: trim-newlines@4.1.1: {} - tsconfig-paths@3.14.2: + ts-api-utils@1.3.0(typescript@4.9.5): + dependencies: + typescript: 4.9.5 + + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -7512,6 +7992,12 @@ snapshots: get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.5 @@ -7519,6 +8005,14 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 @@ -7527,12 +8021,30 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-length@1.0.4: dependencies: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.12 + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + typescript@4.9.5: {} typescript@5.1.6: {} @@ -7644,6 +8156,14 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.0 + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + which@1.3.1: dependencies: isexe: 2.0.0 diff --git a/src/components/Counter/Counter.module.css b/src/components/Counter/Counter.module.css index b9bc15f..3e16459 100644 --- a/src/components/Counter/Counter.module.css +++ b/src/components/Counter/Counter.module.css @@ -1,32 +1,32 @@ .counter { - border: 1px solid lightgray; - margin: 36px 24px; - padding: 24px; - text-align: center; - width: 240px; + border: 1px solid lightgray; + margin: 36px 24px; + padding: 24px; + text-align: center; + width: 240px; } .header { - font-size: 24px; - font-weight: normal; - margin: 0 0 12px; + font-size: 24px; + font-weight: normal; + margin: 0 0 12px; } .button { - background: lightseagreen; - border: none; - border-radius: 5px; - color: white; - cursor: pointer; - display: block; - font-size: 16px; - margin: 0 auto 24px; - padding: 12px 24px; - text-shadow: 1px 1px 1px rgb(0 0 0 / 50%); + background: lightseagreen; + border: none; + border-radius: 5px; + color: white; + cursor: pointer; + display: block; + font-size: 16px; + margin: 0 auto 24px; + padding: 12px 24px; + text-shadow: 1px 1px 1px rgb(0 0 0 / 50%); } .button:active { - left: 1px; - position: relative; - top: 1px; + left: 1px; + position: relative; + top: 1px; } diff --git a/src/components/Counter/Counter.spec.js b/src/components/Counter/Counter.spec.js index d562b1a..b954db9 100644 --- a/src/components/Counter/Counter.spec.js +++ b/src/components/Counter/Counter.spec.js @@ -1,8 +1,8 @@ import React from 'react'; -import { Provider } from 'react-redux'; -import { render, fireEvent } from '@testing-library/react'; +import {Provider} from 'react-redux'; +import {render, fireEvent} from '@testing-library/react'; import configureStore from 'redux-mock-store'; -import { INCREMENT_COUNTER } from 'features/counter/actionTypes'; +import {INCREMENT_COUNTER} from 'features/counter/actionTypes'; import Counter from './Counter'; @@ -11,8 +11,8 @@ describe('components > Counter', () => { const mockStore = configureStore([]); const store = mockStore({ count: { - value: 6 - } + value: 6, + }, }); /** @@ -43,8 +43,8 @@ describe('components > Counter', () => { * `wrapper` * @see https://testing-library.com/docs/react-testing-library/api#wrapper */ - const { asFragment, getByText } = render(, { - wrapper: ({ children }) => {children} + const {asFragment, getByText} = render(, { + wrapper: ({children}) => {children}, }); /** @@ -62,8 +62,8 @@ describe('components > Counter', () => { * `getByRole`: * @see https://testing-library.com/docs/dom-testing-library/api-queries#byrole */ - const { getByRole } = render(, { - wrapper: ({ children }) => {children} + const {getByRole} = render(, { + wrapper: ({children}) => {children}, }); /** @@ -78,7 +78,7 @@ describe('components > Counter', () => { /** Check if store.dispatch was run with correct action */ expect(store.dispatch).toHaveBeenCalledWith({ type: INCREMENT_COUNTER, - value: 7 + value: 7, }); }); }); diff --git a/src/components/Counter/Counter.tsx b/src/components/Counter/Counter.tsx index 13b56a8..95de98c 100644 --- a/src/components/Counter/Counter.tsx +++ b/src/components/Counter/Counter.tsx @@ -1,7 +1,7 @@ -import type { FC } from 'react'; +import type {FC} from 'react'; import React from 'react'; -import { useCountValue, useIncrementCounter } from '@/features/counter'; +import {useCountValue, useIncrementCounter} from '@/features/counter'; import classes from './Counter.module.css'; diff --git a/src/components/Counter/index.ts b/src/components/Counter/index.ts index 8ea29b5..b0723d6 100644 --- a/src/components/Counter/index.ts +++ b/src/components/Counter/index.ts @@ -1 +1 @@ -export { default } from './Counter'; +export {default} from './Counter'; diff --git a/src/components/Random/Random.module.css b/src/components/Random/Random.module.css index afaa1ae..d19a8a2 100644 --- a/src/components/Random/Random.module.css +++ b/src/components/Random/Random.module.css @@ -1,37 +1,37 @@ .counter { - border: 1px solid lightgray; - margin: 36px 24px; - padding: 24px; - width: 240px; + border: 1px solid lightgray; + margin: 36px 24px; + padding: 24px; + width: 240px; } .header { - font-size: 24px; - font-weight: normal; - margin: 0 0 12px; - text-align: center; + font-size: 24px; + font-weight: normal; + margin: 0 0 12px; + text-align: center; } .button { - background: lightseagreen; - border: none; - border-radius: 5px; - color: white; - cursor: pointer; - display: block; - font-size: 16px; - margin: 0 auto 24px; - padding: 12px 24px; - text-shadow: 1px 1px 1px rgb(0 0 0 / 50%); + background: lightseagreen; + border: none; + border-radius: 5px; + color: white; + cursor: pointer; + display: block; + font-size: 16px; + margin: 0 auto 24px; + padding: 12px 24px; + text-shadow: 1px 1px 1px rgb(0 0 0 / 50%); } .button:disabled { - background: lightgray; - cursor: not-allowed; + background: lightgray; + cursor: not-allowed; } .button:active:not(:disabled) { - left: 1px; - position: relative; - top: 1px; + left: 1px; + position: relative; + top: 1px; } diff --git a/src/components/Random/Random.spec.js b/src/components/Random/Random.spec.js index 47e0672..dc38034 100644 --- a/src/components/Random/Random.spec.js +++ b/src/components/Random/Random.spec.js @@ -1,12 +1,12 @@ import React from 'react'; -import { Provider } from 'react-redux'; -import { render, fireEvent, waitFor, screen, waitForElementToBeRemoved } from '@testing-library/react'; +import {Provider} from 'react-redux'; +import {render, fireEvent, waitFor, screen, waitForElementToBeRemoved} from '@testing-library/react'; import axios from 'axios'; import configureStore from 'redux-mock-store'; -import { GET_RANDOM_NUMBER } from 'features/random/actionTypes'; -import { store as realStore } from 'withReduxFeatures'; +import {GET_RANDOM_NUMBER} from 'features/random/actionTypes'; +import {store as realStore} from 'withReduxFeatures'; -import { promiseResolverMiddleware } from '../../middlewares/promiseResolverMiddleware'; +import {promiseResolverMiddleware} from '../../middlewares/promiseResolverMiddleware'; import Random from './Random'; /** @@ -34,15 +34,15 @@ describe('components > Random', () => { ${true} | ${false} | ${false} ${false} | ${true} | ${false} ${false} | ${false} | ${true} - `('renders different store states', ({ isLoading, hasError, isFulfilled }) => { + `('renders different store states', ({isLoading, hasError, isFulfilled}) => { it(`when isLoading === ${isLoading} && hasError === ${hasError} && isFulfilled === ${isFulfilled}`, () => { const store = mockStore({ random: { isLoading, hasError, isFulfilled, - number: isFulfilled ? 1 : undefined - } + number: isFulfilled ? 1 : undefined, + }, }); /** @@ -51,8 +51,8 @@ describe('components > Random', () => { * `wrapper`: * @see https://testing-library.com/docs/react-testing-library/api#wrapper */ - const { asFragment } = render(, { - wrapper: ({ children }) => {children} + const {asFragment} = render(, { + wrapper: ({children}) => {children}, }); /** @@ -68,17 +68,17 @@ describe('components > Random', () => { * Mock axios successful response * @see https://www.robinwieruch.de/axios-jest */ - axios.get.mockImplementationOnce(() => Promise.resolve({ data: response })); + axios.get.mockImplementationOnce(() => Promise.resolve({data: response})); /** * `getByRole`: * @see https://testing-library.com/docs/dom-testing-library/api-queries#byrole */ - const { asFragment, getByRole } = render(, { - wrapper: ({ children }) => ( + const {asFragment, getByRole} = render(, { + wrapper: ({children}) => ( /* We use real store here, to get action through */ {children} - ) + ), }); /** @@ -111,11 +111,11 @@ describe('components > Random', () => { * `getByRole`: * @see https://testing-library.com/docs/dom-testing-library/api-queries#byrole */ - const { asFragment, getByRole } = render(, { - wrapper: ({ children }) => ( + const {asFragment, getByRole} = render(, { + wrapper: ({children}) => ( /* We use real store here, to get action through */ {children} - ) + ), }); /** @@ -142,22 +142,22 @@ describe('components > Random', () => { random: { isLoading: false, hasError: false, - isFulfilled: false - } + isFulfilled: false, + }, }); /** * Mock axios successful response * @see https://www.robinwieruch.de/axios-jest */ - axios.get.mockImplementationOnce(() => Promise.resolve({ data: response })); + axios.get.mockImplementationOnce(() => Promise.resolve({data: response})); /** * `getByRole`: * @see https://testing-library.com/docs/dom-testing-library/api-queries#byrole */ - const { getByRole } = render(, { - wrapper: ({ children }) => {children} + const {getByRole} = render(, { + wrapper: ({children}) => {children}, }); /** @@ -168,7 +168,7 @@ describe('components > Random', () => { /** First dispatched action should have _PENDING suffix */ expect(store.getActions()[0]).toEqual({ - type: `${GET_RANDOM_NUMBER}_PENDING` + type: `${GET_RANDOM_NUMBER}_PENDING`, }); await waitFor(() => { @@ -185,8 +185,8 @@ describe('components > Random', () => { random: { isLoading: false, hasError: false, - isFulfilled: false - } + isFulfilled: false, + }, }); /** @@ -199,8 +199,8 @@ describe('components > Random', () => { * `getByRole`: * @see https://testing-library.com/docs/dom-testing-library/api-queries#byrole */ - const { getByRole } = render(, { - wrapper: ({ children }) => {children} + const {getByRole} = render(, { + wrapper: ({children}) => {children}, }); /** @@ -211,7 +211,7 @@ describe('components > Random', () => { /** First dispatched action should have _PENDING suffix */ expect(store.getActions()[0]).toEqual({ - type: `${GET_RANDOM_NUMBER}_PENDING` + type: `${GET_RANDOM_NUMBER}_PENDING`, }); await waitFor(() => { diff --git a/src/components/Random/Random.tsx b/src/components/Random/Random.tsx index e90dd64..27e7b72 100644 --- a/src/components/Random/Random.tsx +++ b/src/components/Random/Random.tsx @@ -1,12 +1,12 @@ import React from 'react'; -import { useGetRandomNumberQuery, useRandomNumber, useLoadingState } from '@/features/random'; +import {useGetRandomNumberQuery, useRandomNumber, useLoadingState} from '@/features/random'; import classes from './Random.module.css'; const Random = () => { /** Loading state of random.org request from Redux store */ - const { isLoading, hasError, isFulfilled } = useLoadingState(); + const {isLoading, hasError, isFulfilled} = useLoadingState(); /** Random number value */ const number = useRandomNumber(); diff --git a/src/components/Random/index.ts b/src/components/Random/index.ts index b090e4a..1cb871b 100644 --- a/src/components/Random/index.ts +++ b/src/components/Random/index.ts @@ -1 +1 @@ -export { default } from './Random'; +export {default} from './Random'; diff --git a/src/features/counter/CounterReducer.spec.js b/src/features/counter/CounterReducer.spec.js index ba11765..95477d7 100644 --- a/src/features/counter/CounterReducer.spec.js +++ b/src/features/counter/CounterReducer.spec.js @@ -1,4 +1,4 @@ -import { INCREMENT_COUNTER } from './actionTypes'; +import {INCREMENT_COUNTER} from './actionTypes'; import CounterReducer from './CounterReducer'; describe('features > counter > CounterReducer', () => { @@ -8,11 +8,11 @@ describe('features > counter > CounterReducer', () => { */ it('returns initial state, if non matched action is dispatched', () => { const initialState = { - value: 0 + value: 0, }; const action = { - type: 'FOO' + type: 'FOO', }; expect(CounterReducer(initialState, action)).toBe(initialState); @@ -20,17 +20,17 @@ describe('features > counter > CounterReducer', () => { it(`returns state with incremented value, if ${INCREMENT_COUNTER} action is dispatched`, () => { const initialState = { - value: 0 + value: 0, }; /** State we expect after action dispatched */ const expectedState = { - value: 1 + value: 1, }; const action = { type: INCREMENT_COUNTER, - value: expectedState.value + value: expectedState.value, }; /** * Use `toEqual` matcher instead of `toBe`, diff --git a/src/features/counter/CounterReducer.ts b/src/features/counter/CounterReducer.ts index cacec67..be3bc47 100644 --- a/src/features/counter/CounterReducer.ts +++ b/src/features/counter/CounterReducer.ts @@ -1,11 +1,11 @@ -import { Actions } from './actionTypes'; +import {Actions} from './actionTypes'; export type State = { value: number; }; export const initialState = { - value: 0 + value: 0, } as State; export type Action = { @@ -16,7 +16,7 @@ export type Action = { const reducer = (state = initialState, action: Action): State => { switch (action.type) { case Actions.INCREMENT_COUNTER: { - return { ...state, value: action.value }; + return {...state, value: action.value}; } default: diff --git a/src/features/counter/actionTypes.ts b/src/features/counter/actionTypes.ts index 85be9d3..cd9a7a4 100644 --- a/src/features/counter/actionTypes.ts +++ b/src/features/counter/actionTypes.ts @@ -1,3 +1,3 @@ export enum Actions { - INCREMENT_COUNTER = 'INCREMENT_COUNTER' + INCREMENT_COUNTER = 'INCREMENT_COUNTER', } diff --git a/src/features/counter/index.ts b/src/features/counter/index.ts index e6404f4..fb45f28 100644 --- a/src/features/counter/index.ts +++ b/src/features/counter/index.ts @@ -1,3 +1,3 @@ -export { default as CounterReducer, initialState as CounterInitialState } from './CounterReducer'; -export { default as useCountValue } from './selectors'; -export { default as useIncrementCounter } from './useIncrementCounter'; +export {default as CounterReducer, initialState as CounterInitialState} from './CounterReducer'; +export {default as useCountValue} from './selectors'; +export {default as useIncrementCounter} from './useIncrementCounter'; diff --git a/src/features/counter/selectors.spec.js b/src/features/counter/selectors.spec.js index 50d151e..f28deb0 100644 --- a/src/features/counter/selectors.spec.js +++ b/src/features/counter/selectors.spec.js @@ -1,7 +1,7 @@ import React from 'react'; -import { Provider } from 'react-redux'; +import {Provider} from 'react-redux'; import configureStore from 'redux-mock-store'; -import { renderHook } from '@testing-library/react-hooks'; +import {renderHook} from '@testing-library/react-hooks'; import useCountValue from './selectors'; @@ -11,8 +11,8 @@ describe('features > counter > useCountValue', () => { const value = 6; const store = mockStore({ count: { - value - } + value, + }, }); it('returns count value', () => { @@ -20,8 +20,8 @@ describe('features > counter > useCountValue', () => { * Render hook, using testing-library utility * @see https://react-hooks-testing-library.com/reference/api#renderhook */ - const { result } = renderHook(() => useCountValue(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useCountValue(), { + wrapper: ({children}) => {children}, }); expect(result.current).toBe(value); diff --git a/src/features/counter/selectors.ts b/src/features/counter/selectors.ts index e4e03e0..77b8f68 100644 --- a/src/features/counter/selectors.ts +++ b/src/features/counter/selectors.ts @@ -1,13 +1,13 @@ -import { useSelector } from 'react-redux'; +import {useSelector} from 'react-redux'; -import type { State } from './CounterReducer'; +import type {State} from './CounterReducer'; /** * Custom React Hook to get count value from state. * @see https://reactjs.org/docs/hooks-custom.html */ const useCountValue = () => { - return useSelector<{ counter: State }, number>(state => state.counter.value); + return useSelector<{counter: State}, number>(state => state.counter.value); }; export default useCountValue; diff --git a/src/features/counter/useIncrementCounter.spec.js b/src/features/counter/useIncrementCounter.spec.js index 24368b1..a2f681d 100644 --- a/src/features/counter/useIncrementCounter.spec.js +++ b/src/features/counter/useIncrementCounter.spec.js @@ -1,9 +1,9 @@ import React from 'react'; -import { Provider } from 'react-redux'; +import {Provider} from 'react-redux'; import configureStore from 'redux-mock-store'; -import { renderHook } from '@testing-library/react-hooks'; +import {renderHook} from '@testing-library/react-hooks'; -import { INCREMENT_COUNTER } from './actionTypes'; +import {INCREMENT_COUNTER} from './actionTypes'; import useIncrementCounter from './useIncrementCounter'; describe('features > counter > useIncrementCounter', () => { @@ -12,8 +12,8 @@ describe('features > counter > useIncrementCounter', () => { const value = 6; const store = mockStore({ count: { - value - } + value, + }, }); /** @@ -40,8 +40,8 @@ describe('features > counter > useIncrementCounter', () => { * Render hook, using testing-library utility * @see https://react-hooks-testing-library.com/reference/api#renderhook */ - const { result } = renderHook(() => useIncrementCounter(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useIncrementCounter(), { + wrapper: ({children}) => {children}, }); expect(result.current).toBeInstanceOf(Function); @@ -49,8 +49,8 @@ describe('features > counter > useIncrementCounter', () => { describe('incrementCounter', () => { it('increments counter value by 1', () => { - const { result } = renderHook(() => useIncrementCounter(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useIncrementCounter(), { + wrapper: ({children}) => {children}, }); result.current(); @@ -61,7 +61,7 @@ describe('features > counter > useIncrementCounter', () => { /** store.dispatch should be run with proper action */ expect(store.dispatch).toHaveBeenCalledWith({ type: INCREMENT_COUNTER, - value: value + 1 // value should be increased by one + value: value + 1, // value should be increased by one }); }); }); diff --git a/src/features/counter/useIncrementCounter.ts b/src/features/counter/useIncrementCounter.ts index eaf6f3b..1dd8fa2 100644 --- a/src/features/counter/useIncrementCounter.ts +++ b/src/features/counter/useIncrementCounter.ts @@ -1,8 +1,8 @@ -import { useCallback } from 'react'; -import { useDispatch } from 'react-redux'; +import {useCallback} from 'react'; +import {useDispatch} from 'react-redux'; import useCountValue from './selectors'; -import { Actions } from './actionTypes'; +import {Actions} from './actionTypes'; const useIncrementCounter = () => { const dispatch = useDispatch(); @@ -10,7 +10,7 @@ const useIncrementCounter = () => { return useCallback(() => { dispatch({ type: Actions.INCREMENT_COUNTER, - value: count + 1 + value: count + 1, }); }, [count, dispatch]); }; diff --git a/src/features/random/RandomReducer.spec.js b/src/features/random/RandomReducer.spec.js index 5cdc57a..e485dae 100644 --- a/src/features/random/RandomReducer.spec.js +++ b/src/features/random/RandomReducer.spec.js @@ -1,4 +1,4 @@ -import { GET_RANDOM_NUMBER } from './actionTypes'; +import {GET_RANDOM_NUMBER} from './actionTypes'; import RandomReducer from './RandomReducer'; describe('features > random > RandomReducer', () => { @@ -6,11 +6,11 @@ describe('features > random > RandomReducer', () => { const initialState = { isLoading: false, hasError: false, - isFulfilled: false + isFulfilled: false, }; const action = { - type: 'FOO' + type: 'FOO', }; expect(RandomReducer(initialState, action)).toBe(initialState); @@ -24,19 +24,19 @@ describe('features > random > RandomReducer', () => { `updates state according to dispatched action`, actionType => { const initialState = { - value: 0 + value: 0, }; const payload = actionType === `${GET_RANDOM_NUMBER}_FULFILLED` ? { - data: 1 + data: 1, } : undefined; const action = { type: actionType, - payload + payload, }; expect(RandomReducer(initialState, action)).toMatchSnapshot(); diff --git a/src/features/random/RandomReducer.ts b/src/features/random/RandomReducer.ts index ff05fe5..c8f8992 100644 --- a/src/features/random/RandomReducer.ts +++ b/src/features/random/RandomReducer.ts @@ -1,4 +1,4 @@ -import { Actions } from './actionTypes'; +import {Actions} from './actionTypes'; export type State = { number?: number; @@ -11,12 +11,12 @@ const initialState = { number: undefined, isLoading: false, hasError: false, - isFulfilled: false + isFulfilled: false, } as State; export type Action = { type: keyof typeof Actions; - payload: { data: number }; + payload: {data: number}; }; const reducer = (state = initialState, action: Action): State => { @@ -27,7 +27,7 @@ const reducer = (state = initialState, action: Action): State => { isFulfilled: false, isLoading: true, hasError: false, - number: undefined + number: undefined, }; case `${Actions.GET_RANDOM_NUMBER}_FULFILLED`: @@ -35,7 +35,7 @@ const reducer = (state = initialState, action: Action): State => { isFulfilled: true, isLoading: false, hasError: false, - number: action.payload.data + number: action.payload.data, }; case `${Actions.GET_RANDOM_NUMBER}_REJECTED`: @@ -43,7 +43,7 @@ const reducer = (state = initialState, action: Action): State => { isFulfilled: false, isLoading: false, hasError: true, - number: undefined + number: undefined, }; default: diff --git a/src/features/random/actionTypes.ts b/src/features/random/actionTypes.ts index 9a90d4e..608055c 100644 --- a/src/features/random/actionTypes.ts +++ b/src/features/random/actionTypes.ts @@ -1,5 +1,5 @@ export const GET_RANDOM_NUMBER = 'GET_RANDOM_NUMBER'; export enum Actions { - GET_RANDOM_NUMBER = 'GET_RANDOM_NUMBER' + GET_RANDOM_NUMBER = 'GET_RANDOM_NUMBER', } diff --git a/src/features/random/index.ts b/src/features/random/index.ts index 65fd48d..47f34f0 100644 --- a/src/features/random/index.ts +++ b/src/features/random/index.ts @@ -1,3 +1,3 @@ -export { default as RandomReducer } from './RandomReducer'; -export { useRandomNumber, useLoadingState } from './selectors'; -export { default as useGetRandomNumberQuery } from './useGetRandomNumberQuery'; +export {default as RandomReducer} from './RandomReducer'; +export {useRandomNumber, useLoadingState} from './selectors'; +export {default as useGetRandomNumberQuery} from './useGetRandomNumberQuery'; diff --git a/src/features/random/selectors.spec.js b/src/features/random/selectors.spec.js index f0c34db..62d0ac4 100644 --- a/src/features/random/selectors.spec.js +++ b/src/features/random/selectors.spec.js @@ -1,17 +1,17 @@ import React from 'react'; -import { Provider } from 'react-redux'; +import {Provider} from 'react-redux'; import configureStore from 'redux-mock-store'; -import { renderHook } from '@testing-library/react-hooks'; +import {renderHook} from '@testing-library/react-hooks'; -import { useRandomNumber, useLoadingState } from './selectors'; +import {useRandomNumber, useLoadingState} from './selectors'; describe('features > counter > useRandomNumber', () => { const mockStore = configureStore([]); const state = { random: { - number: 42 - } + number: 42, + }, }; const store = mockStore(state); @@ -21,8 +21,8 @@ describe('features > counter > useRandomNumber', () => { * Render hook, using testing-library utility * @see https://react-hooks-testing-library.com/reference/api#renderhook */ - const { result } = renderHook(() => useRandomNumber(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useRandomNumber(), { + wrapper: ({children}) => {children}, }); expect(result.current).toBe(state.random.number); @@ -37,8 +37,8 @@ describe('features > counter > useLoadingState', () => { isLoading: true, hasError: true, isFulfilled: true, - foo: 'bar' - } + foo: 'bar', + }, }; const store = mockStore(state); @@ -48,8 +48,8 @@ describe('features > counter > useLoadingState', () => { * Render hook, using testing-library utility * @see https://react-hooks-testing-library.com/reference/api#renderhook */ - const { result } = renderHook(() => useLoadingState(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useLoadingState(), { + wrapper: ({children}) => {children}, }); /* We expect hook to return certain values from the state, but not all state */ diff --git a/src/features/random/selectors.ts b/src/features/random/selectors.ts index 1fa9515..e1903b7 100644 --- a/src/features/random/selectors.ts +++ b/src/features/random/selectors.ts @@ -1,6 +1,6 @@ -import { useSelector } from 'react-redux'; +import {useSelector} from 'react-redux'; -import type { State } from './RandomReducer'; +import type {State} from './RandomReducer'; /** * Custom React Hooks to get random.org API loading state and response from the state. @@ -8,8 +8,8 @@ import type { State } from './RandomReducer'; * @see https://reactjs.org/docs/hooks-custom.html */ export const useLoadingState = () => { - const { isLoading, hasError, isFulfilled } = useSelector<{ random: State }, State>(state => state.random); - return { isLoading, hasError, isFulfilled }; + const {isLoading, hasError, isFulfilled} = useSelector<{random: State}, State>(state => state.random); + return {isLoading, hasError, isFulfilled}; }; -export const useRandomNumber = () => useSelector<{ random: State }, number | undefined>(state => state.random.number); +export const useRandomNumber = () => useSelector<{random: State}, number | undefined>(state => state.random.number); diff --git a/src/features/random/useGetRandomNumberQuery.spec.js b/src/features/random/useGetRandomNumberQuery.spec.js index ed6f164..d176849 100644 --- a/src/features/random/useGetRandomNumberQuery.spec.js +++ b/src/features/random/useGetRandomNumberQuery.spec.js @@ -1,12 +1,12 @@ import React from 'react'; -import { Provider } from 'react-redux'; +import {Provider} from 'react-redux'; import axios from 'axios'; import configureStore from 'redux-mock-store'; -import { waitFor } from '@testing-library/react'; -import { renderHook } from '@testing-library/react-hooks'; +import {waitFor} from '@testing-library/react'; +import {renderHook} from '@testing-library/react-hooks'; -import { promiseResolverMiddleware } from '../../middlewares/promiseResolverMiddleware'; -import { GET_RANDOM_NUMBER } from './actionTypes'; +import {promiseResolverMiddleware} from '../../middlewares/promiseResolverMiddleware'; +import {GET_RANDOM_NUMBER} from './actionTypes'; import useGetRandomNumberQuery from './useGetRandomNumberQuery'; jest.mock('axios'); @@ -19,8 +19,8 @@ describe('features > counter > useGetRandomNumberQuery', () => { random: { isLoading: false, hasError: false, - isFulfilled: false - } + isFulfilled: false, + }, }); it('returns function', () => { @@ -28,8 +28,8 @@ describe('features > counter > useGetRandomNumberQuery', () => { * Render hook, using testing-library utility * @see https://react-hooks-testing-library.com/reference/api#renderhook */ - const { result } = renderHook(() => useGetRandomNumberQuery(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useGetRandomNumberQuery(), { + wrapper: ({children}) => {children}, }); expect(result.current).toBeInstanceOf(Function); @@ -42,8 +42,8 @@ describe('features > counter > useGetRandomNumberQuery', () => { /** Note that tests functions are async */ it(`handles successful API query`, async () => { - const { result } = renderHook(() => useGetRandomNumberQuery(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useGetRandomNumberQuery(), { + wrapper: ({children}) => {children}, }); /** Mock response from API */ @@ -53,7 +53,7 @@ describe('features > counter > useGetRandomNumberQuery', () => { * Mock axios successful response * @see https://www.robinwieruch.de/axios-jest */ - axios.get.mockImplementationOnce(() => Promise.resolve({ data: response })); + axios.get.mockImplementationOnce(() => Promise.resolve({data: response})); /** * Wait until async action finishes @@ -62,7 +62,7 @@ describe('features > counter > useGetRandomNumberQuery', () => { /** First dispatched action should have _PENDING suffix */ expect(store.getActions()[0]).toEqual({ - type: `${GET_RANDOM_NUMBER}_PENDING` + type: `${GET_RANDOM_NUMBER}_PENDING`, }); await waitFor(() => { @@ -74,8 +74,8 @@ describe('features > counter > useGetRandomNumberQuery', () => { }); it(`handles rejected API query`, async () => { - const { result } = renderHook(() => useGetRandomNumberQuery(), { - wrapper: ({ children }) => {children} + const {result} = renderHook(() => useGetRandomNumberQuery(), { + wrapper: ({children}) => {children}, }); /** @@ -91,7 +91,7 @@ describe('features > counter > useGetRandomNumberQuery', () => { /** First dispatched action should have _PENDING suffix */ expect(store.getActions()[0]).toEqual({ - type: `${GET_RANDOM_NUMBER}_PENDING` + type: `${GET_RANDOM_NUMBER}_PENDING`, }); await waitFor(() => { diff --git a/src/features/random/useGetRandomNumberQuery.ts b/src/features/random/useGetRandomNumberQuery.ts index 409ebd2..f56e4b3 100644 --- a/src/features/random/useGetRandomNumberQuery.ts +++ b/src/features/random/useGetRandomNumberQuery.ts @@ -1,8 +1,8 @@ -import { useCallback } from 'react'; -import { useDispatch } from 'react-redux'; +import {useCallback} from 'react'; +import {useDispatch} from 'react-redux'; import axios from 'axios'; -import { Actions } from './actionTypes'; +import {Actions} from './actionTypes'; const useGetRandomNumberQuery = () => { const dispatch = useDispatch(); @@ -12,7 +12,7 @@ const useGetRandomNumberQuery = () => { type: Actions.GET_RANDOM_NUMBER, payload: axios.get( 'https://www.random.org/integers/?num=1&min=1&max=99&col=1&base=10&format=plain&rnd=new' - ) + ), }), [dispatch] ); diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 0d3496e..d3e7aaf 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,11 +1,11 @@ -import type { AppProps } from 'next/app'; +import type {AppProps} from 'next/app'; // import 'the-new-css-reset/css/reset.css'; -import { ReduxProvider } from '@/state'; +import {ReduxProvider} from '@/state'; import './index.css'; -export default function App({ Component, pageProps }: AppProps) { +export default function App({Component, pageProps}: AppProps) { return ( diff --git a/src/state/ReduxProvider.tsx b/src/state/ReduxProvider.tsx index 31faed6..3825aa5 100644 --- a/src/state/ReduxProvider.tsx +++ b/src/state/ReduxProvider.tsx @@ -1,17 +1,17 @@ 'use client'; -import { combineReducers, createStore, applyMiddleware, compose } from 'redux'; -import { Provider } from 'react-redux'; -import type { FC, ReactNode } from 'react'; +import {combineReducers, createStore, applyMiddleware, compose} from 'redux'; +import {Provider} from 'react-redux'; +import type {FC, ReactNode} from 'react'; -import { CounterReducer } from '@/features/counter'; -import { RandomReducer } from '@/features/random'; +import {CounterReducer} from '@/features/counter'; +import {RandomReducer} from '@/features/random'; -import { promiseResolverMiddleware } from './promiseResolverMiddleware'; +import {promiseResolverMiddleware} from './promiseResolverMiddleware'; const rootReducer = combineReducers({ counter: CounterReducer, - random: RandomReducer + random: RandomReducer, }); /** @@ -33,6 +33,6 @@ const composedEnhancers = composeEnhancers(middlewareEnhancer); export const store = createStore(rootReducer, undefined, composedEnhancers); -export const ReduxProvider: FC<{ children?: ReactNode }> = ({ children }) => { +export const ReduxProvider: FC<{children?: ReactNode}> = ({children}) => { return {children}; }; diff --git a/src/state/index.ts b/src/state/index.ts index 5dbcf1a..1418f63 100644 --- a/src/state/index.ts +++ b/src/state/index.ts @@ -1 +1 @@ -export { ReduxProvider } from './ReduxProvider'; +export {ReduxProvider} from './ReduxProvider'; diff --git a/src/state/promiseResolverMiddleware.ts b/src/state/promiseResolverMiddleware.ts index 63b5fd3..4fb727d 100644 --- a/src/state/promiseResolverMiddleware.ts +++ b/src/state/promiseResolverMiddleware.ts @@ -1,6 +1,6 @@ -import type { Action, Middleware } from 'redux'; +import type {Action, Middleware} from 'redux'; -type ActionAsync = Action & { payload?: Promise }; +type ActionAsync = Action & {payload?: Promise}; type PromiseDispatch = (promise: Promise) => Promise; @@ -12,14 +12,14 @@ export const promiseResolverMiddleware: Middleware = store => n response => { store.dispatch({ type: `${action.type}_FULFILLED`, - payload: response + payload: response, }); }, () => { store.dispatch({ - type: `${action.type}_REJECTED` + type: `${action.type}_REJECTED`, }); } ); - return next({ type: `${action.type}_PENDING` }); + return next({type: `${action.type}_PENDING`}); }; diff --git a/tsconfig.json b/tsconfig.json index 032aff9..61ff3b0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,6 +19,18 @@ "@/*": ["./src/*"] } }, - "include": ["next-env.d.ts", "additional.d.ts", "**/*.ts", "**/*.tsx"], + "include": [ + "next-env.d.ts", + "additional.d.ts", + "**/*.ts", + "**/*.tsx", + "**/*.stories.tsx", + "**/*.stories.ts", + "*.config.ts", + "src", + ".eslintrc.cjs", + "templates/**/*.ts", + "templates/**/*.tsx" + ], "exclude": ["node_modules"] }