From d3829b18b89a78abca8c7a0d0b5d336d81bce450 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 00:01:35 +0000 Subject: [PATCH 001/154] build(deps-dev): bump typescript in /.github/actions/sonar-update-center Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.4 to 4.9.5. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v4.9.4...v4.9.5) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .../actions/sonar-update-center/package-lock.json | 14 +++++++------- .github/actions/sonar-update-center/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index c6fd7464..14b5c759 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -30,7 +30,7 @@ "nock": "^13.3.0", "prettier": "2.8.3", "ts-jest": "^29.0.5", - "typescript": "^4.9.4" + "typescript": "^4.9.5" } }, "node_modules/@actions/core": { @@ -6042,9 +6042,9 @@ } }, "node_modules/typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10752,9 +10752,9 @@ "dev": true }, "typescript": { - "version": "4.9.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", - "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "unbox-primitive": { diff --git a/.github/actions/sonar-update-center/package.json b/.github/actions/sonar-update-center/package.json index d5d74c29..9576d77d 100644 --- a/.github/actions/sonar-update-center/package.json +++ b/.github/actions/sonar-update-center/package.json @@ -45,6 +45,6 @@ "nock": "^13.3.0", "prettier": "2.8.3", "ts-jest": "^29.0.5", - "typescript": "^4.9.4" + "typescript": "^4.9.5" } } From 00092e36c902b09fb0a66f33904359970ee3dddb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 00:02:08 +0000 Subject: [PATCH 002/154] build(deps-dev): bump jest and @types/jest Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together. Updates `jest` from 29.3.1 to 29.4.1 - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.4.1/packages/jest) Updates `@types/jest` from 29.2.5 to 29.4.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-minor - dependency-name: "@types/jest" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .../sonar-update-center/package-lock.json | 1280 +++++++++-------- .../actions/sonar-update-center/package.json | 4 +- 2 files changed, 643 insertions(+), 641 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index c6fd7464..45ec2873 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -16,7 +16,7 @@ "semver": "^7.3.8" }, "devDependencies": { - "@types/jest": "^29.2.5", + "@types/jest": "^29.4.0", "@types/node": "^18.11.18", "@types/semver": "^7.3.13", "@typescript-eslint/parser": "^5.48.1", @@ -24,7 +24,7 @@ "eslint": "^8.31.0", "eslint-plugin-github": "^4.6.0", "eslint-plugin-jest": "^27.2.1", - "jest": "^29.3.1", + "jest": "^29.4.1", "jest-circus": "^29.3.1", "js-yaml": "^4.1.0", "nock": "^13.3.0", @@ -301,18 +301,18 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true, "engines": { "node": ">=6.9.0" @@ -418,9 +418,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", - "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -676,13 +676,13 @@ } }, "node_modules/@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" }, "engines": { @@ -884,16 +884,16 @@ } }, "node_modules/@jest/console": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz", - "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.1.tgz", + "integrity": "sha512-m+XpwKSi3PPM9znm5NGS8bBReeAJJpSkL1OuFCqaMaJL2YX9YXLkkI+MBchMPwu+ZuM2rynL51sgfkQteQ1CKQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", "slash": "^3.0.0" }, "engines": { @@ -901,37 +901,37 @@ } }, "node_modules/@jest/core": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz", - "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.1.tgz", + "integrity": "sha512-RXFTohpBqpaTebNdg5l3I5yadnKo9zLBajMT0I38D0tDhreVBYv3fA8kywthI00sWxPztWLD3yjiUkewwu/wKA==", "dev": true, "dependencies": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", + "jest-changed-files": "^29.4.0", + "jest-config": "^29.4.1", + "jest-haste-map": "^29.4.1", + "jest-message-util": "^29.4.1", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-resolve": "^29.4.1", + "jest-resolve-dependencies": "^29.4.1", + "jest-runner": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "jest-watcher": "^29.4.1", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -948,37 +948,37 @@ } }, "node_modules/@jest/environment": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", - "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.1.tgz", + "integrity": "sha512-pJ14dHGSQke7Q3mkL/UZR9ZtTOxqskZaC91NzamEH4dlKRt42W+maRBXiw/LWkdJe+P0f/zDR37+SPMplMRlPg==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.1.tgz", + "integrity": "sha512-ZxKJP5DTUNF2XkpJeZIzvnzF1KkfrhEF6Rz0HGG69fHl6Bgx5/GoU3XyaeFYEjuuKSOOsbqD/k72wFvFxc3iTw==", "dev": true, "dependencies": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.4.1", + "jest-snapshot": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", - "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.1.tgz", + "integrity": "sha512-w6YJMn5DlzmxjO00i9wu2YSozUYRBhIoJ6nQwpMYcBMtiqMGJm1QBzOf6DDgRao8dbtpDoaqLg6iiQTvv0UHhQ==", "dev": true, "dependencies": { "jest-get-type": "^29.2.0" @@ -988,48 +988,48 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", - "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.1.tgz", + "integrity": "sha512-/1joI6rfHFmmm39JxNfmNAO3Nwm6Y0VoL5fJDy7H1AtWrD1CgRtqJbN9Ld6rhAkGO76qqp4cwhhxJ9o9kYjQMw==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.4.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.4.1", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz", - "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.1.tgz", + "integrity": "sha512-znoK2EuFytbHH0ZSf2mQK2K1xtIgmaw4Da21R2C/NE/+NnItm5mPEFQmn8gmF3f0rfOlmZ3Y3bIf7bFj7DHxAA==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.4.1", + "@jest/expect": "^29.4.1", + "@jest/types": "^29.4.1", + "jest-mock": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz", - "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.1.tgz", + "integrity": "sha512-AISY5xpt2Xpxj9R6y0RF1+O6GRy9JsGa8+vK23Lmzdy1AYcpQn5ItX79wJSsTmfzPKSAcsY1LNt/8Y5Xe5LOSg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -1042,9 +1042,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", + "jest-worker": "^29.4.1", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -1063,12 +1063,12 @@ } }, "node_modules/@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", + "integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1089,13 +1089,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz", - "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.1.tgz", + "integrity": "sha512-WRt29Lwt+hEgfN8QDrXqXGgCTidq1rLyFqmZ4lmJOpVArC8daXrZWkWjiaijQvgd3aOUj2fM8INclKHsQW9YyQ==", "dev": true, "dependencies": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/types": "^29.4.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1104,14 +1104,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz", - "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.1.tgz", + "integrity": "sha512-v5qLBNSsM0eHzWLXsQ5fiB65xi49A3ILPSFQKPXzGL4Vyux0DPZAIN7NAFJa9b4BiTDP9MBF/Zqc/QA1vuiJ0w==", "dev": true, "dependencies": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.4.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.1", "slash": "^3.0.0" }, "engines": { @@ -1119,26 +1119,26 @@ } }, "node_modules/@jest/transform": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", - "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.1.tgz", + "integrity": "sha512-5w6YJrVAtiAgr0phzKjYd83UPbCXsBRTeYI4BXokv9Er9CcrH9hfXL/crCvP2d2nGOcovPUnlYiLPFLZrkG5Hg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.1", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-util": "^29.4.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^5.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1151,12 +1151,12 @@ "dev": true }, "node_modules/@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.1.tgz", + "integrity": "sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==", "dev": true, "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -1367,37 +1367,37 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.24.39", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.39.tgz", - "integrity": "sha512-GqtkxoAjhTzoMwFg/JYRl+1+miOoyvp6mkLpbMSd2fIQak2KvY00ndlXxxkDBpuCPYkorZeEZf0LEQn9V9NRVQ==", + "version": "0.25.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", + "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==", "dev": true }, "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^2.0.0" } }, "node_modules/@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -1465,9 +1465,9 @@ } }, "node_modules/@types/jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.5.tgz", - "integrity": "sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", + "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1980,15 +1980,15 @@ "dev": true }, "node_modules/babel-jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", - "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.1.tgz", + "integrity": "sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg==", "dev": true, "dependencies": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.4.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -2017,9 +2017,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", - "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.0.tgz", + "integrity": "sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -2055,12 +2055,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", - "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.0.tgz", + "integrity": "sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.4.0", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -2366,9 +2366,9 @@ "dev": true }, "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true, "engines": { "node": ">=0.10.0" @@ -3246,16 +3246,16 @@ } }, "node_modules/expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.1.tgz", + "integrity": "sha512-OKrGESHOaMxK3b6zxIq9SOW8kEXztKff/Dvg88j4xIJxur1hspEbedVkR3GpHe5LO+WB2Qw7OWN0RMTdp6as5A==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.3.1", + "@jest/expect-utils": "^29.4.1", "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4069,15 +4069,15 @@ } }, "node_modules/jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", - "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.1.tgz", + "integrity": "sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==", "dev": true, "dependencies": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.1", + "@jest/types": "^29.4.1", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.4.1" }, "bin": { "jest": "bin/jest.js" @@ -4095,9 +4095,9 @@ } }, "node_modules/jest-changed-files": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz", - "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.0.tgz", + "integrity": "sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w==", "dev": true, "dependencies": { "execa": "^5.0.0", @@ -4123,28 +4123,28 @@ } }, "node_modules/jest-circus": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz", - "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.1.tgz", + "integrity": "sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/expect": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.4.1", + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -4168,21 +4168,21 @@ } }, "node_modules/jest-cli": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz", - "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.1.tgz", + "integrity": "sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==", "dev": true, "dependencies": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-config": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -4202,31 +4202,31 @@ } }, "node_modules/jest-config": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz", - "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.1.tgz", + "integrity": "sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.4.1", + "@jest/types": "^29.4.1", + "babel-jest": "^29.4.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", + "jest-circus": "^29.4.1", + "jest-environment-node": "^29.4.1", "jest-get-type": "^29.2.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-resolve": "^29.4.1", + "jest-runner": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -4247,15 +4247,15 @@ } }, "node_modules/jest-diff": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", - "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.1.tgz", + "integrity": "sha512-uazdl2g331iY56CEyfbNA0Ut7Mn2ulAG5vUaEHXycf1L6IPyuImIxSz4F0VYBKi7LYIuxOwTZzK3wh5jHzASMw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.3.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4274,33 +4274,33 @@ } }, "node_modules/jest-each": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz", - "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.1.tgz", + "integrity": "sha512-QlYFiX3llJMWUV0BtWht/esGEz9w+0i7BHwODKCze7YzZzizgExB9MOfiivF/vVT0GSQ8wXLhvHXh3x2fVD4QQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-util": "^29.4.1", + "pretty-format": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz", - "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.1.tgz", + "integrity": "sha512-x/H2kdVgxSkxWAIlIh9MfMuBa0hZySmfsC5lCsWmWr6tZySP44ediRKDUiNggX/eHLH7Cd5ZN10Rw+XF5tXsqg==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4316,20 +4316,20 @@ } }, "node_modules/jest-haste-map": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", - "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.1.tgz", + "integrity": "sha512-imTjcgfVVTvg02khXL11NNLTx9ZaofbAWhilrMg/G8dIkp+HYCswhxf0xxJwBkfhWb3e8dwbjuWburvxmcr58w==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-util": "^29.4.1", + "jest-worker": "^29.4.1", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -4341,46 +4341,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz", - "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.1.tgz", + "integrity": "sha512-akpZv7TPyGMnH2RimOCgy+hPmWZf55EyFUvymQ4LMsQP8xSPlZumCPtXGoDhFNhUE2039RApZkTQDKU79p/FiQ==", "dev": true, "dependencies": { "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", - "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.1.tgz", + "integrity": "sha512-k5h0u8V4nAEy6lSACepxL/rw78FLDkBnXhZVgFneVpnJONhb2DhZj/Gv4eNe+1XqQ5IhgUcqj745UwH0HJmMnA==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", - "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.1.tgz", + "integrity": "sha512-H4/I0cXUaLeCw6FM+i4AwCnOwHRgitdaUFOdm49022YD5nfyr8C/DrbXOBEyJaj+w/y0gGJ57klssOaUiLLQGQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -4389,14 +4389,14 @@ } }, "node_modules/jest-mock": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", - "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.1.tgz", + "integrity": "sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4429,19 +4429,19 @@ } }, "node_modules/jest-resolve": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz", - "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.1.tgz", + "integrity": "sha512-j/ZFNV2lm9IJ2wmlq1uYK0Y/1PiyDq9g4HEGsNTNr3viRbJdV+8Lf1SXIiLZXFvyiisu0qUyIXGBnw+OKWkJwQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" }, "engines": { @@ -4449,43 +4449,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz", - "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.1.tgz", + "integrity": "sha512-Y3QG3M1ncAMxfjbYgtqNXC5B595zmB6e//p/qpA/58JkQXu/IpLDoLeOa8YoYfsSglBKQQzNUqtfGJJT/qLmJg==", "dev": true, "dependencies": { "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-snapshot": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz", - "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.1.tgz", + "integrity": "sha512-8d6XXXi7GtHmsHrnaqBKWxjKb166Eyj/ksSaUYdcBK09VbjPwIgWov1VwSmtupCIz8q1Xv4Qkzt/BTo3ZqiCeg==", "dev": true, "dependencies": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/environment": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-environment-node": "^29.4.1", + "jest-haste-map": "^29.4.1", + "jest-leak-detector": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-util": "^29.4.1", + "jest-watcher": "^29.4.1", + "jest-worker": "^29.4.1", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -4509,31 +4509,32 @@ } }, "node_modules/jest-runtime": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz", - "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.1.tgz", + "integrity": "sha512-UXTMU9uKu2GjYwTtoAw5rn4STxWw/nadOfW7v1sx6LaJYa3V/iymdCLQM6xy3+7C6mY8GfX22vKpgxY171UIoA==", "dev": true, "dependencies": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/globals": "^29.4.1", "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", + "jest-haste-map": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-mock": "^29.4.1", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-resolve": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "semver": "^7.3.5", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -4542,9 +4543,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz", - "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.1.tgz", + "integrity": "sha512-l4iV8EjGgQWVz3ee/LR9sULDk2pCkqb71bjvlqn+qp90lFwpnulHj4ZBT8nm1hA1C5wowXLc7MGnw321u0tsYA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -4553,23 +4554,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/expect-utils": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.3.1", + "expect": "^29.4.1", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.1", "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.4.1", + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "semver": "^7.3.5" }, "engines": { @@ -4577,12 +4578,12 @@ } }, "node_modules/jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.1.tgz", + "integrity": "sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -4594,17 +4595,17 @@ } }, "node_modules/jest-validate": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz", - "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.1.tgz", + "integrity": "sha512-qNZXcZQdIQx4SfUB/atWnI4/I2HUvhz8ajOSYUu40CSmf9U5emil8EDHgE7M+3j9/pavtk3knlZBDsgFvv/SWw==", "dev": true, "dependencies": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4623,18 +4624,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz", - "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.1.tgz", + "integrity": "sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.4.1", "string-length": "^4.0.1" }, "engines": { @@ -4642,13 +4643,13 @@ } }, "node_modules/jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.1.tgz", + "integrity": "sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.4.1", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -5367,12 +5368,12 @@ } }, "node_modules/pretty-format": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", - "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.1.tgz", + "integrity": "sha512-dt/Z761JUVsrIKaY215o1xQJBGlSmTx/h4cSqXqjHLnU1+Kt+mavVE7UgqJJO5ukx5HjSswHfmXz4LjS2oIJfg==", "dev": true, "dependencies": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -5553,9 +5554,9 @@ } }, "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", + "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", "dev": true, "engines": { "node": ">=10" @@ -6203,16 +6204,16 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", + "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/y18n": { @@ -6486,15 +6487,15 @@ } }, "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", "dev": true }, "@babel/helper-validator-option": { @@ -6578,9 +6579,9 @@ } }, "@babel/parser": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", - "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -6766,13 +6767,13 @@ } }, "@babel/types": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.19.0.tgz", - "integrity": "sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", "to-fast-properties": "^2.0.0" } }, @@ -6924,123 +6925,123 @@ "dev": true }, "@jest/console": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.3.1.tgz", - "integrity": "sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.4.1.tgz", + "integrity": "sha512-m+XpwKSi3PPM9znm5NGS8bBReeAJJpSkL1OuFCqaMaJL2YX9YXLkkI+MBchMPwu+ZuM2rynL51sgfkQteQ1CKQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", "slash": "^3.0.0" } }, "@jest/core": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.3.1.tgz", - "integrity": "sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.4.1.tgz", + "integrity": "sha512-RXFTohpBqpaTebNdg5l3I5yadnKo9zLBajMT0I38D0tDhreVBYv3fA8kywthI00sWxPztWLD3yjiUkewwu/wKA==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/reporters": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.2.0", - "jest-config": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", + "jest-changed-files": "^29.4.0", + "jest-config": "^29.4.1", + "jest-haste-map": "^29.4.1", + "jest-message-util": "^29.4.1", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-resolve-dependencies": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", - "jest-watcher": "^29.3.1", + "jest-resolve": "^29.4.1", + "jest-resolve-dependencies": "^29.4.1", + "jest-runner": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "jest-watcher": "^29.4.1", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "strip-ansi": "^6.0.0" } }, "@jest/environment": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.3.1.tgz", - "integrity": "sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.4.1.tgz", + "integrity": "sha512-pJ14dHGSQke7Q3mkL/UZR9ZtTOxqskZaC91NzamEH4dlKRt42W+maRBXiw/LWkdJe+P0f/zDR37+SPMplMRlPg==", "dev": true, "requires": { - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-mock": "^29.3.1" + "jest-mock": "^29.4.1" } }, "@jest/expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.4.1.tgz", + "integrity": "sha512-ZxKJP5DTUNF2XkpJeZIzvnzF1KkfrhEF6Rz0HGG69fHl6Bgx5/GoU3XyaeFYEjuuKSOOsbqD/k72wFvFxc3iTw==", "dev": true, "requires": { - "expect": "^29.3.1", - "jest-snapshot": "^29.3.1" + "expect": "^29.4.1", + "jest-snapshot": "^29.4.1" } }, "@jest/expect-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.3.1.tgz", - "integrity": "sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.4.1.tgz", + "integrity": "sha512-w6YJMn5DlzmxjO00i9wu2YSozUYRBhIoJ6nQwpMYcBMtiqMGJm1QBzOf6DDgRao8dbtpDoaqLg6iiQTvv0UHhQ==", "dev": true, "requires": { "jest-get-type": "^29.2.0" } }, "@jest/fake-timers": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.3.1.tgz", - "integrity": "sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.4.1.tgz", + "integrity": "sha512-/1joI6rfHFmmm39JxNfmNAO3Nwm6Y0VoL5fJDy7H1AtWrD1CgRtqJbN9Ld6rhAkGO76qqp4cwhhxJ9o9kYjQMw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", - "@sinonjs/fake-timers": "^9.1.2", + "@jest/types": "^29.4.1", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-message-util": "^29.4.1", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1" } }, "@jest/globals": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.3.1.tgz", - "integrity": "sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.4.1.tgz", + "integrity": "sha512-znoK2EuFytbHH0ZSf2mQK2K1xtIgmaw4Da21R2C/NE/+NnItm5mPEFQmn8gmF3f0rfOlmZ3Y3bIf7bFj7DHxAA==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/types": "^29.3.1", - "jest-mock": "^29.3.1" + "@jest/environment": "^29.4.1", + "@jest/expect": "^29.4.1", + "@jest/types": "^29.4.1", + "jest-mock": "^29.4.1" } }, "@jest/reporters": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.3.1.tgz", - "integrity": "sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.4.1.tgz", + "integrity": "sha512-AISY5xpt2Xpxj9R6y0RF1+O6GRy9JsGa8+vK23Lmzdy1AYcpQn5ItX79wJSsTmfzPKSAcsY1LNt/8Y5Xe5LOSg==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@jridgewell/trace-mapping": "^0.3.15", "@types/node": "*", "chalk": "^4.0.0", @@ -7053,9 +7054,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", + "jest-worker": "^29.4.1", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -7063,12 +7064,12 @@ } }, "@jest/schemas": { - "version": "29.0.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz", - "integrity": "sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz", + "integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==", "dev": true, "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.25.16" } }, "@jest/source-map": { @@ -7083,50 +7084,50 @@ } }, "@jest/test-result": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.3.1.tgz", - "integrity": "sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.4.1.tgz", + "integrity": "sha512-WRt29Lwt+hEgfN8QDrXqXGgCTidq1rLyFqmZ4lmJOpVArC8daXrZWkWjiaijQvgd3aOUj2fM8INclKHsQW9YyQ==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/types": "^29.4.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.3.1.tgz", - "integrity": "sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.4.1.tgz", + "integrity": "sha512-v5qLBNSsM0eHzWLXsQ5fiB65xi49A3ILPSFQKPXzGL4Vyux0DPZAIN7NAFJa9b4BiTDP9MBF/Zqc/QA1vuiJ0w==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", + "@jest/test-result": "^29.4.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.1", "slash": "^3.0.0" } }, "@jest/transform": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.3.1.tgz", - "integrity": "sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.4.1.tgz", + "integrity": "sha512-5w6YJrVAtiAgr0phzKjYd83UPbCXsBRTeYI4BXokv9Er9CcrH9hfXL/crCvP2d2nGOcovPUnlYiLPFLZrkG5Hg==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@jridgewell/trace-mapping": "^0.3.15", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.1", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", + "jest-util": "^29.4.1", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" + "write-file-atomic": "^5.0.0" }, "dependencies": { "convert-source-map": { @@ -7138,12 +7139,12 @@ } }, "@jest/types": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.3.1.tgz", - "integrity": "sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.1.tgz", + "integrity": "sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -7325,37 +7326,37 @@ } }, "@sinclair/typebox": { - "version": "0.24.39", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.39.tgz", - "integrity": "sha512-GqtkxoAjhTzoMwFg/JYRl+1+miOoyvp6mkLpbMSd2fIQak2KvY00ndlXxxkDBpuCPYkorZeEZf0LEQn9V9NRVQ==", + "version": "0.25.21", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz", + "integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==", "dev": true }, "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^2.0.0" } }, "@types/babel__core": { - "version": "7.1.19", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", - "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" @@ -7423,9 +7424,9 @@ } }, "@types/jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.2.5.tgz", - "integrity": "sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", + "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", "dev": true, "requires": { "expect": "^29.0.0", @@ -7762,15 +7763,15 @@ "dev": true }, "babel-jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.3.1.tgz", - "integrity": "sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.4.1.tgz", + "integrity": "sha512-xBZa/pLSsF/1sNpkgsiT3CmY7zV1kAsZ9OxxtrFqYucnOuRftXAfcJqcDVyOPeN4lttWTwhLdu0T9f8uvoPEUg==", "dev": true, "requires": { - "@jest/transform": "^29.3.1", + "@jest/transform": "^29.4.1", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.2.0", + "babel-preset-jest": "^29.4.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -7790,9 +7791,9 @@ } }, "babel-plugin-jest-hoist": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.2.0.tgz", - "integrity": "sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.0.tgz", + "integrity": "sha512-a/sZRLQJEmsmejQ2rPEUe35nO1+C9dc9O1gplH1SXmJxveQSRUYdBk8yGZG/VOUuZs1u2aHZJusEGoRMbhhwCg==", "dev": true, "requires": { "@babel/template": "^7.3.3", @@ -7822,12 +7823,12 @@ } }, "babel-preset-jest": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.2.0.tgz", - "integrity": "sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.4.0.tgz", + "integrity": "sha512-fUB9vZflUSM3dO/6M2TCAepTzvA4VkOvl67PjErcrQMGt9Eve7uazaeyCZ2th3UtI7ljpiBJES0F7A1vBRsLZA==", "dev": true, "requires": { - "babel-plugin-jest-hoist": "^29.2.0", + "babel-plugin-jest-hoist": "^29.4.0", "babel-preset-current-node-syntax": "^1.0.0" } }, @@ -8051,9 +8052,9 @@ "dev": true }, "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", "dev": true }, "define-properties": { @@ -8698,16 +8699,16 @@ "dev": true }, "expect": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.3.1.tgz", - "integrity": "sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.4.1.tgz", + "integrity": "sha512-OKrGESHOaMxK3b6zxIq9SOW8kEXztKff/Dvg88j4xIJxur1hspEbedVkR3GpHe5LO+WB2Qw7OWN0RMTdp6as5A==", "dev": true, "requires": { - "@jest/expect-utils": "^29.3.1", + "@jest/expect-utils": "^29.4.1", "jest-get-type": "^29.2.0", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1" + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1" } }, "fast-deep-equal": { @@ -9291,21 +9292,21 @@ } }, "jest": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.3.1.tgz", - "integrity": "sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.1.tgz", + "integrity": "sha512-cknimw7gAXPDOmj0QqztlxVtBVCw2lYY9CeIE5N6kD+kET1H4H79HSNISJmijb1HF+qk+G+ploJgiDi5k/fRlg==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.1", + "@jest/types": "^29.4.1", "import-local": "^3.0.2", - "jest-cli": "^29.3.1" + "jest-cli": "^29.4.1" } }, "jest-changed-files": { - "version": "29.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.2.0.tgz", - "integrity": "sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==", + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.4.0.tgz", + "integrity": "sha512-rnI1oPxgFghoz32Y8eZsGJMjW54UlqT17ycQeCEktcxxwqqKdlj9afl8LNeO0Pbu+h2JQHThQP0BzS67eTRx4w==", "dev": true, "requires": { "execa": "^5.0.0", @@ -9324,28 +9325,28 @@ } }, "jest-circus": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.3.1.tgz", - "integrity": "sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.4.1.tgz", + "integrity": "sha512-v02NuL5crMNY4CGPHBEflLzl4v91NFb85a+dH9a1pUNx6Xjggrd8l9pPy4LZ1VYNRXlb+f65+7O/MSIbLir6pA==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/expect": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/expect": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-each": "^29.4.1", + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", "p-limit": "^3.1.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -9362,65 +9363,65 @@ } }, "jest-cli": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.3.1.tgz", - "integrity": "sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.4.1.tgz", + "integrity": "sha512-jz7GDIhtxQ37M+9dlbv5K+/FVcIo1O/b1sX3cJgzlQUf/3VG25nvuWzlDC4F1FLLzUThJeWLu8I7JF9eWpuURQ==", "dev": true, "requires": { - "@jest/core": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/core": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-config": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", "prompts": "^2.0.1", "yargs": "^17.3.1" } }, "jest-config": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.3.1.tgz", - "integrity": "sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.4.1.tgz", + "integrity": "sha512-g7p3q4NuXiM4hrS4XFATTkd+2z0Ml2RhFmFPM8c3WyKwVDNszbl4E7cV7WIx1YZeqqCtqbtTtZhGZWJlJqngzg==", "dev": true, "requires": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.3.1", - "@jest/types": "^29.3.1", - "babel-jest": "^29.3.1", + "@jest/test-sequencer": "^29.4.1", + "@jest/types": "^29.4.1", + "babel-jest": "^29.4.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", + "jest-circus": "^29.4.1", + "jest-environment-node": "^29.4.1", "jest-get-type": "^29.2.0", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-runner": "^29.3.1", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-resolve": "^29.4.1", + "jest-runner": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" } }, "jest-diff": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.3.1.tgz", - "integrity": "sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.1.tgz", + "integrity": "sha512-uazdl2g331iY56CEyfbNA0Ut7Mn2ulAG5vUaEHXycf1L6IPyuImIxSz4F0VYBKi7LYIuxOwTZzK3wh5jHzASMw==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^29.3.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" } }, "jest-docblock": { @@ -9433,30 +9434,30 @@ } }, "jest-each": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.3.1.tgz", - "integrity": "sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.4.1.tgz", + "integrity": "sha512-QlYFiX3llJMWUV0BtWht/esGEz9w+0i7BHwODKCze7YzZzizgExB9MOfiivF/vVT0GSQ8wXLhvHXh3x2fVD4QQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", - "jest-util": "^29.3.1", - "pretty-format": "^29.3.1" + "jest-util": "^29.4.1", + "pretty-format": "^29.4.1" } }, "jest-environment-node": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.3.1.tgz", - "integrity": "sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.4.1.tgz", + "integrity": "sha512-x/H2kdVgxSkxWAIlIh9MfMuBa0hZySmfsC5lCsWmWr6tZySP44ediRKDUiNggX/eHLH7Cd5ZN10Rw+XF5tXsqg==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-mock": "^29.3.1", - "jest-util": "^29.3.1" + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1" } }, "jest-get-type": { @@ -9466,12 +9467,12 @@ "dev": true }, "jest-haste-map": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.3.1.tgz", - "integrity": "sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.4.1.tgz", + "integrity": "sha512-imTjcgfVVTvg02khXL11NNLTx9ZaofbAWhilrMg/G8dIkp+HYCswhxf0xxJwBkfhWb3e8dwbjuWburvxmcr58w==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", @@ -9479,60 +9480,60 @@ "fsevents": "^2.3.2", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.2.0", - "jest-util": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-util": "^29.4.1", + "jest-worker": "^29.4.1", "micromatch": "^4.0.4", "walker": "^1.0.8" } }, "jest-leak-detector": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.3.1.tgz", - "integrity": "sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.4.1.tgz", + "integrity": "sha512-akpZv7TPyGMnH2RimOCgy+hPmWZf55EyFUvymQ4LMsQP8xSPlZumCPtXGoDhFNhUE2039RApZkTQDKU79p/FiQ==", "dev": true, "requires": { "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" } }, "jest-matcher-utils": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.3.1.tgz", - "integrity": "sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.4.1.tgz", + "integrity": "sha512-k5h0u8V4nAEy6lSACepxL/rw78FLDkBnXhZVgFneVpnJONhb2DhZj/Gv4eNe+1XqQ5IhgUcqj745UwH0HJmMnA==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.1", "jest-get-type": "^29.2.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" } }, "jest-message-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.3.1.tgz", - "integrity": "sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.4.1.tgz", + "integrity": "sha512-H4/I0cXUaLeCw6FM+i4AwCnOwHRgitdaUFOdm49022YD5nfyr8C/DrbXOBEyJaj+w/y0gGJ57klssOaUiLLQGQ==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" } }, "jest-mock": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.3.1.tgz", - "integrity": "sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.1.tgz", + "integrity": "sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", - "jest-util": "^29.3.1" + "jest-util": "^29.4.1" } }, "jest-pnp-resolver": { @@ -9549,57 +9550,57 @@ "dev": true }, "jest-resolve": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.3.1.tgz", - "integrity": "sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.4.1.tgz", + "integrity": "sha512-j/ZFNV2lm9IJ2wmlq1uYK0Y/1PiyDq9g4HEGsNTNr3viRbJdV+8Lf1SXIiLZXFvyiisu0qUyIXGBnw+OKWkJwQ==", "dev": true, "requires": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", + "jest-haste-map": "^29.4.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.3.1", - "jest-validate": "^29.3.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", + "resolve.exports": "^2.0.0", "slash": "^3.0.0" } }, "jest-resolve-dependencies": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.3.1.tgz", - "integrity": "sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.1.tgz", + "integrity": "sha512-Y3QG3M1ncAMxfjbYgtqNXC5B595zmB6e//p/qpA/58JkQXu/IpLDoLeOa8YoYfsSglBKQQzNUqtfGJJT/qLmJg==", "dev": true, "requires": { "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.3.1" + "jest-snapshot": "^29.4.1" } }, "jest-runner": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.3.1.tgz", - "integrity": "sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.4.1.tgz", + "integrity": "sha512-8d6XXXi7GtHmsHrnaqBKWxjKb166Eyj/ksSaUYdcBK09VbjPwIgWov1VwSmtupCIz8q1Xv4Qkzt/BTo3ZqiCeg==", "dev": true, "requires": { - "@jest/console": "^29.3.1", - "@jest/environment": "^29.3.1", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/console": "^29.4.1", + "@jest/environment": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.3.1", - "jest-haste-map": "^29.3.1", - "jest-leak-detector": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-resolve": "^29.3.1", - "jest-runtime": "^29.3.1", - "jest-util": "^29.3.1", - "jest-watcher": "^29.3.1", - "jest-worker": "^29.3.1", + "jest-environment-node": "^29.4.1", + "jest-haste-map": "^29.4.1", + "jest-leak-detector": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-util": "^29.4.1", + "jest-watcher": "^29.4.1", + "jest-worker": "^29.4.1", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -9616,39 +9617,40 @@ } }, "jest-runtime": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.3.1.tgz", - "integrity": "sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.4.1.tgz", + "integrity": "sha512-UXTMU9uKu2GjYwTtoAw5rn4STxWw/nadOfW7v1sx6LaJYa3V/iymdCLQM6xy3+7C6mY8GfX22vKpgxY171UIoA==", "dev": true, "requires": { - "@jest/environment": "^29.3.1", - "@jest/fake-timers": "^29.3.1", - "@jest/globals": "^29.3.1", + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/globals": "^29.4.1", "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-mock": "^29.3.1", + "jest-haste-map": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-mock": "^29.4.1", "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.3.1", - "jest-snapshot": "^29.3.1", - "jest-util": "^29.3.1", + "jest-resolve": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "semver": "^7.3.5", "slash": "^3.0.0", "strip-bom": "^4.0.0" } }, "jest-snapshot": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.3.1.tgz", - "integrity": "sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.4.1.tgz", + "integrity": "sha512-l4iV8EjGgQWVz3ee/LR9sULDk2pCkqb71bjvlqn+qp90lFwpnulHj4ZBT8nm1hA1C5wowXLc7MGnw321u0tsYA==", "dev": true, "requires": { "@babel/core": "^7.11.6", @@ -9657,33 +9659,33 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.3.1", - "@jest/transform": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/expect-utils": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", "@types/babel__traverse": "^7.0.6", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.3.1", + "expect": "^29.4.1", "graceful-fs": "^4.2.9", - "jest-diff": "^29.3.1", + "jest-diff": "^29.4.1", "jest-get-type": "^29.2.0", - "jest-haste-map": "^29.3.1", - "jest-matcher-utils": "^29.3.1", - "jest-message-util": "^29.3.1", - "jest-util": "^29.3.1", + "jest-haste-map": "^29.4.1", + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", "natural-compare": "^1.4.0", - "pretty-format": "^29.3.1", + "pretty-format": "^29.4.1", "semver": "^7.3.5" } }, "jest-util": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.3.1.tgz", - "integrity": "sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.1.tgz", + "integrity": "sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -9692,17 +9694,17 @@ } }, "jest-validate": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.3.1.tgz", - "integrity": "sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.4.1.tgz", + "integrity": "sha512-qNZXcZQdIQx4SfUB/atWnI4/I2HUvhz8ajOSYUu40CSmf9U5emil8EDHgE7M+3j9/pavtk3knlZBDsgFvv/SWw==", "dev": true, "requires": { - "@jest/types": "^29.3.1", + "@jest/types": "^29.4.1", "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.2.0", "leven": "^3.1.0", - "pretty-format": "^29.3.1" + "pretty-format": "^29.4.1" }, "dependencies": { "camelcase": { @@ -9714,29 +9716,29 @@ } }, "jest-watcher": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.3.1.tgz", - "integrity": "sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.4.1.tgz", + "integrity": "sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw==", "dev": true, "requires": { - "@jest/test-result": "^29.3.1", - "@jest/types": "^29.3.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.3.1", + "jest-util": "^29.4.1", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.3.1.tgz", - "integrity": "sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.4.1.tgz", + "integrity": "sha512-O9doU/S1EBe+yp/mstQ0VpPwpv0Clgn68TkNwGxL6/usX/KUW9Arnn4ag8C3jc6qHcXznhsT5Na1liYzAsuAbQ==", "dev": true, "requires": { "@types/node": "*", - "jest-util": "^29.3.1", + "jest-util": "^29.4.1", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -10287,12 +10289,12 @@ } }, "pretty-format": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.3.1.tgz", - "integrity": "sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==", + "version": "29.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.4.1.tgz", + "integrity": "sha512-dt/Z761JUVsrIKaY215o1xQJBGlSmTx/h4cSqXqjHLnU1+Kt+mavVE7UgqJJO5ukx5HjSswHfmXz4LjS2oIJfg==", "dev": true, "requires": { - "@jest/schemas": "^29.0.0", + "@jest/schemas": "^29.4.0", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -10411,9 +10413,9 @@ "dev": true }, "resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.0.tgz", + "integrity": "sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==", "dev": true }, "reusify": { @@ -10863,9 +10865,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.0.tgz", + "integrity": "sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==", "dev": true, "requires": { "imurmurhash": "^0.1.4", diff --git a/.github/actions/sonar-update-center/package.json b/.github/actions/sonar-update-center/package.json index d5d74c29..cfbe0ca0 100644 --- a/.github/actions/sonar-update-center/package.json +++ b/.github/actions/sonar-update-center/package.json @@ -31,7 +31,7 @@ "semver": "^7.3.8" }, "devDependencies": { - "@types/jest": "^29.2.5", + "@types/jest": "^29.4.0", "@types/node": "^18.11.18", "@types/semver": "^7.3.13", "@typescript-eslint/parser": "^5.48.1", @@ -39,7 +39,7 @@ "eslint": "^8.31.0", "eslint-plugin-github": "^4.6.0", "eslint-plugin-jest": "^27.2.1", - "jest": "^29.3.1", + "jest": "^29.4.1", "jest-circus": "^29.3.1", "js-yaml": "^4.1.0", "nock": "^13.3.0", From d0e2d2749b25b56f6791eb241ae88aff561e5084 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 00:02:33 +0000 Subject: [PATCH 003/154] build(deps-dev): bump @vercel/ncc Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.36.0 to 0.36.1. - [Release notes](https://github.com/vercel/ncc/releases) - [Commits](https://github.com/vercel/ncc/compare/0.36.0...0.36.1) --- updated-dependencies: - dependency-name: "@vercel/ncc" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .../actions/sonar-update-center/package-lock.json | 14 +++++++------- .github/actions/sonar-update-center/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index c6fd7464..b91bb5c6 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -20,7 +20,7 @@ "@types/node": "^18.11.18", "@types/semver": "^7.3.13", "@typescript-eslint/parser": "^5.48.1", - "@vercel/ncc": "^0.36.0", + "@vercel/ncc": "^0.36.1", "eslint": "^8.31.0", "eslint-plugin-github": "^4.6.0", "eslint-plugin-jest": "^27.2.1", @@ -1784,9 +1784,9 @@ } }, "node_modules/@vercel/ncc": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.0.tgz", - "integrity": "sha512-/ZTUJ/ZkRt694k7KJNimgmHjtQcRuVwsST2Z6XfYveQIuBbHR+EqkTc1jfgPkQmMyk/vtpxo3nVxe8CNuau86A==", + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz", + "integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==", "dev": true, "bin": { "ncc": "dist/ncc/cli.js" @@ -7624,9 +7624,9 @@ } }, "@vercel/ncc": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.0.tgz", - "integrity": "sha512-/ZTUJ/ZkRt694k7KJNimgmHjtQcRuVwsST2Z6XfYveQIuBbHR+EqkTc1jfgPkQmMyk/vtpxo3nVxe8CNuau86A==", + "version": "0.36.1", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.36.1.tgz", + "integrity": "sha512-S4cL7Taa9yb5qbv+6wLgiKVZ03Qfkc4jGRuiUQMQ8HGBD5pcNRnHeYM33zBvJE4/zJGjJJ8GScB+WmTsn9mORw==", "dev": true }, "acorn": { diff --git a/.github/actions/sonar-update-center/package.json b/.github/actions/sonar-update-center/package.json index d5d74c29..9bdb07db 100644 --- a/.github/actions/sonar-update-center/package.json +++ b/.github/actions/sonar-update-center/package.json @@ -35,7 +35,7 @@ "@types/node": "^18.11.18", "@types/semver": "^7.3.13", "@typescript-eslint/parser": "^5.48.1", - "@vercel/ncc": "^0.36.0", + "@vercel/ncc": "^0.36.1", "eslint": "^8.31.0", "eslint-plugin-github": "^4.6.0", "eslint-plugin-jest": "^27.2.1", From b2fa6259dda7433a4d2765213afdc1393b7450ab Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Tue, 11 Apr 2023 20:26:21 +0100 Subject: [PATCH 004/154] test: test against sonarqube 10 (#725) - Added SonarQube 10 to the matrix build - LogTester was moved to a different artifact since the 9.15 version of the sonar plugin API: use the new LogTester based on slf4j --- .github/workflows/build.yml | 6 +++ pom.xml | 6 +++ .../findbugs/FindbugsConfiguration.java | 8 ++-- .../findbugs/FindbugsConfigurationTest.java | 16 +++---- .../findbugs/FindbugsProfileImporterTest.java | 13 +++--- .../profiles/FindbugsContribProfileTest.java | 17 ++++--- .../profiles/FindbugsProfileTest.java | 9 ++-- .../profiles/FindbugsScalaProfileTest.java | 9 ++-- .../FindbugsSecurityAuditProfileTest.java | 11 +++-- .../FindbugsSecurityJspProfileTest.java | 15 +++---- .../FindbugsSecurityMinimalProfileTest.java | 11 +++-- .../findbugs/util/JupiterLogTester.java | 45 ------------------- 12 files changed, 62 insertions(+), 104 deletions(-) delete mode 100644 src/test/java/org/sonar/plugins/findbugs/util/JupiterLogTester.java diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3514fb35..dba1e430 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,6 +43,12 @@ jobs: SONAR_PLUGIN_API_GROUPID: org.sonarsource.api.plugin SONAR_JAVA_VERSION: 7.16.0.30901 SONAR_SERVER_JAVA_VERSION: 17 + # 10.x + - SONAR_SERVER_VERSION: 10.0.0.68432 + SONAR_PLUGIN_API_VERSION: 9.14.0.375 + SONAR_PLUGIN_API_GROUPID: org.sonarsource.api.plugin + SONAR_JAVA_VERSION: 7.16.1.31255 + SONAR_SERVER_JAVA_VERSION: 17 steps: - uses: actions/checkout@v3 with: diff --git a/pom.xml b/pom.xml index a348011d..2d3c5dd8 100644 --- a/pom.xml +++ b/pom.xml @@ -209,6 +209,12 @@ 9.1.0.47736 test + + org.sonarsource.api.plugin + sonar-plugin-api-test-fixtures + 9.15.0.435 + test + diff --git a/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java b/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java index 11792973..9ef9313f 100644 --- a/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java +++ b/src/main/java/org/sonar/plugins/findbugs/FindbugsConfiguration.java @@ -41,9 +41,11 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.sonar.api.Plugin.Context; import org.sonar.api.PropertyType; import org.sonar.api.Startable; -import org.sonar.api.Plugin.Context; import org.sonar.api.batch.ScannerSide; import org.sonar.api.batch.fs.FilePredicates; import org.sonar.api.batch.fs.FileSystem; @@ -55,8 +57,6 @@ import org.sonar.api.resources.Qualifiers; import org.sonar.api.scan.filesystem.PathResolver; import org.sonar.api.utils.Version; -import org.sonar.api.utils.log.Logger; -import org.sonar.api.utils.log.Loggers; import org.sonar.plugins.findbugs.classpath.ClasspathLocator; import org.sonar.plugins.findbugs.classpath.DefaultClasspathLocator; import org.sonar.plugins.findbugs.rules.FbContribRulesDefinition; @@ -77,7 +77,7 @@ @ScannerSide public class FindbugsConfiguration implements Startable { - private static final Logger LOG = Loggers.get(FindbugsConfiguration.class); + private static final Logger LOG = LoggerFactory.getLogger(FindbugsConfiguration.class); private static final Pattern JSP_FILE_NAME_PATTERN = Pattern.compile(".*_jsp[\\$0-9]*\\.class"); public static final String SONAR_JAVA_BINARIES = "sonar.java.binaries"; diff --git a/src/test/java/org/sonar/plugins/findbugs/FindbugsConfigurationTest.java b/src/test/java/org/sonar/plugins/findbugs/FindbugsConfigurationTest.java index 29251543..ca9eb63c 100644 --- a/src/test/java/org/sonar/plugins/findbugs/FindbugsConfigurationTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/FindbugsConfigurationTest.java @@ -42,18 +42,16 @@ import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.junit.jupiter.params.provider.ValueSource; import org.mockito.Mockito; +import org.slf4j.event.Level; import org.sonar.api.batch.fs.FilePredicate; import org.sonar.api.batch.fs.FilePredicates; import org.sonar.api.batch.fs.FileSystem; import org.sonar.api.batch.rule.ActiveRules; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.classpath.ClasspathLocator; import org.sonar.plugins.findbugs.configuration.SimpleConfiguration; import org.sonar.plugins.findbugs.rule.FakeActiveRules; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import org.sonar.plugins.java.api.JavaResourceLocator; import com.google.common.collect.ImmutableList; @@ -67,7 +65,7 @@ class FindbugsConfigurationTest { public File temp; @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); private FilePredicates filePredicates; private FileSystem fs; @@ -263,9 +261,9 @@ void should_warn_of_missing_precompiled_jsp(boolean withSq98Api, boolean analyze // - Findbugs needs sources to be compiled // With the SonarQube 9.8+ API we get the Test.class so only one warning if (withSq98Api) { - assertThat(logTester.getLogs(LoggerLevel.WARN)).hasSize(1); + assertThat(logTester.getLogs(Level.WARN)).hasSize(1); } else { - assertThat(logTester.getLogs(LoggerLevel.WARN)).hasSize(2); + assertThat(logTester.getLogs(Level.WARN)).hasSize(2); } } @@ -297,7 +295,7 @@ void should_analyze_precompiled_jsp(boolean withSq98Api, boolean analyzeTests) t } } - assertThat(logTester.getLogs(LoggerLevel.WARN)).isNull(); + assertThat(logTester.getLogs(Level.WARN)).isEmpty(); } @ParameterizedTest @@ -331,7 +329,7 @@ void scala_project(boolean withSq98Api, boolean analyzeTests) throws IOException } } - assertThat(logTester.getLogs(LoggerLevel.WARN)).isNull(); + assertThat(logTester.getLogs(Level.WARN)).isEmpty(); } private void setupSampleProject(boolean withPrecompiledJsp, diff --git a/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java b/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java index a6c40702..ff7610be 100644 --- a/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java @@ -33,16 +33,15 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; +import org.slf4j.event.Level; import org.sonar.api.rule.Severity; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInActiveRule; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.NewBuiltInQualityProfile; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.rule.FakeRuleFinder; import org.sonar.plugins.findbugs.rules.FindbugsRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import org.sonar.plugins.findbugs.xml.FindBugsFilter; import org.sonar.plugins.findbugs.xml.Match; import org.sonar.plugins.java.Java; @@ -54,7 +53,7 @@ class FindbugsProfileImporterTest { private static final String TEST_PROFILE = "TEST_PROFILE"; @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); private Context context = new Context(); private final FindbugsProfileImporter importer = new FindbugsProfileImporter(FakeRuleFinder.createWithOnlyFindbugsRules()); @@ -177,7 +176,7 @@ void testImportingUncorrectXmlFile() { Collection results = profile.rules(); assertThat(results).isEmpty(); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).hasSize(1); + assertThat(logTester.getLogs(Level.ERROR)).hasSize(1); } @ParameterizedTest @@ -196,8 +195,8 @@ void profileImport(String profilePath, int expectedSize) { Collection results = profile.rules(); assertThat(results).hasSize(expectedSize); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); - assertThat(logTester.getLogs(LoggerLevel.WARN)).hasSize(1); + assertThat(logTester.getLogs(Level.ERROR)).hasSize(0); + assertThat(logTester.getLogs(Level.WARN)).hasSize(1); } private BuiltInActiveRule findActiveRule(BuiltInQualityProfile profile, String repositoryKey, String ruleKey) { diff --git a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsContribProfileTest.java b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsContribProfileTest.java index 5c9877ba..0d05a8a8 100644 --- a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsContribProfileTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsContribProfileTest.java @@ -1,24 +1,23 @@ package org.sonar.plugins.findbugs.profiles; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.FindbugsProfileImporter; import org.sonar.plugins.findbugs.rule.FakeRuleFinder; import org.sonar.plugins.findbugs.rules.FbContribRulesDefinition; import org.sonar.plugins.findbugs.rules.FindbugsRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import org.sonar.plugins.java.Java; -import static org.assertj.core.api.Assertions.assertThat; - -class FindbugsContribProfileTest { - +class FindbugsContribProfileTest { + @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void shouldCreateProfile() { @@ -30,7 +29,7 @@ void shouldCreateProfile() { BuiltInQualityProfile profile = context.profile(Java.KEY, FindbugsContribProfile.FB_CONTRIB_PROFILE_NAME); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindbugsRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(FindbugsRulesDefinition.RULE_COUNT); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FbContribRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(FbContribRulesDefinition.RULE_COUNT); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); FindbugsProfileTest.assertHasOnlyRulesForLanguage(profile.rules(), Java.KEY); } diff --git a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsProfileTest.java b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsProfileTest.java index 613cd305..9cf3bd7c 100644 --- a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsProfileTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsProfileTest.java @@ -21,11 +21,11 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInActiveRule; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.FindbugsProfileImporter; import org.sonar.plugins.findbugs.language.Jsp; import org.sonar.plugins.findbugs.language.scala.Scala; @@ -35,7 +35,6 @@ import org.sonar.plugins.findbugs.rules.FindSecurityBugsRulesDefinition; import org.sonar.plugins.findbugs.rules.FindSecurityBugsScalaRulesDefinition; import org.sonar.plugins.findbugs.rules.FindbugsRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import org.sonar.plugins.java.Java; import static org.assertj.core.api.Assertions.assertThat; @@ -45,7 +44,7 @@ class FindbugsProfileTest { @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void shouldCreateProfile() { @@ -57,7 +56,7 @@ void shouldCreateProfile() { BuiltInQualityProfile profile = context.profile(Java.KEY, FindbugsProfile.FINDBUGS_PROFILE_NAME); assertThat(profile.rules()).hasSize(FindbugsRulesDefinition.RULE_COUNT); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindbugsRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(FindbugsRulesDefinition.RULE_COUNT); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); FindbugsProfileTest.assertHasOnlyRulesForLanguage(profile.rules(), Java.KEY); } diff --git a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsScalaProfileTest.java b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsScalaProfileTest.java index c8d5ba8d..1498d62d 100644 --- a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsScalaProfileTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsScalaProfileTest.java @@ -21,20 +21,19 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.FindbugsProfileImporter; import org.sonar.plugins.findbugs.language.scala.Scala; import org.sonar.plugins.findbugs.rule.FakeRuleFinder; import org.sonar.plugins.findbugs.rules.FindSecurityBugsScalaRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; class FindbugsScalaProfileTest { @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void shouldCreateProfile() { @@ -46,7 +45,7 @@ void shouldCreateProfile() { BuiltInQualityProfile profile = context.profile(Scala.KEY, FindbugsSecurityScalaProfile.FINDBUGS_SECURITY_SCALA_PROFILE_NAME); assertThat(profile.rules()).hasSize(FindSecurityBugsScalaRulesDefinition.RULE_COUNT); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindSecurityBugsScalaRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(FindSecurityBugsScalaRulesDefinition.RULE_COUNT); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); FindbugsProfileTest.assertHasOnlyRulesForLanguage(profile.rules(), Scala.KEY); } diff --git a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityAuditProfileTest.java b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityAuditProfileTest.java index a2c4decb..49b3076d 100644 --- a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityAuditProfileTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityAuditProfileTest.java @@ -21,15 +21,14 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.FindbugsProfileImporter; import org.sonar.plugins.findbugs.rule.FakeRuleFinder; import org.sonar.plugins.findbugs.rules.FindSecurityBugsRulesDefinition; import org.sonar.plugins.findbugs.rules.FindbugsRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import org.sonar.plugins.java.Java; import static org.assertj.core.api.Assertions.assertThat; @@ -37,7 +36,7 @@ class FindbugsSecurityAuditProfileTest { @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void shouldCreateProfile() { @@ -48,9 +47,9 @@ void shouldCreateProfile() { // The standard FindBugs include only 9. Fb-Contrib and FindSecurityBugs include other rules BuiltInQualityProfile profile = context.profile(Java.KEY, FindbugsSecurityAuditProfile.FINDBUGS_SECURITY_AUDIT_PROFILE_NAME); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); // FSB rules must be added to FsbClassifier.groovy otherwise new rules metadata are not added in rules-findsecbugs.xml - assertThat(logTester.getLogs(LoggerLevel.WARN)).isNull(); + assertThat(logTester.getLogs(Level.WARN)).isEmpty(); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindbugsRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(8); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindSecurityBugsRulesDefinition.REPOSITORY_KEY)).count()) .isEqualTo(FindSecurityBugsRulesDefinition.RULE_COUNT); diff --git a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityJspProfileTest.java b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityJspProfileTest.java index 562e50ba..6a432798 100644 --- a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityJspProfileTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityJspProfileTest.java @@ -21,24 +21,23 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; import org.sonar.api.rules.RuleFinder; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.FindbugsProfileImporter; import org.sonar.plugins.findbugs.language.Jsp; import org.sonar.plugins.findbugs.rule.FakeRuleFinder; import org.sonar.plugins.findbugs.rules.FindSecurityBugsJspRulesDefinition; import org.sonar.plugins.findbugs.rules.FindbugsRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import static org.assertj.core.api.Assertions.assertThat; class FindbugsSecurityJspProfileTest { @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void shouldCreateProfile() { @@ -49,8 +48,8 @@ void shouldCreateProfile() { //There are 6 rules that are JSP specific (the other findbugs rules can also be found in JSP files) BuiltInQualityProfile profile = context.profile(Jsp.KEY, FindbugsSecurityJspProfile.FINDBUGS_SECURITY_JSP_PROFILE_NAME); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); - assertThat(logTester.getLogs(LoggerLevel.WARN)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); + assertThat(logTester.getLogs(Level.WARN)).isEmpty(); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindSecurityBugsJspRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(6); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindbugsRulesDefinition.REPOSITORY_KEY)).count()).isZero(); @@ -72,8 +71,8 @@ void disabledRuleMustNotBeActivated() { //There should be 5 rules left since we removed one BuiltInQualityProfile profile = context.profile(Jsp.KEY, FindbugsSecurityJspProfile.FINDBUGS_SECURITY_JSP_PROFILE_NAME); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); - assertThat(logTester.getLogs(LoggerLevel.WARN)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); + assertThat(logTester.getLogs(Level.WARN)).isEmpty(); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindSecurityBugsJspRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(5); assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindbugsRulesDefinition.REPOSITORY_KEY)).count()).isZero(); } diff --git a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityMinimalProfileTest.java b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityMinimalProfileTest.java index 69c3afd2..79f7e4eb 100644 --- a/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityMinimalProfileTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/profiles/FindbugsSecurityMinimalProfileTest.java @@ -21,15 +21,14 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import org.slf4j.event.Level; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.BuiltInQualityProfile; import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition.Context; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.testfixtures.log.LogTesterJUnit5; import org.sonar.plugins.findbugs.FindbugsProfileImporter; import org.sonar.plugins.findbugs.rule.FakeRuleFinder; import org.sonar.plugins.findbugs.rules.FindSecurityBugsRulesDefinition; import org.sonar.plugins.findbugs.rules.FindbugsRulesDefinition; -import org.sonar.plugins.findbugs.util.JupiterLogTester; import org.sonar.plugins.java.Java; import static org.assertj.core.api.Assertions.assertThat; @@ -37,7 +36,7 @@ class FindbugsSecurityMinimalProfileTest { @RegisterExtension - public LogTester logTester = new JupiterLogTester(); + public LogTesterJUnit5 logTester = new LogTesterJUnit5(); @Test void shouldCreateProfile() { @@ -47,9 +46,9 @@ void shouldCreateProfile() { findbugsProfile.define(context); BuiltInQualityProfile profile = context.profile(Java.KEY, FindbugsSecurityMinimalProfile.FINDBUGS_SECURITY_AUDIT_PROFILE_NAME); - assertThat(logTester.getLogs(LoggerLevel.ERROR)).isNull(); + assertThat(logTester.getLogs(Level.ERROR)).isEmpty(); // FSB rules must be added to FsbClassifier.groovy otherwise new rules metadata are not added in rules-findsecbugs.xml - assertThat(logTester.getLogs(LoggerLevel.WARN)).isNull(); + assertThat(logTester.getLogs(Level.WARN)).isEmpty(); // The standard FindBugs include only 9. Fb-Contrib and FindSecurityBugs include other rules assertThat(profile.rules().stream().filter(r -> r.repoKey().equals(FindbugsRulesDefinition.REPOSITORY_KEY)).count()).isEqualTo(8); // 94 rules total - 8 fb = 86 diff --git a/src/test/java/org/sonar/plugins/findbugs/util/JupiterLogTester.java b/src/test/java/org/sonar/plugins/findbugs/util/JupiterLogTester.java deleted file mode 100644 index c0691d3b..00000000 --- a/src/test/java/org/sonar/plugins/findbugs/util/JupiterLogTester.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * SonarQube SpotBugs Plugin - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.plugins.findbugs.util; - -import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.sonar.api.utils.log.LogTester; - -/** - * Extends {@link LogTester} into a JUnit5 extension - * - * @author gtoison - */ -public class JupiterLogTester extends LogTester implements BeforeEachCallback, AfterEachCallback { - - @Override - public void afterEach(ExtensionContext context) throws Exception { - after(); - } - - @Override - public void beforeEach(ExtensionContext context) throws Exception { - try { - before(); - } catch (Throwable e) { - throw new RuntimeException(e); - } - } -} From 127466b8752c36cb1a1de8f9ed4b2928c392a70c Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Thu, 27 Apr 2023 18:41:07 +0100 Subject: [PATCH 005/154] deps: upgrade SpotBugs Contrib to 7.6.0 (#726) - upgrade SpotBugs Contrib to 7.6.0 - update the sb-contrib and findsecbugs project links --- README.md | 2 +- generate_profiles/BuildXmlFiles.groovy | 4 +- pom.xml | 2 +- .../rules/FbContribRulesDefinition.java | 4 +- .../profile-findbugs-and-fb-contrib.xml | 27 +++-- .../plugins/findbugs/rules-fbcontrib.xml | 98 ++++++++++++++++--- 6 files changed, 111 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 5742fee8..3c9cb58e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## Description / Features -This plugin requires the [SonarJava Plugin](https://docs.sonarqube.org/display/PLUG/SonarJava), and uses [SpotBugs](https://spotbugs.github.io), [fb-contrib](http://fb-contrib.sourceforge.net/) and [Find Security Bugs](http://h3xstream.github.io/find-sec-bugs/) to provide coding rules. +This plugin requires the [SonarJava Plugin](https://docs.sonarqube.org/display/PLUG/SonarJava), and uses [SpotBugs](https://spotbugs.github.io), [fb-contrib](https://github.com/mebigfatguy/fb-contrib) and [Find Security Bugs](https://find-sec-bugs.github.io/) to provide coding rules. ### Supported Languages diff --git a/generate_profiles/BuildXmlFiles.groovy b/generate_profiles/BuildXmlFiles.groovy index 85233aaf..82e562f3 100644 --- a/generate_profiles/BuildXmlFiles.groovy +++ b/generate_profiles/BuildXmlFiles.groovy @@ -8,13 +8,13 @@ import groovy.json.JsonSlurper; @Grapes([ @Grab(group='com.github.spotbugs', module='spotbugs', version='4.7.3'), - @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.4.7'), + @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.0'), @Grab(group='com.h3xstream.findsecbugs' , module='findsecbugs-plugin', version='1.12.0')] ) FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.7.3') -CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.4.7') +CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.0') FSB = new Plugin(groupId: 'com.h3xstream.findsecbugs', artifactId: 'findsecbugs-plugin', version: '1.12.0') def destDir() { diff --git a/pom.xml b/pom.xml index 2d3c5dd8..c250dc5e 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ Update the version table and the rules count badge in README.md --> 4.7.3 - 7.4.7 + 7.6.0 1.12.0 1.8 diff --git a/src/main/java/org/sonar/plugins/findbugs/rules/FbContribRulesDefinition.java b/src/main/java/org/sonar/plugins/findbugs/rules/FbContribRulesDefinition.java index 1bab518b..bbc07746 100644 --- a/src/main/java/org/sonar/plugins/findbugs/rules/FbContribRulesDefinition.java +++ b/src/main/java/org/sonar/plugins/findbugs/rules/FbContribRulesDefinition.java @@ -27,8 +27,8 @@ public class FbContribRulesDefinition implements RulesDefinition { public static final String REPOSITORY_KEY = "fb-contrib"; public static final String REPOSITORY_NAME = "FindBugs Contrib"; - public static final int RULE_COUNT = 307; - public static final int DEACTIVED_RULE_COUNT = 0; + public static final int RULE_COUNT = 312; + public static final int DEACTIVED_RULE_COUNT = 1; @Override public void define(Context context) { diff --git a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml index 0db7696a..ca6818a7 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml @@ -1634,9 +1634,6 @@ - - - @@ -1658,6 +1655,9 @@ + + + @@ -2216,6 +2216,9 @@ + + + @@ -2243,6 +2246,9 @@ + + + @@ -2273,9 +2279,6 @@ - - - @@ -2303,4 +2306,16 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/org/sonar/plugins/findbugs/rules-fbcontrib.xml b/src/main/resources/org/sonar/plugins/findbugs/rules-fbcontrib.xml index 26d35407..c1785cb1 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/rules-fbcontrib.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/rules-fbcontrib.xml @@ -714,7 +714,7 @@ if (!date1.equals( date2 )) a potential cause of memory bloat.</p> <p> - If this collection is a list, set or otherwise of static things (e.g. a List&gt;String&gt; for month names), consider + If this collection is a list, set or otherwise of static things (e.g. a List&lt;String&gt; for month names), consider adding all of the elements in a static initializer, which can only be called once:<br/> <pre><code> private static List&lt;String&gt; monthNames = new ArrayList&lt;String&gt;(); @@ -1111,15 +1111,6 @@ if (myString.indexOf('e') != -1) { performance bug - - Correctness - Method calls equals on an enum instance - SPP_EQUALS_ON_ENUM - <p>This method calls the equals(Object) method on an enum instance. Since enums values are singletons, - you can use == to safely compare two enum values. In fact, the implementation for Enum.equals does just - that.</p> - correctness - bug - Correctness - Method uses invalid C++ style null check on Boolean SPP_INVALID_BOOLEAN_NULL_CHECK @@ -1215,6 +1206,18 @@ if ({{FLAWED_TEST_LOGIC}}) { correctness bug + + Correctness - Method call passes object that the method is called on as a parameter + SPP_PASSING_THIS_AS_PARM + <p>This method calls an instance method passing the object that the method is called on as a parameter, such as + <code> + foo.someMethod(foo); + </code> + As you already have access to this object thru this, you don't need to pass it. + </p> + correctness + bug + Correctness - Method calls keySet() just to call contains, use containsKey instead MUI_USE_CONTAINSKEY @@ -3275,6 +3278,15 @@ if (shouldCalcHalting && (calculateHaltingProbability() &gt; 0) { } correctness bug + + Correctness - Static field is autowired + WI_WIRING_OF_STATIC_FIELD + <p>Autowiring of static fields does not work using simple @Autowire annotations, not should you attempt to do + so as it's an anti pattern. Use PostConstruct methods to initialize static fields if you must do something + like this.</p> + correctness + bug + Correctness - Method gets and sets a value of a ConcurrentHashMap in a racy manner CCI_CONCURRENT_COLLECTION_ISSUES_USE_PUT_IS_RACY @@ -3377,6 +3389,28 @@ if (shouldCalcHalting && (calculateHaltingProbability() &gt; 0) { } correctness bug + + Correctness - Method uses Optional.equals(Optional.empty()), when Optional.isPresent is more readable + OI_OPTIONAL_ISSUES_ISPRESENT_PREFERRED + <p>This method uses Optional.equals(Optional.empty()). It is more readable and more clear just to use the Optional.isPresent() + method to determine whether the reference exists or not. Use + <br/> + <pre><code> + Optional f = getSomeOptional(); + if (!f.isPresent()) { + } + </code></pre> + rather than + <br/> + <pre><code> + Optional f = getSomeOptional(); + if (f.equals(Optional.empty()) { + } + </code></pre> + </p> + correctness + bug + Correctness - Method constructs a Date object, merely to convert it to an Instant object UAC_UNNECESSARY_API_CONVERSION_DATE_TO_INSTANT @@ -3560,8 +3594,8 @@ if (shouldCalcHalting && (calculateHaltingProbability() &gt; 0) { } correctness bug - - Correctness - Method calls contains() on a collected lambda expression + + Experimental - Method calls contains() on a collected lambda expression FII_AVOID_CONTAINS_ON_COLLECTED_STREAM <p>This method builds a collection using lambda expressions with a collect terminal operation. It then immediately calls the contains() method on it, to see if an item is present. This is sub optimal as the lambda still needs to @@ -3578,8 +3612,7 @@ if (shouldCalcHalting && (calculateHaltingProbability() &gt; 0) { } baubles.stream().anyMatch(b -> name.equals(b.getName())) </pre></code> </p> - correctness - bug + experimental Correctness - Method creates an anonymous lambda expression instead of specifying a method reference @@ -3729,4 +3762,41 @@ if (shouldCalcHalting && (calculateHaltingProbability() &gt; 0) { } correctness bug + + Correctness - Method calls equals on an enum instance + ENMI_EQUALS_ON_ENUM + <p>This method calls the equals(Object) method on an enum instance. Since enums values are singletons, + you can use == to safely compare two enum values. In fact, the implementation for Enum.equals does just + that.</p> + correctness + bug + + + Correctness - Method sets an enum reference to null + ENMI_NULL_ENUM_VALUE + <p>This method sets the value of an enum reference to null. An enum should never have a null value. + If there is a state where you do not know what the value of an enum should be, than that should be one of the + proper enum value. So add a MyEnum.UNKNOWN or such. This keeps the logic of switch statements, etc, much simpler. + correctness + bug + + + Correctness - Enum class only declares one enum value + ENMI_ONE_ENUM_VALUE + <p>This enum class only declares one value (or perhaps 0!). As such it is pointless, as its value will always be the same thing. + Therefore use of this enum is just bloating the code base. One exception is if you are using a null value as a second value. + This is a mistake, and should be replaced with a second enum value, even if it's NULL, or UNKNOWN, or NON_INTITIALIZED or some other + sentinel value. + correctness + bug + + + Correctness - Method specifies superfluous routes thru route() or concat() + AKI_SUPERFLUOUS_ROUTE_SPECIFICATION + <p>This method uses the route() or concat() method to build optional routes but only passes 1 route to the method. + This just causes an extra route specification to be created for no reason. Only use route() or concat() when you have more than + one route to combine into one. + correctness + bug + \ No newline at end of file From e700c010245f4e8e17aa489a17cfb5b10774ec16 Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Fri, 29 Sep 2023 11:25:32 +0200 Subject: [PATCH 006/154] build: test against SonarQube 10.2.1 (#734) --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dba1e430..3a768eb1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,10 +44,10 @@ jobs: SONAR_JAVA_VERSION: 7.16.0.30901 SONAR_SERVER_JAVA_VERSION: 17 # 10.x - - SONAR_SERVER_VERSION: 10.0.0.68432 - SONAR_PLUGIN_API_VERSION: 9.14.0.375 + - SONAR_SERVER_VERSION: 10.2.1.78527 + SONAR_PLUGIN_API_VERSION: 10.1.0.809 SONAR_PLUGIN_API_GROUPID: org.sonarsource.api.plugin - SONAR_JAVA_VERSION: 7.16.1.31255 + SONAR_JAVA_VERSION: 7.24.0.32100 SONAR_SERVER_JAVA_VERSION: 17 steps: - uses: actions/checkout@v3 From b2fee69a392f7d8ee1ca75cfad63a2e51f71a9ad Mon Sep 17 00:00:00 2001 From: cachescrubber Date: Fri, 29 Sep 2023 12:43:31 +0200 Subject: [PATCH 007/154] Upgrade to asm 9.5 in order to support Java 21 (#735) --- pom.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pom.xml b/pom.xml index c250dc5e..4c9e9f63 100644 --- a/pom.xml +++ b/pom.xml @@ -55,6 +55,7 @@ 4.7.3 7.6.0 1.12.0 + 9.5 1.8 3.0.0-M5 @@ -70,6 +71,18 @@ 1.8 + + + + org.ow2.asm + asm-bom + ${asm.version} + pom + import + + + + - 4.7.3 + 4.8.1 7.6.0 1.12.0 9.6 From b25e8f0dd2bd7246068ad6ba703415d0da7add5d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 04:32:12 +0000 Subject: [PATCH 098/154] chore(deps): update dependency org.apache.maven.plugins:maven-failsafe-plugin to v3.2.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4f78f37e..1450fb22 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ 1.8 3.2.2 - 3.2.1 + 3.2.2 7.9 7.9.6 org.sonarsource.sonarqube From ce8241b10a16e7beb9a72a696f2d1fcebf85d0f9 Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Tue, 7 Nov 2023 08:16:38 +0100 Subject: [PATCH 099/154] fix: as of Groovy 4.15 XmlParser needs to be explicitly imported (#846) --- generate_profiles/BuildXmlFiles.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/generate_profiles/BuildXmlFiles.groovy b/generate_profiles/BuildXmlFiles.groovy index 82e562f3..93396113 100644 --- a/generate_profiles/BuildXmlFiles.groovy +++ b/generate_profiles/BuildXmlFiles.groovy @@ -1,4 +1,5 @@ import groovy.xml.MarkupBuilder; +import groovy.xml.XmlParser; import java.nio.file.Paths import FsbClassifier; import static FsbClassifier.*; From 8e980eed341a09132535d5504944af0ac4e11554 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 17:47:39 -0500 Subject: [PATCH 100/154] chore(deps): update dependency @types/semver to v7.5.5 (#849) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index 2237ed99..6d9543c5 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1631,9 +1631,9 @@ } }, "node_modules/@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", + "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", "dev": true }, "node_modules/@types/stack-utils": { @@ -8679,9 +8679,9 @@ } }, "@types/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", + "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", "dev": true }, "@types/stack-utils": { From e053f37721902522f9732bdaa10f5f8d3b7ddfa3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 17:48:07 -0500 Subject: [PATCH 101/154] chore(deps): update dependency @types/jest to v29.5.8 (#848) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index 6d9543c5..e3b35a2b 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1600,9 +1600,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.7", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.7.tgz", - "integrity": "sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==", + "version": "29.5.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", + "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -8648,9 +8648,9 @@ } }, "@types/jest": { - "version": "29.5.7", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.7.tgz", - "integrity": "sha512-HLyetab6KVPSiF+7pFcUyMeLsx25LDNDemw9mGsJBkai/oouwrjTycocSDYopMEwFhN2Y4s9oPyOCZNofgSt2g==", + "version": "29.5.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", + "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", "dev": true, "requires": { "expect": "^29.0.0", From 17f3650d2482ebf32d938cd2de2d691d0863962a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 17:51:13 -0500 Subject: [PATCH 102/154] chore(deps): update dependency org.sonarsource.api.plugin:sonar-plugin-api-test-fixtures to v10.3.0.1951 (#847) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aaa20df6..88b08779 100644 --- a/pom.xml +++ b/pom.xml @@ -234,7 +234,7 @@ org.sonarsource.api.plugin sonar-plugin-api-test-fixtures - 10.2.0.1908 + 10.3.0.1951 test From 3bb65de5290c17b8cdae22c64f39d75e03d9d556 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 17:51:20 -0500 Subject: [PATCH 103/154] chore(deps): update dependency @types/node to v20.9.0 (#850) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index e3b35a2b..a8ca165f 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1622,9 +1622,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", - "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8670,9 +8670,9 @@ "dev": true }, "@types/node": { - "version": "20.8.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.10.tgz", - "integrity": "sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", "dev": true, "requires": { "undici-types": "~5.26.4" From c0b085f88ca5229ee01ec9e1858638d152308059 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 10 Nov 2023 13:40:39 +0100 Subject: [PATCH 104/154] chore(deps): update dependency org.sonarsource.sonarqube:sonar-ws to v9.9.3.79811 (#851) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 88b08779..ea9dc5bc 100644 --- a/pom.xml +++ b/pom.xml @@ -228,7 +228,7 @@ org.sonarsource.sonarqube sonar-ws - 9.9.2.77730 + 9.9.3.79811 test From b69cbf73ea06fb32324397fe0926cc4b674c9c67 Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Tue, 14 Nov 2023 12:11:14 +0100 Subject: [PATCH 105/154] deps: upgrade SpotBugs to 4.8.1 (#853) --- .github/workflows/build.yml | 2 +- README.md | 2 +- generate_profiles/BuildXmlFiles.groovy | 4 +- .../rules/FindbugsRulesDefinition.java | 4 +- .../profile-findbugs-and-fb-contrib.xml | 42 +++ .../findbugs/profile-findbugs-only.xml | 42 +++ .../sonar/plugins/findbugs/rules-findbugs.xml | 279 +++++++++++++++++- .../findbugs/FindbugsProfileImporterTest.java | 2 +- 8 files changed, 359 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 18d86b54..79c63403 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -123,7 +123,7 @@ jobs: uses: ./.github/actions/sonar-update-center with: prop-file: findbugs.properties - description: Use SpotBugs 4.7.3, sb-contrib 7.6.0, and findsecbugs 1.12.0 + description: Use SpotBugs 4.8.1, sb-contrib 7.6.0, and findsecbugs 1.12.0 minimal-supported-sq-version: 8.9 latest-supported-sq-version: LATEST changelog-url: https://github.com/spotbugs/sonar-findbugs/releases/tag/${{ github.event.release.tag_name }} diff --git a/README.md b/README.md index 393ae73b..a1a68b39 100644 --- a/README.md +++ b/README.md @@ -69,4 +69,4 @@ Findbugs Plugin version|Embedded SpotBugs/Findbugs version|Embedded Findsecbugs 4.2.2 | 4.7.3 (SpotBugs) | 1.12.0 | 7.4.7 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.3 | 4.7.3 (SpotBugs) | 1.12.0 | 7.4.7 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.4 | 4.7.3 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 -4.2.5-SNAPSHOT | 4.7.3 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 +4.2.5-SNAPSHOT | 4.8.1 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 diff --git a/generate_profiles/BuildXmlFiles.groovy b/generate_profiles/BuildXmlFiles.groovy index 93396113..287bd7b5 100644 --- a/generate_profiles/BuildXmlFiles.groovy +++ b/generate_profiles/BuildXmlFiles.groovy @@ -8,13 +8,13 @@ import groovy.json.JsonSlurper; @Grapes([ - @Grab(group='com.github.spotbugs', module='spotbugs', version='4.7.3'), + @Grab(group='com.github.spotbugs', module='spotbugs', version='4.8.1'), @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.0'), @Grab(group='com.h3xstream.findsecbugs' , module='findsecbugs-plugin', version='1.12.0')] ) -FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.7.3') +FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.8.1') CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.0') FSB = new Plugin(groupId: 'com.h3xstream.findsecbugs', artifactId: 'findsecbugs-plugin', version: '1.12.0') diff --git a/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java b/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java index 0c239ac8..fe2905bc 100644 --- a/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java +++ b/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java @@ -28,8 +28,8 @@ public final class FindbugsRulesDefinition implements RulesDefinition { public static final String REPOSITORY_KEY = "findbugs"; public static final String REPOSITORY_NAME = "FindBugs"; - public static final int RULE_COUNT = 461; - public static final int DEACTIVED_RULE_COUNT = 6; + public static final int RULE_COUNT = 475; + public static final int DEACTIVED_RULE_COUNT = 7; @Override public void define(Context context) { diff --git a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml index ca6818a7..bf8a51a8 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml @@ -1,4 +1,7 @@ + + + @@ -431,6 +434,9 @@ + + + @@ -557,6 +563,9 @@ + + + @@ -1382,6 +1391,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml index 19f51f7d..e7fc4160 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml @@ -1,4 +1,7 @@ + + + @@ -431,6 +434,9 @@ + + + @@ -557,6 +563,9 @@ + + + @@ -1382,4 +1391,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml b/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml index 08a3d409..b4a306a5 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml @@ -1,4 +1,16 @@ + + Bad practice - Be wary of letting constructors throw exceptions. + CT_CONSTRUCTOR_THROW + <p>Classes that throw exceptions in their constructors are vulnerable to Finalizer attacks</p> + + <p>A finalizer attack can be prevented, by declaring the class final, using an empty finalizer declared as final, or by a clever use of a private constructor.</p> + + <p>See <a href="https://wiki.sei.cmu.edu/confluence/display/java/OBJ11-J.+Be+wary+of+letting+constructors+throw+exceptions"><code>SEI CERT Rule OBJ-11</code></a> + for more information. + </p> + bad-practice + Bad practice - Asserting value of instanceof in tests is not recommended. JUA_DONT_ASSERT_INSTANCEOF_IN_TESTS @@ -1344,9 +1356,9 @@ Thus, having a mutable instance field generally creates race conditions.bug - Malicious code - Public static method may expose internal representation by returning array + Malicious code - Public static method may expose internal representation by returning a mutable object or array MS_EXPOSE_REP - <p> A public static method returns a reference to + <p> A public static method returns a reference to a mutable object or an array that is part of the static state of the class. Any code that calls this method can freely modify the underlying array. @@ -1624,9 +1636,9 @@ For example, in the following code, <code>foo</code> will be null.&l bad-practice - Multi-threading - Synchronization on interned String + Multi-threading - Synchronization on String literal DL_SYNCHRONIZATION_ON_SHARED_CONSTANT - <p> The code synchronizes on interned String.</p> + <p> The code synchronizes on String literal.</p> <pre><code>private static String LOCK = "LOCK"; ... synchronized(LOCK) { @@ -1638,7 +1650,26 @@ synchronized(LOCK) { is locking on something that other code might also be locking. This could result in very strange and hard to diagnose blocking and deadlock behavior. See <a href="http://www.javalobby.org/java/forums/t96352.html">http://www.javalobby.org/java/forums/t96352.html</a> and <a href="http://jira.codehaus.org/browse/JETTY-352">http://jira.codehaus.org/browse/JETTY-352</a>. </p> -<p>See CERT <a href="https://www.securecoding.cert.org/confluence/display/java/CON08-J.+Do+not+synchronize+on+objects+that+may+be+reused">CON08-J. Do not synchronize on objects that may be reused</a> for more information.</p> +<p>See CERT <a href="https://wiki.sei.cmu.edu/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused">LCK01-J. Do not synchronize on objects that may be reused</a> for more information.</p> + multi-threading + bug + + + Multi-threading - Synchronization on interned String + DL_SYNCHRONIZATION_ON_INTERNED_STRING + <p> The code synchronizes on interned String.</p> +<pre><code>private static String LOCK = new String("LOCK").intern(); +... +synchronized(LOCK) { + ... +} +... +</code></pre> +<p>Constant Strings are interned and shared across all other classes loaded by the JVM. Thus, this code +is locking on something that other code might also be locking. This could result in very strange and hard to diagnose +blocking and deadlock behavior. See <a href="http://www.javalobby.org/java/forums/t96352.html">http://www.javalobby.org/java/forums/t96352.html</a> and <a href="http://jira.codehaus.org/browse/JETTY-352">http://jira.codehaus.org/browse/JETTY-352</a>. +</p> +<p>See CERT <a href="https://wiki.sei.cmu.edu/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused">LCK01-J. Do not synchronize on objects that may be reused</a> for more information.</p> multi-threading bug @@ -1658,7 +1689,7 @@ synchronized(inited) { </code></pre> <p>Since there normally exist only two Boolean objects, this code could be synchronizing on the same object as other, unrelated code, leading to unresponsiveness and possible deadlock.</p> -<p>See CERT <a href="https://www.securecoding.cert.org/confluence/display/java/CON08-J.+Do+not+synchronize+on+objects+that+may+be+reused">CON08-J. Do not synchronize on objects that may be reused</a> for more information.</p> +<p>See CERT <a href="https://wiki.sei.cmu.edu/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused">LCK01-J. Do not synchronize on objects that may be reused</a> for more information.</p> multi-threading bug @@ -1700,7 +1731,7 @@ synchronized(count) { <p>Since Integer objects can be cached and shared, this code could be synchronizing on the same object as other, unrelated code, leading to unresponsiveness and possible deadlock.</p> -<p>See CERT <a href="https://www.securecoding.cert.org/confluence/display/java/CON08-J.+Do+not+synchronize+on+objects+that+may+be+reused">CON08-J. Do not synchronize on objects that may be reused</a> for more information.</p> +<p>See CERT <a href="https://wiki.sei.cmu.edu/confluence/display/java/LCK01-J.+Do+not+synchronize+on+objects+that+may+be+reused">LCK01-J. Do not synchronize on objects that may be reused</a> for more information.</p> multi-threading bug @@ -1807,7 +1838,7 @@ defined in an interface references a mutable Malicious code - Field isn't final but should be refactored to be so MS_SHOULD_BE_REFACTORED_TO_BE_FINAL <p> -This static field public but not final, and +This <code>public static</code> or <code>protected static</code> field is not final, and could be changed by malicious code or by accident from another package. The field could be made final to avoid @@ -1820,7 +1851,7 @@ to the field, so doing so will require some refactoring. Malicious code - Field isn't final but should be MS_SHOULD_BE_FINAL <p> -This static field public but not final, and +This <code>public static</code> or <code>protected static</code> field is not final, and could be changed by malicious code or by accident from another package. The field could be made final to avoid @@ -1959,10 +1990,11 @@ Methods should be verbs, in mixed case with the first letter lowercase, with the bad-practice - Bad practice - Field names should start with a lower case letter + Bad practice - Non-final field names should start with a lower case letter, final fields should be uppercase with words separated by underscores NM_FIELD_NAMING_CONVENTION <p> Names of fields that are not final should be in mixed case with a lowercase first letter and the first letters of subsequent words capitalized. +Names of final fields should be all uppercase with words separated by underscores ('_'). </p> bad-practice @@ -2160,6 +2192,14 @@ it may indicate a misunderstanding of how serialization works. SE_TRANSIENT_FIELD_NOT_RESTORED <p> This class contains a field that is updated at multiple places in the class, thus it seems to be part of the state of the class. However, since the field is marked as transient and not set in readObject or readResolve, it will contain the default value in any deserialized instance of the class. +</p> + bad-practice + + + Bad practice - Prevent overwriting of externalizable objects + SE_PREVENT_EXT_OBJ_OVERWRITE + <p>The <code>readExternal()</code> method must be declared as public and is not protected from malicious callers, so the code permits any caller to reset the value of the object at any time.</p> + <p>To prevent overwriting of externalizable objects, you can use a Boolean flag that is set after the instance fields have been populated. You can also protect against race conditions by synchronizing on a private lock object. </p> bad-practice @@ -3146,7 +3186,13 @@ with the equals() method. It is possible to create distinct instances that are equal but do not compare as == since they are different objects. Examples of classes which should generally -not be compared by reference are java.lang.Integer, java.lang.Float, etc.</p> +not be compared by reference are java.lang.Integer, java.lang.Float, etc. RC_REF_COMPARISON covers +only wrapper types for primitives. Suspicious types list can be extended by adding frc.suspicious +system property with comma-separated classes:</p> +<pre><code>&lt;systemPropertyVariables&gt; + &lt;frc.suspicious&gt;java.time.LocalDate,java.util.List&lt;/frc.suspicious&gt; + &lt;/systemPropertyVariables&gt; +</code></pre> correctness bug @@ -5708,4 +5754,215 @@ Using floating-point variables should not be used as loop counters, as they are </p> malicious-code + + Security - Expression in assertion may produce a side effect + ASE_ASSERTION_WITH_SIDE_EFFECT + <p>Expressions used in assertions must not produce side effects.</p> + + <p>See <https://wiki.sei.cmu.edu/confluence/display/java/EXP06-J.+Expressions+used+in+assertions+must+not+produce+side+effects><code>SEI CERT Rule EXP06</code></a> + for more information. + </p> + security + + + Security - Method invoked in assertion may produce a side effect + ASE_ASSERTION_WITH_SIDE_EFFECT_METHOD + <p>Expressions used in assertions must not produce side effects.</p> + + <p>See <https://wiki.sei.cmu.edu/confluence/display/java/EXP06-J.+Expressions+used+in+assertions+must+not+produce+side+effects><code>SEI CERT Rule EXP06</code></a> + for more information. + </p> + security + + + Bad practice - Primitive field is public + PA_PUBLIC_PRIMITIVE_ATTRIBUTE + <p> + <a href="https://wiki.sei.cmu.edu/confluence/display/java/OBJ01-J.+Limit+accessibility+of+fields">SEI CERT rule OBJ01-J</a> requires that accessibility to fields must be limited. + Otherwise, the values of the fields may be manipulated from outside the class, which may be unexpected or + undesired behaviour. + In general, requiring that no fields are allowed to be public is overkill and unrealistic. Even + the rule mentions that final fields may be public. Besides final fields, there may be other + usages for public fields: some public fields may serve as "flags" that affect the behavior of + the class. Such flag fields are expected to be read by the current instance (or the current + class, in case of static fields), but written by others. If a field is both written by the + methods of the current instance (or the current class, in case of static fields) and from the + outside, the code is suspicious. Consider making these fields private and provide appropriate + setters, if necessary. Please note that constructors, initializers and finalizers are + exceptions, if only they write the field inside the class, the field is not considered as + written by the class itself.</p> + bad-practice + + + Bad practice - Array-type field is public + PA_PUBLIC_ARRAY_ATTRIBUTE + <p> + <a href="https://wiki.sei.cmu.edu/confluence/display/java/OBJ01-J.+Limit+accessibility+of+fields">SEI CERT rule OBJ01-J</a> requires that accessibility of fields must be limited. + Making an array-type field final does not prevent other classes from modifying the contents of + the array. However, in general, requiring that no fields are allowed to be public is overkill + and unrealistic. There may be usages for public fields: some public fields may serve as "flags" + that affect the behavior of the class. Such flag fields are expected to be read by the current + instance (or the current class, in case of static fields), but written by others. If a field is + both written by the methods of the current instance (or the current class, in case of static + fields) and from the outside, the code is suspicious. Consider making these fields private and + provide appropriate setters, if necessary. Please note that constructors, initializers and + finalizers are exceptions, if only they write the field inside the class, the field is not + considered as written by the class itself.</p> + bad-practice + + + Bad practice - Mutable object-type field is public + PA_PUBLIC_MUTABLE_OBJECT_ATTRIBUTE + <p> + <a href="https://wiki.sei.cmu.edu/confluence/display/java/OBJ01-J.+Limit+accessibility+of+fields">SEI CERT rule OBJ01-J</a> requires that accessibility of fields must be limited. + Making a mutable object-type field final does not prevent other classes from modifying the + contents of the object. However, in general, requiring that no fields are allowed to be public + is overkill and unrealistic. There may be usages for public fields: some public fields may + serve as "flags" that affect the behavior of the class. Such flag fields are expected to be + read by the current instance (or the current class, in case of static fields), but written by + others. If a field is both written by the methods of the current instance (or the current + class, in case of static fields) and from the outside, the code is suspicious. Consider making + these fields private and provide appropriate setters, if necessary. Please note that + constructors, initializers and finalizers are exceptions, if only they write the field inside + the class, the field is not considered as written by the class itself. In case of object-type + fields "writing" means calling methods whose name suggest modification.</p> + bad-practice + + + Malicious code - Non-Private and non-final security check methods are vulnerable + VSC_VULNERABLE_SECURITY_CHECK_METHODS + <p> + Methods that perform security checks should be prevented from being overridden, so they must be declared as + private or final. Otherwise, these methods can be compromised when a malicious subclass overrides them + and omits the checks. + <p> + See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/MET03-J.+Methods+that+perform+a+security+check+must+be+declared+private+or+final">MET03-J. Methods that perform a security check must be declared private or final</a>. + </p> + malicious-code + + + Bad practice - Assertion is used to validate an argument of a public method + AA_ASSERTION_OF_ARGUMENTS + <p>Asssertions must not be used to validate arguments of public methods because the validations are + not performed if assertions are disabled.</p> + + <p> + See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/MET01-J.+Never+use+assertions+to+validate+method+arguments">MET01-J. Never use assertions to validate method arguments</a> + for more information. + </p> + bad-practice + + + Bad practice - Do not reuse public identifiers from JSL as class name + PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_CLASS_NAMES + <p> + It's essential to avoid reusing public identifiers from the Java Standard Library as class names. + This is because the Java Standard Library is a part of the Java platform and is expected to be available in all Java environments. + Doing so can lead to naming conflicts and confusion, making it harder to understand and maintain the code. + It's best practice to choose unique and descriptive class names that accurately represent the purpose and functionality of your own code. + To provide an example, let's say you want to create a class for handling dates in your application. Instead of using a common name like "Date", + which conflicts with the existing java.util.Date class, you could choose a more specific and unique name like or "AppDate" or "DisplayDate". + + A few key points to keep in mind when choosing names as identifier: + <ul> + <li>Use meaningful prefixes or namespaces: Prepend a project-specific prefix or namespace to your class names to make them distinct. For example, if your project is named "MyApp", you could use "MyAppDate" as your class name.</li> + <li>Use descriptive names: Opt for descriptive class names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "List", consider using "CustomAppList".</li> + <li>Follow naming conventions: Adhere to Java's naming conventions, such as using camel case (e.g., MyClass) for class names. This promotes code readability and reduces the chances of conflicts.</li> + </ul> + + </p> + <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> + bad-practice + + + Bad practice - Do not reuse public identifiers from JSL as field name + PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_FIELD_NAMES + <p> + It is a good practice to avoid reusing public identifiers from the Java Standard Library as field names in your code. + Doing so can lead to confusion and potential conflicts, making it harder to understand and maintain your codebase. + Instead, it is recommended to choose unique and descriptive names for your fields that accurately represent their purpose and differentiate them from Standard Library identifiers. + + To provide an example, let's say you want to create a class for handling dates in your application. Instead of using a common name like "Date", + which conflicts with the existing java.util.Date class, you could choose a more specific and unique name like or "AppDate" or "DisplayDate". + + For example, let's say you're creating a class to represent a car in your application. Instead of using a common name like "Component" as a field, + which conflicts with the existing java.awt.Component class, you should opt for a more specific and distinct name, such as "VehiclePart" or "CarComponent". + + A few key points to keep in mind when choosing names as identifier: + <ul> + <li>Use descriptive names: Opt for descriptive field names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "list", consider using "myFancyList"</li> + <li>Follow naming conventions: Adhere to Java's naming conventions, such as using mixed case for field names. Start with a lowercase first letter and the internal words should start with capital letters (e.g., myFieldUsesMixedCase). This promotes code readability and reduces the chances of conflicts.</li> + </ul> + + </p> + <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> + bad-practice + + + Bad practice - Do not reuse public identifiers from JSL as method name + PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_METHOD_NAMES + <p> + + It is a good practice to avoid reusing public identifiers from the Java Standard Library as method names in your code. + Doing so can lead to confusion, potential conflicts, and unexpected behavior. To maintain code clarity and ensure proper functionality, + it is recommended to choose unique and descriptive names for your methods that accurately represent their purpose + and differentiate them from standard library identifiers. + + To provide an example, let's say you want to create a method that handles creation of a custom file in your application. Instead of using a common name like "File" for the method, + which conflicts with the existing java.io.File class, you could choose a more specific and unique name like or "generateFile" or "createOutPutFile". + + A few key points to keep in mind when choosing names as identifier: + <ul> + <li>Use descriptive names: Opt for descriptive method names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "abs()", consider using "calculateAbsoluteValue()".</li> + <li>Follow naming conventions: Adhere to Java's naming conventions, such as using mixed case for method names. Method names should be verbs, with the first letter lowercase and the first letter of each internal word capitalized (e.g. runFast()). This promotes code readability and reduces the chances of conflicts.</li> + </ul> + + </p> + <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> + bad-practice + + + Bad practice - Do not reuse public identifiers from JSL as method name + PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_LOCAL_VARIABLE_NAMES + <p> + When declaring local variables in Java, it is crucial to refrain from reusing public identifiers from the Java Standard Library. + Reusing these identifiers as local variable names can lead to confusion, hinder code comprehension, and potentially cause conflicts + with existing publicly available identifier names from the Java Standard Library. + To maintain code clarity and avoid such issues, it is best practice to select unique and descriptive names for your local variables. + + To provide an example, let's say you want to store a custom font value in a variable. Instead of using a common name like "Font" for the variable name, + which conflicts with the existing java.awt.Font class, you could choose a more specific and unique name like or "customFont" or "loadedFontName". + + A few key points to keep in mind when choosing names as identifier: + <ul> + <li>Use descriptive names: Opt for descriptive variable names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "variable", consider using "myVariableName".</li> + <li>Follow naming conventions: Adhere to Java's naming conventions, such as using mixed case for variable names. Start with a lowercase first letter and the internal words should start with capital letters (e.g. myVariableName). This promotes code readability and reduces the chances of conflicts.</li> + </ul> + + </p> + <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> + bad-practice + + + Experimental - Do not reuse public identifiers from JSL as inner name + PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_INNER_CLASS_NAMES + <p> + It's essential to avoid reusing public identifiers from the Java Standard Library as class names. + This is because the Java Standard Library is a part of the Java platform and is expected to be available in all Java environments. + Doing so can lead to naming conflicts and confusion, making it harder to understand and maintain the code. + It's best practice to choose unique and descriptive class names that accurately represent the purpose and functionality of your own code. + To provide an example, let's say you want to create an inner class for handling dates inside a specific Calendar class. Instead of using a common name like "Date", + which conflicts with the existing java.util.Date class, you could choose a more specific and unique name like or "CalendarDate" or "CalendarDisplayDate". + + A few key points to keep in mind when choosing names as identifier: + <ul> + <li>Use meaningful prefixes or namespaces: Prepend a project-specific prefix or namespace to your class names to make them distinct. For example, if your project is named "MyApp", you could use "MyAppDate" as your class name.</li> + <li>Use descriptive names: Opt for descriptive class names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "List", consider using "CustomAppList".</li> + <li>Follow naming conventions: Adhere to Java's naming conventions, such as using camel case (e.g., MyClass) for class names. This promotes code readability and reduces the chances of conflicts.</li> + </ul> + + </p> + <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> + experimental + \ No newline at end of file diff --git a/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java b/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java index 655cbf33..7cdb7611 100644 --- a/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java +++ b/src/test/java/org/sonar/plugins/findbugs/FindbugsProfileImporterTest.java @@ -147,7 +147,7 @@ void shouldImportConfigurationBugInclude() { BuiltInQualityProfile profile = context.profile(Java.KEY, TEST_PROFILE); Collection results = profile.rules(); - assertThat(results).hasSize(21); + assertThat(results).hasSize(23); assertThat(findActiveRule(profile, FindbugsRulesDefinition.REPOSITORY_KEY, "RC_REF_COMPARISON_BAD_PRACTICE")).isNotNull(); } From d8e0ea768155724a546f03f758597deaafec133c Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Tue, 14 Nov 2023 14:15:12 +0100 Subject: [PATCH 106/154] deps: revert to using the ASM version provided by SpotBugs (#854) Now that SpotBugs is upgraded to 4.8.1 we can revert to using the transitive ASM dependency version (i.e. 9.6) --- pom.xml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pom.xml b/pom.xml index ea9dc5bc..8121f6ea 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,6 @@ 4.8.1 7.6.0 1.12.0 - 9.6 1.8 3.2.2 @@ -73,18 +72,6 @@ 1.8 - - - - org.ow2.asm - asm-bom - ${asm.version} - pom - import - - - - - 4.8.1 + 4.8.2 7.6.0 1.12.0 diff --git a/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java b/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java index fe2905bc..0ee96629 100644 --- a/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java +++ b/src/main/java/org/sonar/plugins/findbugs/rules/FindbugsRulesDefinition.java @@ -28,8 +28,8 @@ public final class FindbugsRulesDefinition implements RulesDefinition { public static final String REPOSITORY_KEY = "findbugs"; public static final String REPOSITORY_NAME = "FindBugs"; - public static final int RULE_COUNT = 475; - public static final int DEACTIVED_RULE_COUNT = 7; + public static final int RULE_COUNT = 476; + public static final int DEACTIVED_RULE_COUNT = 6; @Override public void define(Context context) { diff --git a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml index bf8a51a8..3b7f7d3c 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-and-fb-contrib.xml @@ -1424,6 +1424,9 @@ + + + diff --git a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml index e7fc4160..34416335 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/profile-findbugs-only.xml @@ -1424,4 +1424,7 @@ + + + \ No newline at end of file diff --git a/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml b/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml index b4a306a5..fbb9c53e 100644 --- a/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml +++ b/src/main/resources/org/sonar/plugins/findbugs/rules-findbugs.xml @@ -119,7 +119,7 @@ While ScheduledThreadPoolExecutor inherits from ThreadPoolExecutor, a few of the Security - HTTP cookie formed from untrusted input HRS_REQUEST_PARAMETER_TO_COOKIE - <p>This code constructs an HTTP Cookie using an untrusted HTTP parameter. If this cookie is added to an HTTP response, it will allow a HTTP response splitting + <p>This code constructs an HTTP Cookie using an untrusted HTTP parameter. If this cookie is added to an HTTP response, it will allow an HTTP response splitting vulnerability. See <a href="http://en.wikipedia.org/wiki/HTTP_response_splitting">http://en.wikipedia.org/wiki/HTTP_response_splitting</a> for more information.</p> <p>SpotBugs looks only for the most blatant, obvious cases of HTTP response splitting. @@ -132,7 +132,7 @@ consider using a commercial static analysis or pen-testing tool. Security - HTTP Response splitting vulnerability HRS_REQUEST_PARAMETER_TO_HTTP_HEADER - <p>This code directly writes an HTTP parameter to an HTTP header, which allows for a HTTP response splitting + <p>This code directly writes an HTTP parameter to an HTTP header, which allows for an HTTP response splitting vulnerability. See <a href="http://en.wikipedia.org/wiki/HTTP_response_splitting">http://en.wikipedia.org/wiki/HTTP_response_splitting</a> for more information.</p> <p>SpotBugs looks only for the most blatant, obvious cases of HTTP response splitting. @@ -1473,7 +1473,7 @@ Thus, having a mutable instance field generally creates race conditions.<p> This code seems to be using non-short-circuit logic (e.g., &amp; or |) rather than short-circuit logic (&amp;&amp; or ||). In addition, -it seem possible that, depending on the value of the left hand side, you might not +it seems possible that, depending on the value of the left hand side, you might not want to evaluate the right hand side (because it would have side effects, could cause an exception or could be expensive.</p> <p> @@ -1526,7 +1526,7 @@ Language Specification</a> for details. will only give up one lock and the notify will be unable to get both locks, and thus the notify will not succeed. &nbsp; If there is also a warning about a two lock wait, the - probably of a bug is quite high. + probability of a bug is quite high. </p> <h2>Deprecated</h2> <p>This rule is deprecated</p> @@ -1934,7 +1934,7 @@ could be changed by malicious code or Style - Potentially ambiguous invocation of either an inherited or outer method IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD <p> -An inner class is invoking a method that could be resolved to either a inherited method or a method defined in an outer class. +An inner class is invoking a method that could be resolved to either an inherited method or a method defined in an outer class. For example, you invoke <code>foo(17)</code>, which is defined in both a superclass and in an outer method. By the Java semantics, it will be resolved to invoke the inherited method, but this may not be what @@ -2556,7 +2556,7 @@ dereferencing this value will generate a null pointer exception. UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR <p> This field is never initialized within any constructor, and is therefore could be null after the object is constructed. Elsewhere, it is loaded and dereferenced without a null check. -This could be a either an error or a questionable design, since +This could be either an error or a questionable design, since it means a null pointer exception will be generated if that field is dereferenced before being initialized. </p> @@ -2734,9 +2734,9 @@ is important or acceptable. Style - Return value of method without side effect is ignored RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT - <p>This code calls a method and ignores the return value. However our analysis shows that + <p>This code calls a method and ignores the return value. However, our analysis shows that the method (including its implementations in subclasses if any) does not produce any effect -other than return value. Thus this call can be removed. +other than return value. Thus, this call can be removed. </p> <p>We are trying to reduce the false positives as much as possible, but in some cases this warning might be wrong. Common false-positive cases include:</p> @@ -3235,7 +3235,7 @@ different types. The result of this comparison will always be false at runtime. <p> This method calls equals(Object) on two references of different class types and analysis suggests they will be to objects of different classes at runtime. Further, examination of the equals methods that would be invoked suggest that either -this call will always return false, or else the equals method is not be symmetric (which is +this call will always return false, or else the equals method is not symmetric (which is a property required by the contract for equals in class Object). </p> @@ -4055,7 +4055,7 @@ less confusing to explicitly check pointer equality using <code>==</cod Correctness - equals(...) used to compare incompatible arrays EC_INCOMPATIBLE_ARRAY_COMPARE <p> -This method invokes the .equals(Object o) to compare two arrays, but the arrays of +This method invokes the .equals(Object o) to compare two arrays, but the arrays of incompatible types (e.g., String[] and StringBuffer[], or String[] and int[]). They will never be equal. In addition, when equals(...) is used to compare arrays it only checks to see if they are the same array, and ignores the contents of the arrays. @@ -4429,7 +4429,7 @@ just use the constant. Methods detected are: reference). Client classes that use this class, may, in addition, use an instance of this class as a synchronizing object. Because two classes are using the same object for synchronization, Multithread correctness is suspect. You should not synchronize nor call semaphore methods on - a public reference. Consider using a internal private member variable to control synchronization. + a public reference. Consider using an internal private member variable to control synchronization. </p> style @@ -4709,7 +4709,7 @@ better to do a null test rather than an instanceof test. Style - Unchecked/unconfirmed cast BC_UNCONFIRMED_CAST <p> -This cast is unchecked, and not all instances of the type casted from can be cast to +This cast is unchecked, and not all instances of the type cast from can be cast to the type it is being cast to. Check that your program logic ensures that this cast will not fail. </p> @@ -5843,7 +5843,7 @@ Using floating-point variables should not be used as loop counters, as they are Bad practice - Assertion is used to validate an argument of a public method AA_ASSERTION_OF_ARGUMENTS - <p>Asssertions must not be used to validate arguments of public methods because the validations are + <p>Assertions must not be used to validate arguments of public methods because the validations are not performed if assertions are disabled.</p> <p> @@ -5856,7 +5856,7 @@ Using floating-point variables should not be used as loop counters, as they are Bad practice - Do not reuse public identifiers from JSL as class name PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_CLASS_NAMES <p> - It's essential to avoid reusing public identifiers from the Java Standard Library as class names. + It's a good practice to avoid reusing public identifiers from the Java Standard Library as class names. This is because the Java Standard Library is a part of the Java platform and is expected to be available in all Java environments. Doing so can lead to naming conflicts and confusion, making it harder to understand and maintain the code. It's best practice to choose unique and descriptive class names that accurately represent the purpose and functionality of your own code. @@ -5925,7 +5925,7 @@ Using floating-point variables should not be used as loop counters, as they are Bad practice - Do not reuse public identifiers from JSL as method name PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_LOCAL_VARIABLE_NAMES <p> - When declaring local variables in Java, it is crucial to refrain from reusing public identifiers from the Java Standard Library. + When declaring local variables in Java, it is a good practice to refrain from reusing public identifiers from the Java Standard Library. Reusing these identifiers as local variable names can lead to confusion, hinder code comprehension, and potentially cause conflicts with existing publicly available identifier names from the Java Standard Library. To maintain code clarity and avoid such issues, it is best practice to select unique and descriptive names for your local variables. @@ -5943,26 +5943,47 @@ Using floating-point variables should not be used as loop counters, as they are <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> bad-practice - - Experimental - Do not reuse public identifiers from JSL as inner name - PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_INNER_CLASS_NAMES - <p> - It's essential to avoid reusing public identifiers from the Java Standard Library as class names. - This is because the Java Standard Library is a part of the Java platform and is expected to be available in all Java environments. - Doing so can lead to naming conflicts and confusion, making it harder to understand and maintain the code. - It's best practice to choose unique and descriptive class names that accurately represent the purpose and functionality of your own code. - To provide an example, let's say you want to create an inner class for handling dates inside a specific Calendar class. Instead of using a common name like "Date", - which conflicts with the existing java.util.Date class, you could choose a more specific and unique name like or "CalendarDate" or "CalendarDisplayDate". - - A few key points to keep in mind when choosing names as identifier: - <ul> - <li>Use meaningful prefixes or namespaces: Prepend a project-specific prefix or namespace to your class names to make them distinct. For example, if your project is named "MyApp", you could use "MyAppDate" as your class name.</li> - <li>Use descriptive names: Opt for descriptive class names that clearly indicate their purpose and functionality. This helps avoid shadowing existing Java Standard Library identifiers. For instance, instead of "List", consider using "CustomAppList".</li> - <li>Follow naming conventions: Adhere to Java's naming conventions, such as using camel case (e.g., MyClass) for class names. This promotes code readability and reduces the chances of conflicts.</li> - </ul> - + + Bad practice - It is preferable to use portable Java property instead of environment variable. + ENV_USE_PROPERTY_INSTEAD_OF_ENV + <p> + Environment variables are not portable, the variable name itself (not only the value) may be different depending on the running OS. + Not only the names of the specific environment variables can differ (e.g. `USERNAME` in Windows and `USER` in Unix systems), + but even the semantics differ, e.g. the case sensitivity (Windows being case-insensitive and Unix case-sensitive). + Moreover, the Map of the environment variables returned by <code>java.lang.System.getenv()</code> and its collection views may not obey + the general contract of the <code>Object.equals(java.lang.Object)</code> and <code>Object.hashCode()</code> methods. + Consequently, using environment variables may have unintended side effects. + Also, the visibility of environment variables is less restricted compared to Java Properties: they are visible to all descendants + of the defining process, not just the immediate Java subprocess. + For these reasons, even the Java API of <code>java.lang.System</code> advises to use Java properties (<code>java.lang.System.getProperty(java.lang.String)</code>) + instead of environment variables (<code>java.lang.System.getenv(java.lang.String)</code>) where possible. </p> - <p>See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/DCL01-J.+Do+not+reuse+public+identifiers+from+the+Java+Standard+Library">DCL01-J. Do not reuse public identifiers from the Java Standard Library</a>.</p> - experimental + <p> + If a value can be accessed through both System.getProperty() and System.getenv(), it should be accessed using the former. + </p> + <p> + Mapping of corresponding Java System properties: + <table> + <tr> + <th>Environment variable</th> <th>Property</th> + </tr> + <tr><td>JAVA_HOME</td> <td>java.home</td></tr> + <tr><td>JAVA_VERSION</td> <td>java.version</td></tr> + <tr><td>TEMP</td> <td>java.io.tmpdir</td></tr> + <tr><td>TMP</td> <td>java.io.tmpdir</td></tr> + <tr><td>PROCESSOR_ARCHITECTURE</td> <td>os.arch</td></tr> + <tr><td>OS</td> <td>os.name</td></tr> + <tr><td>USER</td> <td>user.name</td></tr> + <tr><td>USERNAME</td> <td>user.name</td></tr> + <tr><td>HOME</td> <td>user.home</td></tr> + <tr><td>HOMEPATH</td> <td>user.home</td></tr> + <tr><td>CD</td> <td>user.dir</td></tr> + <tr><td>PWD</td> <td>user.dir</td></tr> + </table> + </p> + <p> + See SEI CERT rule <a href="https://wiki.sei.cmu.edu/confluence/display/java/ENV02-J.+Do+not+trust+the+values+of+environment+variables">ENV02-J. Do not trust the values of environment variables</a>. + </p> + bad-practice \ No newline at end of file From 1127bb0e70991572d6df3e146c2d6a49b06ea79f Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Wed, 29 Nov 2023 18:12:34 +0100 Subject: [PATCH 129/154] Upgrade sb-contrib to 7.6.1 (#878) --- .github/workflows/build.yml | 2 +- README.md | 2 +- generate_profiles/BuildXmlFiles.groovy | 4 ++-- pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3232ba08..1617d5a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -126,7 +126,7 @@ jobs: uses: ./.github/actions/sonar-update-center with: prop-file: findbugs.properties - description: Use SpotBugs 4.8.2, sb-contrib 7.6.0, and findsecbugs 1.12.0 + description: Use SpotBugs 4.8.2, sb-contrib 7.6.1, and findsecbugs 1.12.0 minimal-supported-sq-version: 9.9 latest-supported-sq-version: LATEST changelog-url: https://github.com/spotbugs/sonar-findbugs/releases/tag/${{ github.event.release.tag_name }} diff --git a/README.md b/README.md index 1f78bc99..9e5371dd 100644 --- a/README.md +++ b/README.md @@ -70,4 +70,4 @@ Findbugs Plugin version|Embedded SpotBugs/Findbugs version|Embedded Findsecbugs 4.2.3 | 4.7.3 (SpotBugs) | 1.12.0 | 7.4.7 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.4 | 4.7.3 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.5 | 4.8.1 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 -4.2.6-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 +4.2.6-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.1 (sb-contrib) | 1.8|7.9~|5.10.1.16922 diff --git a/generate_profiles/BuildXmlFiles.groovy b/generate_profiles/BuildXmlFiles.groovy index 0523908e..c74b4b16 100644 --- a/generate_profiles/BuildXmlFiles.groovy +++ b/generate_profiles/BuildXmlFiles.groovy @@ -9,13 +9,13 @@ import groovy.json.JsonSlurper; @Grapes([ @Grab(group='com.github.spotbugs', module='spotbugs', version='4.8.2'), - @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.0'), + @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.1'), @Grab(group='com.h3xstream.findsecbugs' , module='findsecbugs-plugin', version='1.12.0')] ) FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.8.2') -CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.0') +CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.1') FSB = new Plugin(groupId: 'com.h3xstream.findsecbugs', artifactId: 'findsecbugs-plugin', version: '1.12.0') def destDir() { diff --git a/pom.xml b/pom.xml index 55b52bee..3f57836d 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ Update the version table and the rules count badge in README.md --> 4.8.2 - 7.6.0 + 7.6.1 1.12.0 1.8 From 9133a87668680d3a4dbb7ebf3d4afdc2b7646a3f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:19:14 +0100 Subject: [PATCH 130/154] chore(deps): update actions/setup-java action to v4 (#879) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- .github/workflows/sonarqube.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1617d5a2..362f97fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -57,7 +57,7 @@ jobs: with: fetch-depth: 0 - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: ${{ matrix.SONAR_SERVER_JAVA_VERSION }} distribution: temurin @@ -87,7 +87,7 @@ jobs: with: fetch-depth: 0 - name: Set up JDK 11 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 11 distribution: temurin diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index 032e8677..a8c0ec11 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -46,7 +46,7 @@ jobs: fetch-depth: 0 ref: ${{ steps.condval.outputs.value }} - name: Set up JDK 11 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 11 distribution: temurin From 8cb982b9d9dbd35a9f9f33c91b7627adaefa63e8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 23:32:12 -0500 Subject: [PATCH 131/154] fix(deps): update dependency commons-io:commons-io to v2.15.1 (#882) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3f57836d..6541aaad 100644 --- a/pom.xml +++ b/pom.xml @@ -117,7 +117,7 @@ commons-io commons-io - 2.15.0 + 2.15.1 From e3d30b2b97d885cf2acccda572ffa1181623f207 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 29 Nov 2023 23:32:19 -0500 Subject: [PATCH 132/154] chore(deps): update dependency @types/node to v20.10.1 (#881) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index cf126034..4822f4b7 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1622,9 +1622,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.1.tgz", + "integrity": "sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8670,9 +8670,9 @@ "dev": true }, "@types/node": { - "version": "20.10.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.0.tgz", - "integrity": "sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==", + "version": "20.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.1.tgz", + "integrity": "sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==", "dev": true, "requires": { "undici-types": "~5.26.4" From 2f7f7065500ad2bdd06c2249f27ad1e361250d1c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Dec 2023 21:05:08 -0500 Subject: [PATCH 133/154] chore(deps): update dependency eslint to v8.55.0 (#885) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../sonar-update-center/package-lock.json | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index 4822f4b7..f2af1902 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -780,9 +780,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -803,9 +803,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3031,15 +3031,15 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7965,9 +7965,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -7982,9 +7982,9 @@ } }, "@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true }, "@github/browserslist-config": { @@ -9650,15 +9650,15 @@ "dev": true }, "eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", From 9e2135140ac2382818755ee78713fe91c5d0a4b8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Dec 2023 21:05:17 -0500 Subject: [PATCH 134/154] chore(deps): update dependency @types/node to v20.10.2 (#884) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index f2af1902..bc14d134 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1622,9 +1622,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.1.tgz", - "integrity": "sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==", + "version": "20.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", + "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8670,9 +8670,9 @@ "dev": true }, "@types/node": { - "version": "20.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.1.tgz", - "integrity": "sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==", + "version": "20.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", + "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", "dev": true, "requires": { "undici-types": "~5.26.4" From 845912b586c43e6b2c28b1a8e77679ca466edc03 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Dec 2023 21:05:34 -0500 Subject: [PATCH 135/154] chore(deps): update dependency org.mockito:mockito-core to v5.8.0 (#886) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6541aaad..4f240e7e 100644 --- a/pom.xml +++ b/pom.xml @@ -183,7 +183,7 @@ org.mockito mockito-core - 5.7.0 + 5.8.0 test From ffb2a5223eb60c749659ae8eff46907461dcc69b Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Sun, 3 Dec 2023 10:14:22 +0100 Subject: [PATCH 136/154] Upgrade sb-contrib to 7.6.2 (#887) --- .github/workflows/build.yml | 2 +- README.md | 2 +- generate_profiles/BuildXmlFiles.groovy | 4 ++-- pom.xml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 362f97fb..3ab96ced 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -126,7 +126,7 @@ jobs: uses: ./.github/actions/sonar-update-center with: prop-file: findbugs.properties - description: Use SpotBugs 4.8.2, sb-contrib 7.6.1, and findsecbugs 1.12.0 + description: Use SpotBugs 4.8.2, sb-contrib 7.6.2, and findsecbugs 1.12.0 minimal-supported-sq-version: 9.9 latest-supported-sq-version: LATEST changelog-url: https://github.com/spotbugs/sonar-findbugs/releases/tag/${{ github.event.release.tag_name }} diff --git a/README.md b/README.md index 9e5371dd..b814fbbb 100644 --- a/README.md +++ b/README.md @@ -70,4 +70,4 @@ Findbugs Plugin version|Embedded SpotBugs/Findbugs version|Embedded Findsecbugs 4.2.3 | 4.7.3 (SpotBugs) | 1.12.0 | 7.4.7 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.4 | 4.7.3 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.5 | 4.8.1 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 -4.2.6-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.1 (sb-contrib) | 1.8|7.9~|5.10.1.16922 +4.2.6-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 diff --git a/generate_profiles/BuildXmlFiles.groovy b/generate_profiles/BuildXmlFiles.groovy index c74b4b16..28b97bdc 100644 --- a/generate_profiles/BuildXmlFiles.groovy +++ b/generate_profiles/BuildXmlFiles.groovy @@ -9,13 +9,13 @@ import groovy.json.JsonSlurper; @Grapes([ @Grab(group='com.github.spotbugs', module='spotbugs', version='4.8.2'), - @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.1'), + @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.2'), @Grab(group='com.h3xstream.findsecbugs' , module='findsecbugs-plugin', version='1.12.0')] ) FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.8.2') -CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.1') +CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.2') FSB = new Plugin(groupId: 'com.h3xstream.findsecbugs', artifactId: 'findsecbugs-plugin', version: '1.12.0') def destDir() { diff --git a/pom.xml b/pom.xml index 4f240e7e..c22f1815 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ Update the version table and the rules count badge in README.md --> 4.8.2 - 7.6.1 + 7.6.2 1.12.0 1.8 From a02e47f92488c8fa1533958a1b0c02e7a350443a Mon Sep 17 00:00:00 2001 From: gtoison Date: Sun, 3 Dec 2023 10:29:32 +0100 Subject: [PATCH 137/154] Release 4.2.6 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c22f1815..58a46292 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.github.spotbugs sonar-findbugs-plugin - 4.2.6-SNAPSHOT + 4.2.6 sonar-plugin SonarQube SpotBugs Plugin From 6f919bba160186c98e312b4e6abe7af1c47e687a Mon Sep 17 00:00:00 2001 From: gtoison Date: Sun, 3 Dec 2023 10:31:41 +0100 Subject: [PATCH 138/154] Next version is 4.2.7 --- README.md | 3 ++- pom.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b814fbbb..4e768e70 100644 --- a/README.md +++ b/README.md @@ -70,4 +70,5 @@ Findbugs Plugin version|Embedded SpotBugs/Findbugs version|Embedded Findsecbugs 4.2.3 | 4.7.3 (SpotBugs) | 1.12.0 | 7.4.7 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.4 | 4.7.3 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.5 | 4.8.1 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 -4.2.6-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 +4.2.6 | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 +4.2.7-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 diff --git a/pom.xml b/pom.xml index 58a46292..e0ee98f7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.github.spotbugs sonar-findbugs-plugin - 4.2.6 + 4.2.7-SNAPSHOT sonar-plugin SonarQube SpotBugs Plugin From 79c1566ba14506028eb4e6abbd4084d4f97e74aa Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:01:44 +0000 Subject: [PATCH 139/154] chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.6.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e0ee98f7..30e87985 100644 --- a/pom.xml +++ b/pom.xml @@ -309,7 +309,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.6.2 + 3.6.3 From b31524fb60c5a3e6585546295578dfd85337ff9d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:01:40 +0000 Subject: [PATCH 140/154] chore(deps): update dependency @types/node to v20.10.3 --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index bc14d134..c6310225 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1622,9 +1622,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", - "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", + "version": "20.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", + "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8670,9 +8670,9 @@ "dev": true }, "@types/node": { - "version": "20.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", - "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", + "version": "20.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", + "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", "dev": true, "requires": { "undici-types": "~5.26.4" From a3101a51772c7832b387e4efa05a541cb6b0618d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 23:55:26 -0500 Subject: [PATCH 141/154] chore(deps): update dependency @types/node to v20.10.4 (#895) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index c6310225..b48c8975 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1622,9 +1622,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", - "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8670,9 +8670,9 @@ "dev": true }, "@types/node": { - "version": "20.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", - "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", + "version": "20.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", + "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", "dev": true, "requires": { "undici-types": "~5.26.4" From bd8c67ef660ce6209771c6ce9cc4063e028b5651 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 23:55:34 -0500 Subject: [PATCH 142/154] chore(deps): update dependency typescript to v5.3.3 (#894) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index b48c8975..f34f9263 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -7128,9 +7128,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -12575,9 +12575,9 @@ } }, "typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true }, "unbox-primitive": { From 551a220f7eee2ec9f052c0171ba013f2369bb23c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 23:55:41 -0500 Subject: [PATCH 143/154] chore(deps): update dependency @types/jest to v29.5.11 (#893) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index f34f9263..f1d47f02 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1600,9 +1600,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -8648,9 +8648,9 @@ } }, "@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "requires": { "expect": "^29.0.0", From ebcb84e290e6e93cf5a44e3921123120364a7ab1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Dec 2023 18:43:38 -0500 Subject: [PATCH 144/154] chore(deps): update dependency prettier to v3.1.1 (#896) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 14 +++++++------- .github/actions/sonar-update-center/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index f1d47f02..94faf790 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -28,7 +28,7 @@ "jest-circus": "^29.7.0", "js-yaml": "^4.1.0", "nock": "^13.3.0", - "prettier": "3.1.0", + "prettier": "3.1.1", "ts-jest": "^29.0.5", "typescript": "^5.0.0" } @@ -6192,9 +6192,9 @@ } }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -11934,9 +11934,9 @@ "dev": true }, "prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true }, "prettier-linter-helpers": { diff --git a/.github/actions/sonar-update-center/package.json b/.github/actions/sonar-update-center/package.json index a6bd3a27..bae07397 100644 --- a/.github/actions/sonar-update-center/package.json +++ b/.github/actions/sonar-update-center/package.json @@ -43,7 +43,7 @@ "jest-circus": "^29.7.0", "js-yaml": "^4.1.0", "nock": "^13.3.0", - "prettier": "3.1.0", + "prettier": "3.1.1", "ts-jest": "^29.0.5", "typescript": "^5.0.0" } From d842942613c03602610e4e683a27ca9690f69e50 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 01:43:15 -0500 Subject: [PATCH 145/154] chore(deps): update actions/upload-artifact action to v4 (#900) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../sonar-update-center/.github/workflows/integrationTest.yml | 2 +- .github/workflows/sonar-update-center.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/sonar-update-center/.github/workflows/integrationTest.yml b/.github/actions/sonar-update-center/.github/workflows/integrationTest.yml index 2cb0b5d7..aa90cbb6 100644 --- a/.github/actions/sonar-update-center/.github/workflows/integrationTest.yml +++ b/.github/actions/sonar-update-center/.github/workflows/integrationTest.yml @@ -53,7 +53,7 @@ jobs: sonar-cloud-url: https://sonarcloud.io/summary/new_code?id=com.github.spotbugs:sonar-findbugs-plugin github-token: ${{ secrets.PAT_TO_FORK }} skip-creating-pull-request: true - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: updated-properties-file path: ${{ steps.integrated-test.outputs.prop-file }} diff --git a/.github/workflows/sonar-update-center.yml b/.github/workflows/sonar-update-center.yml index a9844202..21724ed8 100644 --- a/.github/workflows/sonar-update-center.yml +++ b/.github/workflows/sonar-update-center.yml @@ -63,7 +63,7 @@ jobs: public-version: 4.1.0 github-token: ${{ secrets.PAT_TO_FORK }} skip-creating-pull-request: true - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: updated-properties-file path: ${{ steps.integration-test.outputs.prop-file }} From ed18b43f6d510d8c05fcbb0383d0b02fcca4a3fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 01:43:23 -0500 Subject: [PATCH 146/154] chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.2.3 (#899) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 30e87985..fa2bf4e9 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ 1.12.0 1.8 - 3.2.2 + 3.2.3 3.2.2 7.9 7.9.6 From 0b4d7e6aaaf39a987110cf6ab540984c909cde96 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 01:56:53 -0500 Subject: [PATCH 147/154] chore(deps): update dependency org.apache.maven.plugins:maven-failsafe-plugin to v3.2.3 (#897) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fa2bf4e9..20928e93 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.8 3.2.3 - 3.2.2 + 3.2.3 7.9 7.9.6 org.sonarsource.sonarqube From 3a15dea7d7b19851d3d5e1f748138623f7879845 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 20:15:48 -0500 Subject: [PATCH 148/154] chore(deps): update dependency eslint to v8.56.0 (#901) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../sonar-update-center/package-lock.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index 94faf790..9a3a6dee 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -803,9 +803,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3031,15 +3031,15 @@ } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7982,9 +7982,9 @@ } }, "@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true }, "@github/browserslist-config": { @@ -9650,15 +9650,15 @@ "dev": true }, "eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", From 21490ec6604ad93930ae7b688f02a6f86e5afff7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Dec 2023 20:24:43 -0500 Subject: [PATCH 149/154] chore(deps): update dependency @types/node to v20.10.5 (#902) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../actions/sonar-update-center/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/sonar-update-center/package-lock.json b/.github/actions/sonar-update-center/package-lock.json index 9a3a6dee..9aa0fb48 100644 --- a/.github/actions/sonar-update-center/package-lock.json +++ b/.github/actions/sonar-update-center/package-lock.json @@ -1622,9 +1622,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -8670,9 +8670,9 @@ "dev": true }, "@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", "dev": true, "requires": { "undici-types": "~5.26.4" From eac5de45bdfe77f2cb4317ea422d25a9d9ba5962 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 23:10:30 -0500 Subject: [PATCH 150/154] chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.12.0 (#903) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 20928e93..5346a3cf 100644 --- a/pom.xml +++ b/pom.xml @@ -249,7 +249,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.12.0 org.apache.maven.plugins From b494d610b1e0d73171c5cdd46ff15796320014f9 Mon Sep 17 00:00:00 2001 From: Guillaume Toison <86775455+gtoison@users.noreply.github.com> Date: Wed, 20 Dec 2023 21:46:41 +0100 Subject: [PATCH 151/154] deps: Upgrade SpotBugs to 4.8.3 (#904) --- README.md | 2 +- generate_profiles/BuildXmlFiles.groovy | 4 ++-- pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4e768e70..2ec54703 100644 --- a/README.md +++ b/README.md @@ -71,4 +71,4 @@ Findbugs Plugin version|Embedded SpotBugs/Findbugs version|Embedded Findsecbugs 4.2.4 | 4.7.3 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.5 | 4.8.1 (SpotBugs) | 1.12.0 | 7.6.0 (sb-contrib) | 1.8|7.9~|5.10.1.16922 4.2.6 | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 -4.2.7-SNAPSHOT | 4.8.2 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 +4.2.7-SNAPSHOT | 4.8.3 (SpotBugs) | 1.12.0 | 7.6.2 (sb-contrib) | 1.8|7.9~|5.10.1.16922 diff --git a/generate_profiles/BuildXmlFiles.groovy b/generate_profiles/BuildXmlFiles.groovy index 28b97bdc..697b6e0e 100644 --- a/generate_profiles/BuildXmlFiles.groovy +++ b/generate_profiles/BuildXmlFiles.groovy @@ -8,13 +8,13 @@ import groovy.json.JsonSlurper; @Grapes([ - @Grab(group='com.github.spotbugs', module='spotbugs', version='4.8.2'), + @Grab(group='com.github.spotbugs', module='spotbugs', version='4.8.3'), @Grab(group='com.mebigfatguy.sb-contrib', module='sb-contrib', version='7.6.2'), @Grab(group='com.h3xstream.findsecbugs' , module='findsecbugs-plugin', version='1.12.0')] ) -FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.8.2') +FB = new Plugin(groupId: 'com.github.spotbugs', artifactId: 'spotbugs', version: '4.8.3') CONTRIB = new Plugin(groupId: 'com.mebigfatguy.sb-contrib', artifactId: 'sb-contrib', version: '7.6.2') FSB = new Plugin(groupId: 'com.h3xstream.findsecbugs', artifactId: 'findsecbugs-plugin', version: '1.12.0') diff --git a/pom.xml b/pom.xml index 5346a3cf..9fa687ce 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ Also need to update profiles, see ./generate_profiles/README.md for detail. Update the version table and the rules count badge in README.md --> - 4.8.2 + 4.8.3 7.6.2 1.12.0 From 4a1565ea13779ff9d769814fc07f740d8ef00474 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Dec 2023 15:14:17 -0500 Subject: [PATCH 152/154] chore(deps): update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.12.1 (#907) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9fa687ce..9fb0406b 100644 --- a/pom.xml +++ b/pom.xml @@ -249,7 +249,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.12.0 + 3.12.1 org.apache.maven.plugins From ece1d2ec28b852a97e66e19f7b6f0b67625096b4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 23:09:22 -0500 Subject: [PATCH 153/154] chore(deps): update sonar-orchestrator.version to v4.6.0.1748 (#892) * chore(deps): update sonar-orchestrator.version to v4.6.0.1748 * chore (deps) Fix logging as slf4j needs to be 2.0.10 now --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jeremy Landis --- pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 9fb0406b..70968904 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ org.sonarsource.sonarqube 5.14.0.18788 - 4.4.0.1640 + 4.6.0.1748 UTF-8 @@ -88,8 +88,8 @@ xml-apis - org.apache.logging.log4j - log4j-core + org.apache.logging.log4j + log4j-core @@ -110,7 +110,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.10 provided @@ -211,7 +211,7 @@ ${sonar-orchestrator.version} test - + org.sonarsource.sonarqube sonar-ws From cdd81850ea348409d16d75c99bfbd77f74c1fdc3 Mon Sep 17 00:00:00 2001 From: gtoison Date: Sat, 15 Oct 2022 16:51:29 +0100 Subject: [PATCH 154/154] build: shade dependencies instead of bundling them fixes #604 --- pom.xml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 70968904..a83c11ab 100644 --- a/pom.xml +++ b/pom.xml @@ -422,6 +422,7 @@ Analyze Java, Scala, Closure and JSP code with SpotBugs. ${spotbugs.version} org.sonar.plugins.findbugs.FindbugsPlugin false + true @@ -460,22 +461,21 @@ shade - - - commons-io:commons-io - org.codehaus.sonar:sonar-channel - - - - - org.apache.commons.io - shaded.io - - - org.sonar.channel - shaded.channel - - + + + false + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + false