From 8b35f44c27337232eca584432b66c4918c8dfde8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Zl=C3=A1mal?= Date: Mon, 11 Oct 2021 13:13:26 -0500 Subject: [PATCH] Eslint: upgrade to version 8.0.0 See: - https://eslint.org/blog/2021/10/eslint-v8.0.0-released - https://eslint.org/docs/user-guide/migrating-to-8.0.0 Known unresolved issues (with low impact )that we decided to accept: - https://github.com/mysticatea/eslint-plugin-node/issues/301 Known issues that need to be fixed first: - [x] wait for https://github.com/import-js/eslint-plugin-import/pull/2191 to be released and merged here - [x] wait for https://github.com/gajus/eslint-plugin-flowtype/pull/496 to be released and merged here - [x] wait for https://github.com/testing-library/eslint-plugin-testing-library/issues/462 to be released and merged here - [ ] ~wait for https://github.com/mysticatea/eslint-plugin-node/issues/294 to be released and merged here~ replaced (probably temporarily) with `eslint-plugin-n` which supports Eslint 8 - [x] wait for https://github.com/facebook/react/pull/22248 to be released and merged here - [x] release minor/patch version of Adeira Eslint Config before merging this breaking change - [x] switch `NEXT_VERSION_ERROR` to `ERROR` (https://github.com/adeira/universe/pull/3625) --- package.json | 3 +- src/eslint-config-adeira/CHANGELOG.md | 3 +- .../node/process-exit-as-throw.js | 5 + .../__snapshots__/index.test.js.snap | 4 +- .../__snapshots__/presets.test.js.snap | 4 +- src/eslint-config-adeira/package.json | 4 +- src/eslint-config-adeira/src/presets/base.js | 2 + .../src/presets/flowtype.js | 6 +- src/eslint-fixtures-tester/package.json | 4 +- src/eslint-plugin-adeira/package.json | 2 +- src/eslint-plugin-sx/package.json | 4 +- .../src/__tests__/SignedSource.test.js | 6 +- yarn.lock | 186 +++++++++--------- 13 files changed, 123 insertions(+), 110 deletions(-) diff --git a/package.json b/package.json index a29f8957aa..9ec48c4ecc 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "@babel/eslint-parser": "^7.16.5", "babel-jest": "^27.4.5", "babel-loader": "^8.2.3", - "eslint": "^7.32.0", + "eslint": "^8.5.0", + "eslint-formatter-codeframe": "^7.32.1", "flow-bin": "^0.168.0", "glob": "^7.2.0", "jest": "^27.4.5", diff --git a/src/eslint-config-adeira/CHANGELOG.md b/src/eslint-config-adeira/CHANGELOG.md index d66f970a93..6e7b42850b 100644 --- a/src/eslint-config-adeira/CHANGELOG.md +++ b/src/eslint-config-adeira/CHANGELOG.md @@ -2,7 +2,8 @@ **Breaking changes ahead!** -- New rules enabled: `fb-flow/use-indexed-access-type` ([more info](https://flow.org/en/docs/types/indexed-access/)) and `ft-flow/enforce-suppression-code` (warnings or errors in strict mode). +- Eslint version 8 is now required (visit https://eslint.org/blog/2021/10/eslint-v8.0.0-released and other related blog posts for more info). +- New rules enabled: `fb-flow/use-indexed-access-type` ([more info](https://flow.org/en/docs/types/indexed-access/)), `ft-flow/enforce-suppression-code` and `no-unused-private-class-members`. - Many rules that were showing warnings in normal mode but errors in strict mode were converted to normal errors (so there is no difference between normal and strict mode). The best way how to migrate is to temporarily switch to the strict mode and address all the errors before upgrading to this major version. - Switched from [`eslint-plugin-flowtype`](https://github.com/gajus/eslint-plugin-flowtype/tree/449cb99f1b6d3bbbb66f5be55f497667f5b2cb31) to [`eslint-plugin-ft-flow`](https://github.com/flow-typed/eslint-plugin-ft-flow/tree/820e631ce491cdf45821744d4e29f348cf776392) which contains the same set of rules but should be more up to date and maintained. We are going to enable additional rules later. There is a possible minor breaking change (with very simple fix) when suppressing the rules manually, for example: diff --git a/src/eslint-config-adeira/__tests__/__fixtures__/valid-eslint-examples/node/process-exit-as-throw.js b/src/eslint-config-adeira/__tests__/__fixtures__/valid-eslint-examples/node/process-exit-as-throw.js index 7729aeb338..ed607e1dc4 100644 --- a/src/eslint-config-adeira/__tests__/__fixtures__/valid-eslint-examples/node/process-exit-as-throw.js +++ b/src/eslint-config-adeira/__tests__/__fixtures__/valid-eslint-examples/node/process-exit-as-throw.js @@ -7,6 +7,11 @@ class Bar {} // Normally, Eslint would complain because of `consistent-return` error, however, // rule `node/process-exit-as-throw` makes sure this is not the case. // See: https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/process-exit-as-throw.md + +// TODO: the following `consistent-return` error is incorrect and should be removed once the following +// issue is resolved: https://github.com/mysticatea/eslint-plugin-node/issues/301. We decided to +// accept the low risk for now to ease migration to Eslint 8. +// eslint-disable-next-line consistent-return export function foo(a: boolean): ?Bar { if (a) { return new Bar(); diff --git a/src/eslint-config-adeira/__tests__/__snapshots__/index.test.js.snap b/src/eslint-config-adeira/__tests__/__snapshots__/index.test.js.snap index c840b0a2b8..f0f02e83bd 100644 --- a/src/eslint-config-adeira/__tests__/__snapshots__/index.test.js.snap +++ b/src/eslint-config-adeira/__tests__/__snapshots__/index.test.js.snap @@ -197,7 +197,7 @@ Object { "ft-flow/no-duplicate-type-union-intersection-members": 2, "ft-flow/no-existential-type": 2, "ft-flow/no-flow-fix-me-comments": 0, - "ft-flow/no-flow-fix-me-in-strict-files": 0, + "ft-flow/no-flow-suppressions-in-strict-files": 0, "ft-flow/no-internal-flow-type": 2, "ft-flow/no-mixed": 0, "ft-flow/no-mutable-array": 0, @@ -711,6 +711,7 @@ Object { "no-unsafe-optional-chaining": 2, "no-unused-expressions": 0, "no-unused-labels": 1, + "no-unused-private-class-members": 2, "no-unused-vars": Array [ 2, Object { @@ -763,6 +764,7 @@ Object { "prefer-exponentiation-operator": 2, "prefer-named-capture-group": 2, "prefer-numeric-literals": 0, + "prefer-object-has-own": 0, "prefer-object-spread": 2, "prefer-promise-reject-errors": 1, "prefer-regex-literals": 2, diff --git a/src/eslint-config-adeira/__tests__/__snapshots__/presets.test.js.snap b/src/eslint-config-adeira/__tests__/__snapshots__/presets.test.js.snap index 19fdb7408f..d203e73690 100644 --- a/src/eslint-config-adeira/__tests__/__snapshots__/presets.test.js.snap +++ b/src/eslint-config-adeira/__tests__/__snapshots__/presets.test.js.snap @@ -416,6 +416,7 @@ Object { "no-unsafe-optional-chaining": 2, "no-unused-expressions": 0, "no-unused-labels": 1, + "no-unused-private-class-members": 2, "no-unused-vars": Array [ 2, Object { @@ -459,6 +460,7 @@ Object { "prefer-exponentiation-operator": 2, "prefer-named-capture-group": 2, "prefer-numeric-literals": 0, + "prefer-object-has-own": 0, "prefer-object-spread": 2, "prefer-promise-reject-errors": 1, "prefer-regex-literals": 2, @@ -588,7 +590,7 @@ Object { "ft-flow/no-duplicate-type-union-intersection-members": 2, "ft-flow/no-existential-type": 2, "ft-flow/no-flow-fix-me-comments": 0, - "ft-flow/no-flow-fix-me-in-strict-files": 0, + "ft-flow/no-flow-suppressions-in-strict-files": 0, "ft-flow/no-internal-flow-type": 2, "ft-flow/no-mixed": 0, "ft-flow/no-mutable-array": 0, diff --git a/src/eslint-config-adeira/package.json b/src/eslint-config-adeira/package.json index 1028cd4430..e947dc7cb5 100644 --- a/src/eslint-config-adeira/package.json +++ b/src/eslint-config-adeira/package.json @@ -21,7 +21,7 @@ "eslint-plugin-adeira": "^0.15.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-fb-flow": "^0.0.4", - "eslint-plugin-ft-flow": "^1.1.0", + "eslint-plugin-ft-flow": "^1.1.1-alpha-0", "eslint-plugin-import": "^2.25.3", "eslint-plugin-jest": "^25.3.2", "eslint-plugin-jsx-a11y": "^6.5.1", @@ -42,6 +42,6 @@ "snapshot-diff": "^0.9.0" }, "peerDependencies": { - "eslint": ">=7.24.0 <8.0.0" + "eslint": ">=8.0.0" } } diff --git a/src/eslint-config-adeira/src/presets/base.js b/src/eslint-config-adeira/src/presets/base.js index bf4a9a6927..8d4834e545 100644 --- a/src/eslint-config-adeira/src/presets/base.js +++ b/src/eslint-config-adeira/src/presets/base.js @@ -55,6 +55,7 @@ module.exports = ({ 'no-unsafe-finally': ERROR, 'no-unsafe-negation': ERROR, 'no-unsafe-optional-chaining': ERROR, + 'no-unused-private-class-members': ERROR, 'require-atomic-updates': ERROR, 'use-isnan': [ERROR, { enforceForSwitchCase: true }], 'valid-jsdoc': OFF, @@ -268,6 +269,7 @@ module.exports = ({ 'prefer-const': [ERROR, { destructuring: 'all' }], 'prefer-destructuring': OFF, 'prefer-numeric-literals': OFF, + 'prefer-object-has-own': OFF, // TODO: NEXT_VERSION_ERROR (?) (https://eslint.org/docs/rules/prefer-object-has-own) 'prefer-rest-params': WARN, 'prefer-spread': WARN, 'prefer-template': ERROR, diff --git a/src/eslint-config-adeira/src/presets/flowtype.js b/src/eslint-config-adeira/src/presets/flowtype.js index bda0dd2028..b5a6547378 100644 --- a/src/eslint-config-adeira/src/presets/flowtype.js +++ b/src/eslint-config-adeira/src/presets/flowtype.js @@ -11,7 +11,9 @@ import type { EslintConfig } from '../EslintConfig.flow'; module.exports = ({ plugins: ['eslint-plugin-ft-flow', 'eslint-plugin-fb-flow'], rules: { - // flowtype (https://github.com/gajus/eslint-plugin-flowtype) + // Flow: + // - https://github.com/flow-typed/eslint-plugin-ft-flow + // - https://github.com/gajus/eslint-plugin-flowtype 'ft-flow/array-style-complex-type': OFF, 'ft-flow/array-style-simple-type': OFF, 'ft-flow/arrow-parens': OFF, @@ -27,7 +29,7 @@ module.exports = ({ 'ft-flow/no-duplicate-type-union-intersection-members': ERROR, 'ft-flow/no-existential-type': ERROR, // https://github.com/facebook/flow/issues/6308 'ft-flow/no-flow-fix-me-comments': OFF, - 'ft-flow/no-flow-fix-me-in-strict-files': OFF, // TODO: enable (after fixing our codebase) + 'ft-flow/no-flow-suppressions-in-strict-files': OFF, // TODO: enable (after fixing our codebase) 'ft-flow/no-internal-flow-type': ERROR, 'ft-flow/no-mixed': OFF, 'ft-flow/no-mutable-array': OFF, diff --git a/src/eslint-fixtures-tester/package.json b/src/eslint-fixtures-tester/package.json index 71a064f152..dd91fb7106 100644 --- a/src/eslint-fixtures-tester/package.json +++ b/src/eslint-fixtures-tester/package.json @@ -18,10 +18,10 @@ "@adeira/js": "^2.1.1", "@babel/eslint-parser": "^7.16.5", "@babel/runtime": "^7.16.5", - "eslint": "^7.32.0", + "eslint": "^8.5.0", "jest-docblock": "^27.4.0" }, "peerDependencies": { - "eslint": "^7.32.0" + "eslint": "^8.5.0" } } diff --git a/src/eslint-plugin-adeira/package.json b/src/eslint-plugin-adeira/package.json index 148a6d57ec..a2e88522b0 100644 --- a/src/eslint-plugin-adeira/package.json +++ b/src/eslint-plugin-adeira/package.json @@ -22,7 +22,7 @@ "@adeira/eslint-fixtures-tester": "0.1.0", "@adeira/flow-types-eslint": "0.0.0", "@babel/eslint-parser": "^7.16.5", - "eslint": "^7.32.0" + "eslint": "^8.5.0" }, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0" diff --git a/src/eslint-plugin-sx/package.json b/src/eslint-plugin-sx/package.json index e25deede04..c55cae7850 100644 --- a/src/eslint-plugin-sx/package.json +++ b/src/eslint-plugin-sx/package.json @@ -26,11 +26,11 @@ "@adeira/flow-types-eslint": "0.0.0", "@babel/code-frame": "^7.16.0", "@babel/eslint-parser": "^7.16.5", - "eslint": "^7.32.0", + "eslint": "^8.5.0", "react": "^17.0.2" }, "peerDependencies": { "@adeira/sx": "^0.28.0", - "eslint": "^7.32.0" + "eslint": "^8.5.0" } } diff --git a/src/signed-source/src/__tests__/SignedSource.test.js b/src/signed-source/src/__tests__/SignedSource.test.js index 3ce7f26aa9..062a6f97e0 100644 --- a/src/signed-source/src/__tests__/SignedSource.test.js +++ b/src/signed-source/src/__tests__/SignedSource.test.js @@ -5,11 +5,11 @@ import os from 'os'; import SignedSource from '../SignedSource'; test('signFile', () => { - expect(SignedSource.signFile(`# ${SignedSource.getSigningToken()}\ntest 1`)).toEqual( + expect(SignedSource.signFile(`# ${SignedSource.getSigningToken()}\ntest 1`)).toBe( `# @generated SignedSource<>${os.EOL}test 1`, ); - expect(SignedSource.signFile(`# ${SignedSource.getSigningToken()}\ntest 2`)).toEqual( + expect(SignedSource.signFile(`# ${SignedSource.getSigningToken()}\ntest 2`)).toBe( `# @generated SignedSource<<4c0c1ae4f5863c72731b2f543e830fd5>>${os.EOL}test 2`, ); @@ -18,7 +18,7 @@ test('signFile', () => { SignedSource.signFile( `# @generated SignedSource<>\nalready signed test`, ), - ).toEqual(`# @generated SignedSource<<54e8ffafff15a19f858d95c9a13d5b1d>>\nalready signed test`); + ).toBe(`# @generated SignedSource<<54e8ffafff15a19f858d95c9a13d5b1d>>\nalready signed test`); expect(() => SignedSource.signFile(`signature missing, no sign token`), diff --git a/yarn.lock b/yarn.lock index 9e0259e04f..3123a01e20 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2137,18 +2137,18 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== +"@eslint/eslintrc@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318" + integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" + debug "^4.3.2" + espree "^9.2.0" globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" - js-yaml "^3.13.1" + js-yaml "^4.1.0" minimatch "^3.0.4" strip-json-comments "^3.1.1" @@ -2251,19 +2251,19 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== +"@humanwhocodes/config-array@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914" + integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA== dependencies: - "@humanwhocodes/object-schema" "^1.2.0" + "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" minimatch "^3.0.4" -"@humanwhocodes/object-schema@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" - integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -4902,7 +4902,7 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3" integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A== -acorn@8.5.0, acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1: +acorn@8.5.0, acorn@^8.4.1: version "8.5.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== @@ -4912,11 +4912,26 @@ acorn@^6.1.1, acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== -acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0, acorn@^7.4.1: +acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.0.4: + version "8.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.1.0.tgz#52311fd7037ae119cbb134309e901aa46295b3fe" + integrity sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA== + +acorn@^8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" + integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== + +acorn@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== + address@1.1.2, address@^1.0.1, address@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" @@ -5004,16 +5019,6 @@ ajv@^8.0.0, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^8.0.1: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" - integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - algoliasearch-helper@^3.5.5: version "3.6.2" resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz#45e19b12589cfa0c611b573287f65266ea2cc14a" @@ -5501,11 +5506,6 @@ ast-types@^0.14.2: dependencies: tslib "^2.0.1" -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -7946,10 +7946,10 @@ debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" @@ -8837,6 +8837,14 @@ eslint-config-prettier@^8.3.0: resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== +eslint-formatter-codeframe@^7.32.1: + version "7.32.1" + resolved "https://registry.yarnpkg.com/eslint-formatter-codeframe/-/eslint-formatter-codeframe-7.32.1.tgz#50ef4024e1a533709564b62263c90dbf668a1a00" + integrity sha512-DK/3Q3+zVKq/7PdSYiCxPrsDF8H/TRMK5n8Hziwr4IMkMy+XiKSwbpj25AdajS63I/B61Snetq4uVvX9fOLyAg== + dependencies: + "@babel/code-frame" "7.12.11" + chalk "^4.0.0" + eslint-import-resolver-node@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" @@ -8875,10 +8883,10 @@ eslint-plugin-fb-flow@^0.0.4: resolved "https://registry.yarnpkg.com/eslint-plugin-fb-flow/-/eslint-plugin-fb-flow-0.0.4.tgz#47fa51630a5620b3b03919194e783ddfc094fd5d" integrity sha512-VWRoULiRkYqgeX4uCw2uIuu4v5DOhtWC+4fLM+qXX2mUtLf07znqhyTtxwIugnX8MgPczkaKmtDPrkuhvFmAoA== -eslint-plugin-ft-flow@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.1.0.tgz#bc41e242b26e542c9eb23280eacae933a43f7447" - integrity sha512-Z1MVInDFYHV66Ok0dA+jR7fiHLCYY8eDl0z8yiQ/wAXkmfOJ8fEuHeFvx+z5Ykt3IojhWrmLKkDbC/KDj7FCQw== +eslint-plugin-ft-flow@^1.1.1-alpha-0: + version "1.1.1-alpha-0" + resolved "https://registry.yarnpkg.com/eslint-plugin-ft-flow/-/eslint-plugin-ft-flow-1.1.1-alpha-0.tgz#8b9374c8c4a8268408878664bcbeff3653da429d" + integrity sha512-oTgz2MI5IbU85KhfoqXIIK+PHAe4LWg0oMwfEvnQwh5Xtp2MYBAIYffsQS2JQhxsfeqkxgLf+Pv+J586N3UU6g== dependencies: lodash "^4.17.21" string-natural-compare "^3.0.1" @@ -9033,7 +9041,15 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: +eslint-scope@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153" + integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== @@ -9047,7 +9063,7 @@ eslint-utils@^3.0.0: dependencies: eslint-visitor-keys "^2.0.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-visitor-keys@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -9062,37 +9078,41 @@ eslint-visitor-keys@^3.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== +eslint-visitor-keys@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2" + integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA== + +eslint@^8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.5.0.tgz#ddd2c1afd8f412036f87ae2a063d2aa296d3175f" + integrity sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" + "@eslint/eslintrc" "^1.0.5" + "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" enquirer "^2.3.5" escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" + eslint-scope "^7.1.0" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.2.0" esquery "^1.4.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" + glob-parent "^6.0.1" globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" @@ -9100,22 +9120,21 @@ eslint@^7.32.0: natural-compare "^1.4.0" optionator "^0.9.1" progress "^2.0.0" - regexpp "^3.1.0" + regexpp "^3.2.0" semver "^7.2.1" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" strip-json-comments "^3.1.0" - table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc" + integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg== dependencies: - acorn "^7.4.0" + acorn "^8.6.0" acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + eslint-visitor-keys "^3.1.0" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -12562,7 +12581,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^4.0.0: +js-yaml@^4.0.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== @@ -13027,11 +13046,6 @@ lodash.topath@^4.5.2: resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -16105,11 +16119,16 @@ regexp.prototype.flags@^1.3.1: call-bind "^1.0.2" define-properties "^1.1.3" -regexpp@^3.0.0, regexpp@^3.1.0: +regexpp@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + regexpu-core@^4.5.4: version "4.8.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" @@ -17058,15 +17077,6 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slide@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -17832,18 +17842,6 @@ tabbable@^5.2.1: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.2.1.tgz#e3fda7367ddbb172dcda9f871c0fdb36d1c4cd9c" integrity sha512-40pEZ2mhjaZzK0BnI+QGNjJO8UYx9pP5v7BGe17SORTO0OEuuaAwQTkAp8whcZvqon44wKFOikD+Al11K3JICQ== -table@^6.0.9: - version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - tailwindcss@^2.2.19: version "2.2.19" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.2.19.tgz#540e464832cd462bb9649c1484b0a38315c2653c"