diff --git a/.all-contributorsrc b/.all-contributorsrc index e236396..d6c3179 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -3,9 +3,7 @@ "projectOwner": "tablecheck", "repoType": "github", "repoHost": "https://github.com", - "files": [ - "README.md" - ], + "files": ["README.md"], "imageSize": 100, "commit": false, "commitConvention": "angular", @@ -15,31 +13,21 @@ "name": "Simeon Cheeseman", "avatar_url": "https://avatars.githubusercontent.com/u/1085899?v=4", "profile": "https://github.com/SimeonC", - "contributions": [ - "doc", - "infra", - "test", - "code", - "example" - ] + "contributions": ["doc", "infra", "test", "code", "example"] }, { "login": "SashaShostyr", "name": "Alex", "avatar_url": "https://avatars.githubusercontent.com/u/19342294?v=4", "profile": "https://github.com/SashaShostyr", - "contributions": [ - "test" - ] + "contributions": ["test"] }, { "login": "tablecheck-ci", "name": "tablecheck-ci", "avatar_url": "https://avatars.githubusercontent.com/u/54097918?v=4", "profile": "https://github.com/tablecheck-ci", - "contributions": [ - "doc" - ] + "contributions": ["doc"] } ], "contributorsPerLine": 6, diff --git a/auditjs.json b/auditjs.json index 7aa7643..f03f9f9 100644 --- a/auditjs.json +++ b/auditjs.json @@ -1340,6 +1340,70 @@ "reference": "https://ossindex.sonatype.org/vulnerability/CVE-2023-49293?component-type=npm&component-name=vite&utm_source=auditjs&utm_medium=integration&utm_content=4.0.41" } ] + }, + { + "coordinates": "pkg:npm/follow-redirects@1.15.4", + "description": "HTTP and HTTPS modules that follow redirects.", + "reference": "https://ossindex.sonatype.org/component/pkg:npm/follow-redirects@1.15.4?utm_source=auditjs&utm_medium=integration&utm_content=4.0.41", + "vulnerabilities": [ + { + "id": "CVE-2024-28849", + "title": "[CVE-2024-28849] CWE-200: Information Exposure", + "description": "follow-redirects is an open source, drop-in replacement for Node's `http` and `https` modules that automatically follows redirects. In affected versions follow-redirects only clears authorization header during cross-domain redirect, but keep the proxy-authentication header which contains credentials too. This vulnerability may lead to credentials leak, but has been addressed in version 1.15.6. Users are advised to upgrade. There are no known workarounds for this vulnerability.\n\nSonatype's research suggests that this CVE's details differ from those defined at NVD. See https://ossindex.sonatype.org/vulnerability/CVE-2024-28849 for details", + "cvssScore": 6.5, + "cvssVector": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", + "cve": "CVE-2024-28849", + "reference": "https://ossindex.sonatype.org/vulnerability/CVE-2024-28849?component-type=npm&component-name=follow-redirects&utm_source=auditjs&utm_medium=integration&utm_content=4.0.41" + } + ] + }, + { + "coordinates": "pkg:npm/ip@2.0.0", + "description": "[![](https://badge.fury.io/js/ip.svg)](https://www.npmjs.com/package/ip)", + "reference": "https://ossindex.sonatype.org/component/pkg:npm/ip@2.0.0?utm_source=auditjs&utm_medium=integration&utm_content=4.0.41", + "vulnerabilities": [ + { + "id": "CVE-2023-42282", + "title": "[CVE-2023-42282] CWE-918: Server-Side Request Forgery (SSRF)", + "description": "The ip package before 1.1.9 for Node.js might allow SSRF because some IP addresses (such as 0x7f.1) are improperly categorized as globally routable via isPublic.", + "cvssScore": 9.8, + "cvssVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", + "cve": "CVE-2023-42282", + "reference": "https://ossindex.sonatype.org/vulnerability/CVE-2023-42282?component-type=npm&component-name=ip&utm_source=auditjs&utm_medium=integration&utm_content=4.0.41" + } + ] + }, + { + "coordinates": "pkg:npm/vite@4.4.9", + "description": "[![npm][npm-img]][npm-url] [![node][node-img]][node-url] [![unix CI status][unix-ci-img]][unix-ci-url] [![windows CI status][windows-ci-img]][windows-ci-url]", + "reference": "https://ossindex.sonatype.org/component/pkg:npm/vite@4.4.9?utm_source=auditjs&utm_medium=integration&utm_content=4.0.41", + "vulnerabilities": [ + { + "id": "CVE-2024-23331", + "title": "[CVE-2024-23331] CWE-178: Improper Handling of Case Sensitivity", + "description": "Vite is a frontend tooling framework for javascript. The Vite dev server option `server.fs.deny` can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since `picomatch` defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from `config.server.fs.deny` fails to block access to sensitive files. This issue has been addressed in vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.", + "cvssScore": 7.5, + "cvssVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", + "cve": "CVE-2024-23331", + "reference": "https://ossindex.sonatype.org/vulnerability/CVE-2024-23331?component-type=npm&component-name=vite&utm_source=auditjs&utm_medium=integration&utm_content=4.0.41" + } + ] + }, + { + "coordinates": "pkg:npm/vite@4.4.1", + "description": "[![npm][npm-img]][npm-url] [![node][node-img]][node-url] [![unix CI status][unix-ci-img]][unix-ci-url] [![windows CI status][windows-ci-img]][windows-ci-url]", + "reference": "https://ossindex.sonatype.org/component/pkg:npm/vite@4.4.1?utm_source=auditjs&utm_medium=integration&utm_content=4.0.41", + "vulnerabilities": [ + { + "id": "CVE-2024-23331", + "title": "[CVE-2024-23331] CWE-178: Improper Handling of Case Sensitivity", + "description": "Vite is a frontend tooling framework for javascript. The Vite dev server option `server.fs.deny` can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Since `picomatch` defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. By requesting raw filesystem paths using augmented casing, the matcher derived from `config.server.fs.deny` fails to block access to sensitive files. This issue has been addressed in vite@5.0.12, vite@4.5.2, vite@3.2.8, and vite@2.9.17. Users are advised to upgrade. Users unable to upgrade should restrict access to dev servers.", + "cvssScore": 7.5, + "cvssVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", + "cve": "CVE-2024-23331", + "reference": "https://ossindex.sonatype.org/vulnerability/CVE-2024-23331?component-type=npm&component-name=vite&utm_source=auditjs&utm_medium=integration&utm_content=4.0.41" + } + ] } ], "ignore": [ @@ -1576,6 +1640,15 @@ }, { "id": "CVE-2023-49293" + }, + { + "id": "CVE-2024-28849" + }, + { + "id": "CVE-2023-42282" + }, + { + "id": "CVE-2024-23331" } ] } diff --git a/package-lock.json b/package-lock.json index 5f2c450..a6ab76a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,11 +18,11 @@ "tslib": "^2.6.2" }, "devDependencies": { - "@auto-it/all-contributors": "11.0.4", - "@auto-it/first-time-contributor": "11.0.4", - "@auto-it/npm": "11.0.4", - "@auto-it/released": "11.0.4", - "@auto-it/slack": "11.0.4", + "@auto-it/all-contributors": "11.1.1", + "@auto-it/first-time-contributor": "11.1.1", + "@auto-it/npm": "11.1.1", + "@auto-it/released": "11.1.1", + "@auto-it/slack": "11.1.1", "@commitlint/cli": "17.7.2", "@commitlint/config-lerna-scopes": "17.7.0", "@emotion/babel-plugin": "^11.11.0", @@ -49,7 +49,7 @@ "@vitest/coverage-v8": "^0.34.6", "@vitest/ui": "^0.34.6", "auditjs": "4.0.41", - "auto": "11.0.4", + "auto": "11.1.1", "eslint": "^8", "eslint-plugin-eslint-plugin": "5.1.1", "file-loader": "^6.2.0", @@ -104,13 +104,13 @@ } }, "node_modules/@auto-it/all-contributors": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/all-contributors/-/all-contributors-11.0.4.tgz", - "integrity": "sha512-6KSomxyNOe7HNq1BX6IV8TK8E+V4h2DDlpMnk4ksyJC0PbS+OkUACEG5z85p6EAhsahTg9rj3YLPXIysGf85hw==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/all-contributors/-/all-contributors-11.1.1.tgz", + "integrity": "sha512-MSiif/W/cWskqRew1V5xO3Z3VCP3evsaRyl3paTzw1DAI6o7QRGW/M5qSZhCDqPg1v7C43/59yhhBPzlAvf/Sg==", "dev": true, "dependencies": { - "@auto-it/bot-list": "11.0.4", - "@auto-it/core": "11.0.4", + "@auto-it/bot-list": "11.1.1", + "@auto-it/core": "11.1.1", "@octokit/rest": "^18.12.0", "all-contributors-cli": "6.19.0", "anymatch": "^3.1.1", @@ -130,21 +130,21 @@ "dev": true }, "node_modules/@auto-it/bot-list": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/bot-list/-/bot-list-11.0.4.tgz", - "integrity": "sha512-f3w9UZ655MLiELUQP28K9Gceptf2vvKdKVRzh2b2ST+PG/srmoxCnHgE/TO9afW7NiuUA1h+hQVyIb0eQ9VSfQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/bot-list/-/bot-list-11.1.1.tgz", + "integrity": "sha512-uKZ08KC9FUjMBYqiizZ3VlXyEAeRHEAJaeNMqQFPi0jFKRtX/Dm4tAhDXqfQeuOuAsUHNh5Pp+4zOX2RmTPZaA==", "dev": true, "engines": { "node": ">=10.x" } }, "node_modules/@auto-it/core": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/core/-/core-11.0.4.tgz", - "integrity": "sha512-oYIByeGeuiM0MhWibbj3Y4Vj8p5Kt1n4g0hKL7Zu7oFlKmAjsZlwbH4z0wEjVTdK2+Eqg2/I1Dj/GgkiSriXgg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/core/-/core-11.1.1.tgz", + "integrity": "sha512-CIQYqJG/pXmWsQjgbjMF6qnwAu7Klrpm5fWHrXpzIEq/3qQfgGmTkauuJRSz9bM5z6pHHCjT1eypVV/EDj9ijg==", "dev": true, "dependencies": { - "@auto-it/bot-list": "11.0.4", + "@auto-it/bot-list": "11.1.1", "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", "@octokit/core": "^3.5.1", "@octokit/plugin-enterprise-compatibility": "1.3.0", @@ -213,13 +213,13 @@ } }, "node_modules/@auto-it/first-time-contributor": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/first-time-contributor/-/first-time-contributor-11.0.4.tgz", - "integrity": "sha512-pb8tVecwKxN5nUJiKn4NjdRvCuPdqlC4IDhVxxprsvUpmb+pxiGK9fXh/nAHHFCaIrkEWm1FyYmkq3rwfrf3eA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/first-time-contributor/-/first-time-contributor-11.1.1.tgz", + "integrity": "sha512-xyKULf7+EoaPUZdYE1jVLMo4GUUxiIU5Q9ENdcTrCsw9Y4jSIdCBZKR+wxbxZNdqsJHnLGfAaW+SbLY8OrN2ng==", "dev": true, "dependencies": { - "@auto-it/bot-list": "11.0.4", - "@auto-it/core": "11.0.4", + "@auto-it/bot-list": "11.1.1", + "@auto-it/core": "11.1.1", "array.prototype.flatmap": "^1.2.2", "endent": "^2.1.0", "tslib": "2.1.0", @@ -233,13 +233,13 @@ "dev": true }, "node_modules/@auto-it/npm": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/npm/-/npm-11.0.4.tgz", - "integrity": "sha512-7sKGswdhQZ0/EryFhMU8DZV/hKZSZTOhJnNTXBtCGRk7oLjRHjt6XVOWCMOMOCNO/wVn5k5r52DbhAy5V4i0GQ==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/npm/-/npm-11.1.1.tgz", + "integrity": "sha512-I7qWPdU2goCmqdvAEpa6yGwQmzx5YXEsZywqs6uTQXIDuGbFzNt/7jwJNt8p/MNE8M0ra8FJ05eHavBLFZuEfg==", "dev": true, "dependencies": { - "@auto-it/core": "11.0.4", - "@auto-it/package-json-utils": "11.0.4", + "@auto-it/core": "11.1.1", + "@auto-it/package-json-utils": "11.1.1", "await-to-js": "^3.0.0", "endent": "^2.1.0", "env-ci": "^5.0.1", @@ -261,9 +261,9 @@ "dev": true }, "node_modules/@auto-it/package-json-utils": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/package-json-utils/-/package-json-utils-11.0.4.tgz", - "integrity": "sha512-Y84CW2QSL1TXkc4cVajODhRFFixDhOGX4JBS/ic3TgeJ94h6QH0Q8so+FxzPwBDWGXmUdLsj8fY/A3n0X09lqA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/package-json-utils/-/package-json-utils-11.1.1.tgz", + "integrity": "sha512-hk6wKuP7fPonXnP/blPHYS4iQaKZ6s+dVBRPSW7pjWZv6H/A131mWVSQC59nhe8lqZhbQ2MrDH4xxfhYnq21sA==", "dev": true, "dependencies": { "parse-author": "^2.0.0", @@ -274,13 +274,13 @@ } }, "node_modules/@auto-it/released": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/released/-/released-11.0.4.tgz", - "integrity": "sha512-BfzCr+rJvONgw5EtsmTfoPtjm7C6Yo+vKDiXtI82EctLfUuADV/wCE/zj5e1nACsELpqhqWfgLySvDu1n6bn6g==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/released/-/released-11.1.1.tgz", + "integrity": "sha512-iRUebl2q5V7hFEgScGVUMUVoOXrFFi5O280hUCpZxmd6kkG2v7Kl+Weii5zKpd7YSqG0HibJCD+LVwPClAfrCA==", "dev": true, "dependencies": { - "@auto-it/bot-list": "11.0.4", - "@auto-it/core": "11.0.4", + "@auto-it/bot-list": "11.1.1", + "@auto-it/core": "11.1.1", "deepmerge": "^4.0.0", "fp-ts": "^2.5.3", "io-ts": "^2.1.2", @@ -294,13 +294,13 @@ "dev": true }, "node_modules/@auto-it/slack": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/slack/-/slack-11.0.4.tgz", - "integrity": "sha512-XPsb80T199kD/nN0s7B6IUnaYYknLVNXxiyJ2tH7ugLhejPrd3v3+KnSwVFIaTunB8JsyEwAn5/smL26w2rQSg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/slack/-/slack-11.1.1.tgz", + "integrity": "sha512-GcvadvTkxweOjlnTiM4/nF52KeSyFr7zTd9xquXlPRzgNERmkmfm1ATsP8Glp5Jwcy97plnF22tyD8RKQ6S48A==", "dev": true, "dependencies": { "@atomist/slack-messages": "^1.2.2", - "@auto-it/core": "11.0.4", + "@auto-it/core": "11.1.1", "@octokit/rest": "^18.12.0", "fp-ts": "^2.5.3", "https-proxy-agent": "^5.0.0", @@ -316,12 +316,12 @@ "dev": true }, "node_modules/@auto-it/version-file": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@auto-it/version-file/-/version-file-11.0.4.tgz", - "integrity": "sha512-esKwslQPsPjFC96m0lI/MJI12OFjH92KXtVaQEguGIIXAhs7iop9+y5vLXjOtgNOFVBvk/FKTFItq2mV587aiA==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/@auto-it/version-file/-/version-file-11.1.1.tgz", + "integrity": "sha512-KHKunip2nXWKd7zJ0hdALojY+E6sTdmxuq9SXYgTMXUcZw2BtxunVSK1hb2wmS6iUH4CCILk12dHksAO5BFzeQ==", "dev": true, "dependencies": { - "@auto-it/core": "11.0.4", + "@auto-it/core": "11.1.1", "fp-ts": "^2.5.3", "io-ts": "^2.1.2", "semver": "^7.0.0", @@ -2509,6 +2509,7 @@ }, "node_modules/@clack/prompts/node_modules/is-unicode-supported": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -12205,15 +12206,15 @@ } }, "node_modules/auto": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/auto/-/auto-11.0.4.tgz", - "integrity": "sha512-jDe95fpOHZXRDe0HJMH1FvTrU0f3rXbee0eqNIAR2mB9EcdiWQTj1aF56R/xPyGLxF9y3WXzu38DgiIX9sjoDg==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/auto/-/auto-11.1.1.tgz", + "integrity": "sha512-mOucdDWMjtuBDH8phH9Z0s1dD4uFrFIhYQ/Zh4wCH2uB3eEf8qZbu20DLOWCfj1zEUU2gxqVAuqJD4OyLWvaSQ==", "dev": true, "dependencies": { - "@auto-it/core": "11.0.4", - "@auto-it/npm": "11.0.4", - "@auto-it/released": "11.0.4", - "@auto-it/version-file": "11.0.4", + "@auto-it/core": "11.1.1", + "@auto-it/npm": "11.1.1", + "@auto-it/released": "11.1.1", + "@auto-it/version-file": "11.1.1", "await-to-js": "^3.0.0", "chalk": "^4.0.0", "command-line-application": "^0.10.1", diff --git a/package.json b/package.json index 5eeece4..0159638 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,11 @@ }, "workspaces": ["packages/*"], "devDependencies": { - "@auto-it/all-contributors": "11.0.4", - "@auto-it/first-time-contributor": "11.0.4", - "@auto-it/npm": "11.0.4", - "@auto-it/released": "11.0.4", - "@auto-it/slack": "11.0.4", + "@auto-it/all-contributors": "11.1.1", + "@auto-it/first-time-contributor": "11.1.1", + "@auto-it/npm": "11.1.1", + "@auto-it/released": "11.1.1", + "@auto-it/slack": "11.1.1", "@commitlint/cli": "17.7.2", "@commitlint/config-lerna-scopes": "17.7.0", "@emotion/babel-plugin": "^11.11.0", @@ -55,7 +55,7 @@ "@vitest/coverage-v8": "^0.34.6", "@vitest/ui": "^0.34.6", "auditjs": "4.0.41", - "auto": "11.0.4", + "auto": "11.1.1", "eslint": "^8", "eslint-plugin-eslint-plugin": "5.1.1", "file-loader": "^6.2.0", diff --git a/packages/eslint-config/src/rules/react.ts b/packages/eslint-config/src/rules/react.ts index 1cf2469..10e82ed 100644 --- a/packages/eslint-config/src/rules/react.ts +++ b/packages/eslint-config/src/rules/react.ts @@ -53,6 +53,15 @@ export const reactRules: Linter.RulesRecord = { 'react/no-find-dom-node': 'error', 'react/jsx-fragments': 'error', 'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }], + 'react/jsx-key': [ + 'error', + { + checkFragmentShorthand: true, + checkKeyMustBeforeSpread: true, + warnOnDuplicates: true, + }, + ], + '@tablecheck/consistent-react-import': 'error', 'react-refresh/only-export-components': [ 'warn',